Full Code of withastro/compiler for AI

main 41515e454944 cached
584 files
1.8 MB
572.2k tokens
1884 symbols
1 requests
Download .txt
Showing preview only (2,053K chars total). Download the full file or copy to clipboard to get everything.
Repository: withastro/compiler
Branch: main
Commit: 41515e454944
Files: 584
Total size: 1.8 MB

Directory structure:
gitextract_v3t26jmm/

├── .changeset/
│   ├── README.md
│   └── config.json
├── .devcontainer/
│   ├── Dockerfile
│   └── devcontainer.json
├── .editorconfig
├── .git-blame-ignore-revs
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── ---01-bug-report.yml
│   │   └── config.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── workflows/
│       ├── ci.yml
│       ├── congrats.yml
│       ├── issue-labeled.yml
│       ├── issue-needs-repro.yml
│       ├── issue-opened.yml
│       └── release.yml
├── .gitignore
├── .gitpod.yml
├── .golangci.yml
├── .prettierignore
├── .vscode/
│   └── settings.json
├── CONTRIBUTING.md
├── LICENSE
├── Makefile
├── SYNTAX_SPEC.md
├── biome.json
├── cmd/
│   └── astro-wasm/
│       └── astro-wasm.go
├── go.mod
├── go.sum
├── internal/
│   ├── const.go
│   ├── doc.go
│   ├── doctype.go
│   ├── entity.go
│   ├── escape.go
│   ├── foreign.go
│   ├── handler/
│   │   └── handler.go
│   ├── hash.go
│   ├── helpers/
│   │   ├── joiner.go
│   │   └── js_comment_utils.go
│   ├── js_scanner/
│   │   ├── js_scanner.go
│   │   ├── js_scanner_test.go
│   │   └── testdata/
│   │       └── fuzz/
│   │           └── FuzzHoistImport/
│   │               └── ec55358ab2929fbf4deab52587664e42682f0a6ea201a325c5c33f9d18c50456
│   ├── loc/
│   │   ├── diagnostics.go
│   │   └── loc.go
│   ├── node.go
│   ├── parser.go
│   ├── parser_test.go
│   ├── print-to-source.go
│   ├── printer/
│   │   ├── __printer_css__/
│   │   │   ├── scopedStyleStrategy___attribute_.snap
│   │   │   ├── scopedStyleStrategy___class_.snap
│   │   │   └── styles__no_frontmatter_.snap
│   │   ├── __printer_js__/
│   │   │   ├── All_components.snap
│   │   │   ├── Component_is_raw.snap
│   │   │   ├── Component_names_A-Z.snap
│   │   │   ├── Component_siblings_are_siblings.snap
│   │   │   ├── Component_with_await.snap
│   │   │   ├── Empty_attribute_expression.snap
│   │   │   ├── Empty_expression.snap
│   │   │   ├── Empty_expression_with_whitespace.snap
│   │   │   ├── Empty_script.snap
│   │   │   ├── Empty_style.snap
│   │   │   ├── Expression_in_form_followed_by_other_sibling_forms.snap
│   │   │   ├── Fragment.snap
│   │   │   ├── Fragment_literal_only.snap
│   │   │   ├── Fragment_shorthand.snap
│   │   │   ├── Fragment_shorthand_only.snap
│   │   │   ├── Fragment_shorthand_with_await.snap
│   │   │   ├── Fragment_slotted.snap
│   │   │   ├── Fragment_slotted_with_name.snap
│   │   │   ├── Fragment_with_await.snap
│   │   │   ├── Fragment_wrapping_link_with_awaited_href.snap
│   │   │   ├── HTML_comment_in_component_inside_expression_I.snap
│   │   │   ├── HTML_comment_in_component_inside_expression_II.snap
│   │   │   ├── Mixed_style_siblings.snap
│   │   │   ├── Nested_HTML_in_expressions,_wrapped_in_parens.snap
│   │   │   ├── No_extra_script_tag.snap
│   │   │   ├── Parser_can_handle_files___4096_chars.snap
│   │   │   ├── Preserve_namespaces.snap
│   │   │   ├── Preserve_namespaces_for_components.snap
│   │   │   ├── Preserve_namespaces_in_expressions.snap
│   │   │   ├── Preserve_slot_attribute_at_root_level_in_expression.snap
│   │   │   ├── Preserve_slot_attribute_in_conditional_expression_for_custom_element.snap
│   │   │   ├── Preserve_slot_attribute_in_expression_for_custom_element.snap
│   │   │   ├── Preserve_slot_whitespace.snap
│   │   │   ├── Preserve_slots_inside_custom-element.snap
│   │   │   ├── React_framework_example.snap
│   │   │   ├── SVG_styles.snap
│   │   │   ├── Self-closing_components_in_head_can_have_siblings.snap
│   │   │   ├── Self-closing_components_siblings_are_siblings.snap
│   │   │   ├── Self-closing_formatting_elements.snap
│   │   │   ├── Self-closing_formatting_elements_2.snap
│   │   │   ├── Self-closing_script_in_head_works.snap
│   │   │   ├── Self-closing_title.snap
│   │   │   ├── Self-closing_title_II.snap
│   │   │   ├── Use_of_interfaces_within_frontmatter.snap
│   │   │   ├── XElement.snap
│   │   │   ├── _955_ternary_slot_with_elements.snap
│   │   │   ├── _955_ternary_slot_with_text.snap
│   │   │   ├── advanced_svg_expression.snap
│   │   │   ├── anchor_content.snap
│   │   │   ├── anchor_expressions.snap
│   │   │   ├── anchor_inside_expression.snap
│   │   │   ├── attribute_with_template_literal.snap
│   │   │   ├── attribute_with_template_literal_interpolation.snap
│   │   │   ├── backtick_in_HTML_comment.snap
│   │   │   ├── basic__frontmatter_.snap
│   │   │   ├── basic__no_frontmatter_.snap
│   │   │   ├── basic_renderHead.snap
│   │   │   ├── caption_only.snap
│   │   │   ├── class_and_class_list_object.snap
│   │   │   ├── class_and_class_list_set.snap
│   │   │   ├── class_and_class_list_simple_array.snap
│   │   │   ├── class_list.snap
│   │   │   ├── class_list_with_spread.snap
│   │   │   ├── class_with_spread.snap
│   │   │   ├── client_only_component__default_.snap
│   │   │   ├── client_only_component__multiple_.snap
│   │   │   ├── client_only_component__named_.snap
│   │   │   ├── client_only_component__namespace_.snap
│   │   │   ├── client_only_component__namespaced_default_.snap
│   │   │   ├── client_only_component__namespaced_named_.snap
│   │   │   ├── comment_only_expressions_are_removed_I.snap
│   │   │   ├── comment_only_expressions_are_removed_II.snap
│   │   │   ├── comment_only_expressions_are_removed_III.snap
│   │   │   ├── comments_removed_from_attribute_list.snap
│   │   │   ├── complex_nested_template_literal_expression.snap
│   │   │   ├── complex_recursive_component.snap
│   │   │   ├── complex_table.snap
│   │   │   ├── component.snap
│   │   │   ├── component_in_expression_with_its_child_expression_before_its_child_element.snap
│   │   │   ├── component_with_only_a_script.snap
│   │   │   ├── component_with_quoted_attributes.snap
│   │   │   ├── condition_expressions_at_the_top-level.snap
│   │   │   ├── condition_expressions_at_the_top-level_with_head_content.snap
│   │   │   ├── conditional_iframe.snap
│   │   │   ├── conditional_noscript.snap
│   │   │   ├── conditional_render.snap
│   │   │   ├── conditional_rendering_of_title_containing_expression.snap
│   │   │   ├── conditional_slot.snap
│   │   │   ├── css_comment_doesn’t_produce_semicolon.snap
│   │   │   ├── css_imports_are_not_included_in_module_metadata.snap
│   │   │   ├── custom-element.snap
│   │   │   ├── custom_elements.snap
│   │   │   ├── define_vars_on_a_module_script_with_imports.snap
│   │   │   ├── define_vars_on_non-root_elements.snap
│   │   │   ├── define_vars_on_script_with_StaticExpression_turned_on.snap
│   │   │   ├── define_vars_on_style.snap
│   │   │   ├── define_vars_on_style_tag_with_style_empty_attribute_on_element.snap
│   │   │   ├── define_vars_on_style_tag_with_style_expression_attribute_on_element.snap
│   │   │   ├── define_vars_on_style_tag_with_style_quoted_attribute_on_element.snap
│   │   │   ├── define_vars_on_style_tag_with_style_shorthand_attribute_on_element.snap
│   │   │   ├── define_vars_on_style_tag_with_style_template_literal_attribute_on_element.snap
│   │   │   ├── division_inside_expression.snap
│   │   │   ├── doctype.snap
│   │   │   ├── dot_component.snap
│   │   │   ├── dynamic_import.snap
│   │   │   ├── escaped_entity.snap
│   │   │   ├── export_comments_I.snap
│   │   │   ├── export_comments_II.snap
│   │   │   ├── export_member_does_not_panic.snap
│   │   │   ├── expression_returning_multiple_elements.snap
│   │   │   ├── expression_slot.snap
│   │   │   ├── expression_with_leading_whitespace.snap
│   │   │   ├── expressions_with_JS_comments.snap
│   │   │   ├── expressions_with_multiple_curly_braces.snap
│   │   │   ├── function_expression_slots_I.snap
│   │   │   ├── function_expression_slots_II___959_.snap
│   │   │   ├── getStaticPaths__basic_.snap
│   │   │   ├── getStaticPaths__hoisted_.snap
│   │   │   ├── getStaticPaths__hoisted_II_.snap
│   │   │   ├── gets_all_potential_hydrated_components.snap
│   │   │   ├── head_content_with_component_first.snap
│   │   │   ├── head_expression.snap
│   │   │   ├── head_expression_and_conditional_rendering_of_fragment.snap
│   │   │   ├── head_inside_slot.snap
│   │   │   ├── head_slot.snap
│   │   │   ├── head_slot_II.snap
│   │   │   ├── head_slot_III.snap
│   │   │   ├── html5_boilerplate.snap
│   │   │   ├── iframe.snap
│   │   │   ├── import.meta.env.snap
│   │   │   ├── import.meta.snap
│   │   │   ├── import_assertions.snap
│   │   │   ├── import_order.snap
│   │   │   ├── import_to_identifier_named_assert.snap
│   │   │   ├── includes_comments_for_expression_attribute.snap
│   │   │   ├── includes_comments_for_shorthand_attribute.snap
│   │   │   ├── is_raw.snap
│   │   │   ├── jsx_comment_between_doctype_and_html.snap
│   │   │   ├── map_basic.snap
│   │   │   ├── map_nested.snap
│   │   │   ├── map_with_component.snap
│   │   │   ├── map_without_component.snap
│   │   │   ├── maybeRenderHead_not_printed_for_hoisted_scripts.snap
│   │   │   ├── multibyte_character___script.snap
│   │   │   ├── multibyte_character___style.snap
│   │   │   ├── multibyte_characters.snap
│   │   │   ├── multiline_class_attribute_on_component.snap
│   │   │   ├── multiple_define_vars_on_style.snap
│   │   │   ├── namespace_is_preserved_when_inside_an_expression.snap
│   │   │   ├── nested_expressions.snap
│   │   │   ├── nested_expressions_II.snap
│   │   │   ├── nested_expressions_III.snap
│   │   │   ├── nested_expressions_IV.snap
│   │   │   ├── nested_expressions_V.snap
│   │   │   ├── nested_expressions_VI.snap
│   │   │   ├── nested_expressions_VII.snap
│   │   │   ├── nested_expressions_VIII.snap
│   │   │   ├── nested_head_content_stays_in_the_head.snap
│   │   │   ├── nested_template_literal_expression.snap
│   │   │   ├── no_expressions_in_math.snap
│   │   │   ├── noscript_component.snap
│   │   │   ├── noscript_deep_styles.snap
│   │   │   ├── noscript_only.snap
│   │   │   ├── noscript_styles.snap
│   │   │   ├── orphan_slot.snap
│   │   │   ├── passes_escaped_filename_into_createComponent_if_it_contains_single_quotes.snap
│   │   │   ├── passes_filename_into_createComponent_if_passed_into_the_compiler_options.snap
│   │   │   ├── preserve_is_inline_slot.snap
│   │   │   ├── preserve_is_inline_slot_II.snap
│   │   │   ├── script.snap
│   │   │   ├── script_before_elements.snap
│   │   │   ├── script_define_vars_I.snap
│   │   │   ├── script_define_vars_II.snap
│   │   │   ├── script_external.snap
│   │   │   ├── script_external_in_expression.snap
│   │   │   ├── script_hoist_with_frontmatter.snap
│   │   │   ├── script_hoist_without_frontmatter.snap
│   │   │   ├── script_in__head_.snap
│   │   │   ├── script_in_expression.snap
│   │   │   ├── script_inline.snap
│   │   │   ├── script_mixed_handled_and_inline.snap
│   │   │   ├── script_multiple.snap
│   │   │   ├── scriptinline.snap
│   │   │   ├── select_in_form.snap
│   │   │   ├── select_map_expression.snap
│   │   │   ├── select_nested_option.snap
│   │   │   ├── select_option_expression.snap
│   │   │   ├── selectedcontent_element_in_customizable_select.snap
│   │   │   ├── selectedcontent_self-closing_element.snap
│   │   │   ├── self-closing_td.snap
│   │   │   ├── set_html.snap
│   │   │   ├── set_html_and_set_text.snap
│   │   │   ├── set_html_on_Component.snap
│   │   │   ├── set_html_on_Component_with_quoted_attribute.snap
│   │   │   ├── set_html_on_Component_with_template_literal_attribute_with_variable.snap
│   │   │   ├── set_html_on_Component_with_template_literal_attribute_without_variable.snap
│   │   │   ├── set_html_on_Fragment.snap
│   │   │   ├── set_html_on_Fragment_with_quoted_attribute.snap
│   │   │   ├── set_html_on_Fragment_with_template_literal_attribute_with_variable.snap
│   │   │   ├── set_html_on_Fragment_with_template_literal_attribute_without_variable.snap
│   │   │   ├── set_html_on_custom-element.snap
│   │   │   ├── set_html_on_custom-element_with_quoted_attribute.snap
│   │   │   ├── set_html_on_custom-element_with_template_literal_attribute_with_variable.snap
│   │   │   ├── set_html_on_custom-element_with_template_literal_attribute_without_variable.snap
│   │   │   ├── set_html_on_empty_tag.snap
│   │   │   ├── set_html_on_empty_tag_with_quoted_attribute.snap
│   │   │   ├── set_html_on_empty_tag_with_template_literal_attribute_with_variable.snap
│   │   │   ├── set_html_on_empty_tag_with_template_literal_attribute_without_variable.snap
│   │   │   ├── set_html_on_script.snap
│   │   │   ├── set_html_on_script_with_quoted_attribute.snap
│   │   │   ├── set_html_on_script_with_template_literal_attribute_with_variable.snap
│   │   │   ├── set_html_on_script_with_template_literal_attribute_without_variable.snap
│   │   │   ├── set_html_on_self-closing_tag.snap
│   │   │   ├── set_html_on_self-closing_tag_with_quoted_attribute.snap
│   │   │   ├── set_html_on_self-closing_tag_with_template_literal_attribute_with_variable.snap
│   │   │   ├── set_html_on_self-closing_tag_with_template_literal_attribute_without_variable.snap
│   │   │   ├── set_html_on_style.snap
│   │   │   ├── set_html_on_style_with_quoted_attribute.snap
│   │   │   ├── set_html_on_style_with_template_literal_attribute_with_variable.snap
│   │   │   ├── set_html_on_style_with_template_literal_attribute_without_variable.snap
│   │   │   ├── set_html_on_tag_with_children.snap
│   │   │   ├── set_html_on_tag_with_children_and_quoted_attribute.snap
│   │   │   ├── set_html_on_tag_with_children_and_template_literal_attribute_with_variable.snap
│   │   │   ├── set_html_on_tag_with_children_and_template_literal_attribute_without_variable.snap
│   │   │   ├── set_html_on_tag_with_empty_whitespace.snap
│   │   │   ├── set_html_on_tag_with_empty_whitespace_and_quoted_attribute.snap
│   │   │   ├── set_html_on_tag_with_empty_whitespace_and_template_literal_attribute_with_variable.snap
│   │   │   ├── set_html_on_tag_with_empty_whitespace_and_template_literal_attribute_without_variable.snap
│   │   │   ├── set_html_with_other_attributes.snap
│   │   │   ├── set_html_with_quoted_attribute.snap
│   │   │   ├── set_html_with_quoted_attribute_and_other_attributes.snap
│   │   │   ├── set_html_with_template_literal_attribute_with_variable.snap
│   │   │   ├── set_html_with_template_literal_attribute_with_variable_and_other_attributes.snap
│   │   │   ├── set_html_with_template_literal_attribute_without_variable.snap
│   │   │   ├── set_html_with_template_literal_attribute_without_variable_and_other_attributes.snap
│   │   │   ├── set_text.snap
│   │   │   ├── set_text_on_Component.snap
│   │   │   ├── set_text_on_Component_with_quoted_attribute.snap
│   │   │   ├── set_text_on_Component_with_template_literal_attribute_with_variable.snap
│   │   │   ├── set_text_on_Component_with_template_literal_attribute_without_variable.snap
│   │   │   ├── set_text_on_custom-element.snap
│   │   │   ├── set_text_on_custom-element_with_quoted_attribute.snap
│   │   │   ├── set_text_on_custom-element_with_template_literal_attribute_with_variable.snap
│   │   │   ├── set_text_on_custom-element_with_template_literal_attribute_without_variable.snap
│   │   │   ├── set_text_with_quoted_attribute.snap
│   │   │   ├── set_text_with_template_literal_attribute_with_variable.snap
│   │   │   ├── set_text_with_template_literal_attribute_without_variable.snap
│   │   │   ├── sibling_expressions.snap
│   │   │   ├── simple_ternary.snap
│   │   │   ├── slot_inside_of_Base.snap
│   │   │   ├── slot_with_fallback.snap
│   │   │   ├── slot_with_fallback_II.snap
│   │   │   ├── slot_with_fallback_III.snap
│   │   │   ├── slot_with_quoted_attributes.snap
│   │   │   ├── slots__basic_.snap
│   │   │   ├── slots__dynamic_name_.snap
│   │   │   ├── slots__expression_.snap
│   │   │   ├── slots__named_only_.snap
│   │   │   ├── slots__no_comments_.snap
│   │   │   ├── small_expression.snap
│   │   │   ├── solidus_in_template_literal_expression.snap
│   │   │   ├── spread_with_double_quotation_marks.snap
│   │   │   ├── spread_with_style_but_no_explicit_class.snap
│   │   │   ├── spread_without_style_or_class.snap
│   │   │   ├── styles__no_frontmatter_.snap
│   │   │   ├── svg_expressions.snap
│   │   │   ├── table.snap
│   │   │   ├── table_II.snap
│   │   │   ├── table_III.snap
│   │   │   ├── table_IV.snap
│   │   │   ├── table_caption_expression.snap
│   │   │   ├── table_expression_with_trailing_div.snap
│   │   │   ├── table_expressions__no_implicit_tbody_.snap
│   │   │   ├── table_simple_case.snap
│   │   │   ├── table_slot_I.snap
│   │   │   ├── table_slot_II.snap
│   │   │   ├── table_slot_III.snap
│   │   │   ├── table_slot_IV.snap
│   │   │   ├── table_slot_V.snap
│   │   │   ├── table_with_expression_in__th_.snap
│   │   │   ├── tbody_expressions.snap
│   │   │   ├── tbody_expressions_2.snap
│   │   │   ├── tbody_expressions_3.snap
│   │   │   ├── td_expressions.snap
│   │   │   ├── td_expressions_II.snap
│   │   │   ├── template_literal_attribute_on_component.snap
│   │   │   ├── template_literal_attribute_with_variable_on_component.snap
│   │   │   ├── ternary_component.snap
│   │   │   ├── ternary_layout.snap
│   │   │   ├── ternary_slot.snap
│   │   │   ├── text_after_title_expression.snap
│   │   │   ├── text_after_title_expressions.snap
│   │   │   ├── text_only.snap
│   │   │   ├── textarea.snap
│   │   │   ├── textarea_in_form.snap
│   │   │   ├── textarea_inside_expression.snap
│   │   │   ├── th_expressions.snap
│   │   │   ├── tr_only.snap
│   │   │   ├── trailing_expression.snap
│   │   │   ├── transition_animate_on_Component.snap
│   │   │   ├── transition_animate_with_an_expression.snap
│   │   │   ├── transition_name_with_an_expression.snap
│   │   │   ├── transition_name_with_an_template_literal.snap
│   │   │   ├── transition_persist-props_converted_to_a_data_attribute.snap
│   │   │   ├── transition_persist_converted_to_a_data_attribute.snap
│   │   │   ├── transition_persist_uses_transition_name_if_defined.snap
│   │   │   ├── type_import.snap
│   │   │   ├── unusual_line_terminator_I.snap
│   │   │   ├── unusual_line_terminator_II.snap
│   │   │   └── user-defined__implicit__is_printed.snap
│   │   ├── __printer_json__/
│   │   │   ├── Comment.snap
│   │   │   ├── Comment_preserves_whitespace.snap
│   │   │   ├── Component.snap
│   │   │   ├── Doctype.snap
│   │   │   ├── Fragment_Literal.snap
│   │   │   ├── Fragment_Shorthand.snap
│   │   │   ├── Frontmatter.snap
│   │   │   ├── JSON_escape.snap
│   │   │   ├── Preserve_namespaces.snap
│   │   │   ├── basic.snap
│   │   │   ├── custom-element.snap
│   │   │   ├── element_with_unterminated_double_quote_attribute.snap
│   │   │   ├── element_with_unterminated_single_quote_attribute.snap
│   │   │   ├── element_with_unterminated_template_literal_attribute.snap
│   │   │   ├── expression.snap
│   │   │   ├── jsx_comment_between_doctype_and_html.snap
│   │   │   ├── style_after_body_with_component_in_head_and_body.snap
│   │   │   ├── style_after_empty_html.snap
│   │   │   ├── style_after_html.snap
│   │   │   ├── style_after_html_with_component_in_head.snap
│   │   │   ├── style_after_html_with_component_in_head_and_body.snap
│   │   │   ├── style_before_html.snap
│   │   │   ├── style_in_body.snap
│   │   │   └── style_in_html.snap
│   │   ├── print-css.go
│   │   ├── print-to-js.go
│   │   ├── print-to-json.go
│   │   ├── print-to-tsx.go
│   │   ├── print-to-tsx_test.go
│   │   ├── printer.go
│   │   ├── printer_css_test.go
│   │   ├── printer_test.go
│   │   └── utils.go
│   ├── sourcemap/
│   │   └── sourcemap.go
│   ├── t/
│   │   └── t.go
│   ├── test_utils/
│   │   └── test_utils.go
│   ├── token.go
│   ├── token_test.go
│   ├── transform/
│   │   ├── scope-css.go
│   │   ├── scope-css_test.go
│   │   ├── scope-html.go
│   │   ├── scope-html_test.go
│   │   ├── transform.go
│   │   ├── transform_test.go
│   │   └── utils.go
│   └── xxhash/
│       ├── LICENSE.txt
│       ├── xxhash.go
│       └── xxhash_other.go
├── internal_wasm/
│   └── utils/
│       └── utils.go
├── lib/
│   └── esbuild/
│       ├── LICENSE.md
│       ├── ast/
│       │   └── ast.go
│       ├── compat/
│       │   ├── compat.go
│       │   ├── css_table.go
│       │   └── js_table.go
│       ├── config/
│       │   ├── config.go
│       │   └── globals.go
│       ├── css_ast/
│       │   ├── css_ast.go
│       │   └── css_decl_table.go
│       ├── css_lexer/
│       │   ├── css_lexer.go
│       │   └── css_lexer_test.go
│       ├── css_parser/
│       │   ├── css_decls.go
│       │   ├── css_decls_border_radius.go
│       │   ├── css_decls_box.go
│       │   ├── css_decls_box_shadow.go
│       │   ├── css_decls_color.go
│       │   ├── css_decls_font.go
│       │   ├── css_decls_font_family.go
│       │   ├── css_decls_font_weight.go
│       │   ├── css_decls_transform.go
│       │   ├── css_parser.go
│       │   ├── css_parser_selector.go
│       │   ├── css_parser_test.go
│       │   └── css_reduce_calc.go
│       ├── css_printer/
│       │   ├── astro_features.go
│       │   ├── css_printer.go
│       │   └── css_printer_test.go
│       ├── esbuild.go
│       ├── helpers/
│       │   ├── bitset.go
│       │   ├── comment.go
│       │   ├── hash.go
│       │   ├── joiner.go
│       │   ├── mime.go
│       │   ├── path.go
│       │   ├── serializer.go
│       │   ├── stack.go
│       │   ├── timer.go
│       │   ├── typos.go
│       │   └── utf.go
│       ├── logger/
│       │   ├── logger.go
│       │   ├── logger_darwin.go
│       │   ├── logger_linux.go
│       │   ├── logger_other.go
│       │   └── logger_windows.go
│       ├── sourcemap/
│       │   └── sourcemap.go
│       └── test/
│           ├── diff.go
│           └── util.go
├── package.json
├── packages/
│   └── compiler/
│       ├── .gitignore
│       ├── CHANGELOG.md
│       ├── README.md
│       ├── package.json
│       ├── src/
│       │   ├── browser/
│       │   │   ├── index.ts
│       │   │   ├── utils.ts
│       │   │   └── wasm_exec.ts
│       │   ├── node/
│       │   │   ├── index.ts
│       │   │   ├── sync.ts
│       │   │   ├── utils.ts
│       │   │   └── wasm_exec.ts
│       │   └── shared/
│       │       ├── ast.ts
│       │       ├── diagnostics.ts
│       │       └── types.ts
│       ├── sync.d.ts
│       ├── test/
│       │   ├── bad-styles/
│       │   │   ├── sass.ts
│       │   │   └── unclosed-style.ts
│       │   ├── basic/
│       │   │   ├── body-after-head-component.ts
│       │   │   ├── body-expression.ts
│       │   │   ├── comment.ts
│       │   │   ├── component-metadata/
│       │   │   │   └── index.ts
│       │   │   ├── component-name.ts
│       │   │   ├── export.ts
│       │   │   ├── expression-then-node.ts
│       │   │   ├── expressions.ts
│       │   │   ├── fragment.ts
│       │   │   ├── get-static-paths.ts
│       │   │   ├── head-injection.ts
│       │   │   ├── lt-gt-text.ts
│       │   │   ├── null-chars.ts
│       │   │   ├── props-interface.ts
│       │   │   ├── script-before-html.ts
│       │   │   ├── script-fragment.ts
│       │   │   ├── top-level-expressions.ts
│       │   │   ├── trailing-newline.ts
│       │   │   ├── trailing-space.ts
│       │   │   └── trailing-spaces-ii.ts
│       │   ├── client-directive/
│       │   │   ├── special-characters.ts
│       │   │   └── warn.ts
│       │   ├── compact/
│       │   │   └── minify.ts
│       │   ├── css-order/
│       │   │   ├── astro-styles.ts
│       │   │   └── imported-styles.ts
│       │   ├── errors/
│       │   │   ├── client-only-unfound.ts
│       │   │   ├── define-vars.ts
│       │   │   ├── fragment-shorthand.ts
│       │   │   ├── html-comment.ts
│       │   │   ├── invalid-spread.ts
│       │   │   ├── jsx-comment.ts
│       │   │   └── missing-frontmatter-fence.ts
│       │   ├── head-metadata/
│       │   │   ├── with-head.ts
│       │   │   └── without-head.ts
│       │   ├── js-sourcemaps/
│       │   │   ├── complex-frontmatter.ts
│       │   │   ├── deprecated.ts
│       │   │   ├── error.ts
│       │   │   ├── frontmatter.ts
│       │   │   ├── hover.ts
│       │   │   ├── module.ts
│       │   │   ├── script.ts
│       │   │   ├── template.ts
│       │   │   └── windows-linereturns.ts
│       │   ├── parse/
│       │   │   ├── ast.ts
│       │   │   ├── client-component-unfound.ts
│       │   │   ├── escaping.ts
│       │   │   ├── fragment.ts
│       │   │   ├── literal.ts
│       │   │   ├── multibyte-characters.ts
│       │   │   ├── orphan-head.ts
│       │   │   ├── orphan-slot.ts
│       │   │   ├── position.ts
│       │   │   └── serialize.ts
│       │   ├── resolve-path/
│       │   │   └── preserve.ts
│       │   ├── scope/
│       │   │   └── same-source.ts
│       │   ├── scripts/
│       │   │   ├── isinline-hint.ts
│       │   │   └── order.ts
│       │   ├── server-islands/
│       │   │   └── meta.ts
│       │   ├── slot-result/
│       │   │   └── result.ts
│       │   ├── static-extraction/
│       │   │   ├── css.ts
│       │   │   └── hoist-expression.ts
│       │   ├── stress/
│       │   │   └── index.ts
│       │   ├── styles/
│       │   │   ├── define-vars.ts
│       │   │   ├── emit-scope.ts
│       │   │   ├── empty-style.ts
│       │   │   ├── hash.ts
│       │   │   └── sass.ts
│       │   ├── table/
│       │   │   ├── components.ts
│       │   │   ├── expressions.ts
│       │   │   └── in-expression.ts
│       │   ├── teardown/
│       │   │   └── parse.ts
│       │   ├── transition/
│       │   │   ├── data-astro.ts
│       │   │   └── meta.ts
│       │   ├── tsx/
│       │   │   ├── basic.ts
│       │   │   ├── comment-whitespace.ts
│       │   │   ├── complex-generics.ts
│       │   │   ├── escape.ts
│       │   │   ├── line-terminator.ts
│       │   │   ├── literal-style-tag.ts
│       │   │   ├── meta.ts
│       │   │   ├── nested-generics.ts
│       │   │   ├── non-latin.ts
│       │   │   ├── props-and-getStaticPaths.ts
│       │   │   ├── props.ts
│       │   │   ├── raw.ts
│       │   │   ├── script.ts
│       │   │   └── top-level-returns.ts
│       │   ├── tsx-errors/
│       │   │   ├── eof.ts
│       │   │   ├── fragment-shorthand.ts
│       │   │   └── unfinished-component.ts
│       │   ├── tsx-sourcemaps/
│       │   │   ├── 404.ts
│       │   │   ├── attributes.ts
│       │   │   ├── deprecated.ts
│       │   │   ├── error.ts
│       │   │   ├── frontmatter.ts
│       │   │   ├── hover.ts
│       │   │   ├── module.ts
│       │   │   ├── multibyte.ts
│       │   │   ├── script.ts
│       │   │   ├── tags.ts
│       │   │   ├── template-windows.ts
│       │   │   ├── template.ts
│       │   │   └── unfinished-literal.ts
│       │   └── utils.ts
│       ├── tsconfig.json
│       ├── tsup.config.ts
│       ├── types.d.ts
│       └── utils.d.ts
└── pnpm-workspace.yaml

================================================
FILE CONTENTS
================================================

================================================
FILE: .changeset/README.md
================================================
# Changesets

Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
with multi-package repos, or single-package repos to help you version and publish your code. You can
find the full documentation for it [in our repository](https://github.com/changesets/changesets)

We have a quick list of common questions to get you started engaging with this project in
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)


================================================
FILE: .changeset/config.json
================================================
{
  "$schema": "https://unpkg.com/@changesets/config@1.6.1/schema.json",
  "changelog": "@changesets/cli/changelog",
  "commit": false,
  "linked": [],
  "access": "public",
  "baseBranch": "next",
  "updateInternalDependencies": "patch",
  "ignore": []
}


================================================
FILE: .devcontainer/Dockerfile
================================================
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.195.0/containers/go/.devcontainer/base.Dockerfile
# [Choice] Go version (use -bullseye variants on local arm64/Apple Silicon): 1, 1.16, 1.17, 1-bullseye, 1.16-bullseye, 1.17-bullseye, 1-buster, 1.16-buster, 1.17-buster
ARG VARIANT=1-bullseye
FROM mcr.microsoft.com/devcontainers/go:0-${VARIANT}

# [Choice] Node.js version: lts/*, 16, 14, 12, 10
ARG NODE_VERSION="lts/*"
RUN if [ "${NODE_VERSION}" != "none" ]; then su vscode -c ". /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi

# [Optional] Uncomment this section to install additional OS packages.
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
#     && apt-get -y install --no-install-recommends <your-package-list-here>

# [Optional] Uncomment the next line to use go get to install anything else you need
# RUN go get -x <your-dependency-or-tool>

# [Optional] Uncomment this line to install global node packages.
RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g pnpm" 2>&1


================================================
FILE: .devcontainer/devcontainer.json
================================================
// For format details, see https://aka.ms/vscode-remote/devcontainer.json or this file's README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.195.0/containers/go
{
  "name": "Go",
  "build": {
    "dockerfile": "Dockerfile",
    "args": {
      // Update the VARIANT arg to pick a version of Go: 1, 1.16, 1.17
      // Append -bullseye or -buster to pin to an OS version.
      // Use -bullseye variants on local arm64/Apple Silicon.
      "VARIANT": "1.19",
      // Options
      "NODE_VERSION": "16"
    }
  },
  "runArgs": ["--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined"],

  // Configure tool-specific properties.
  "customizations": {
    "vscode": {
      "settings": {
        "go.toolsManagement.checkForUpdates": "local",
        "go.useLanguageServer": true,
        "go.gopath": "/go",
        "go.goroot": "/usr/local/go"
      },
      "extensions": ["golang.Go"]
    }
  },

  "remoteUser": "vscode"
}


================================================
FILE: .editorconfig
================================================
root = true

[*.go]
indent_style = tab
indent_size = 2
trim_trailing_whitespace = true


================================================
FILE: .git-blame-ignore-revs
================================================
# chore: format everything (#1020)
402060270f50fe273d5e7387241d7eb36f99ca11


================================================
FILE: .gitattributes
================================================
# Files with the language manually specified, sorted alphabetically.
/internal/**/*.snap linguist-language=Markdown

================================================
FILE: .github/ISSUE_TEMPLATE/---01-bug-report.yml
================================================
name: "\U0001F41B Bug Report"
description: Report an issue or possible bug
title: "\U0001F41B BUG:"
labels: []
assignees: []
body:
  - type: markdown
    attributes:
      value: |
        ##  Quick Checklist
        Thank you for taking the time to file a bug report! Please fill out this form as completely as possible.

        ✅ I am using the **latest version of Astro** and all plugins.
        ✅ I am using a version of Node that supports ESM (`v12.20.0+`, `v14.13.1+`, or `v16.0.0+`)
  - type: input
    attributes:
      label: What version of `@astrojs/compiler` are you using?
      placeholder: 0.0.0
    validations:
      required: true
  - type: input
    attributes:
      label: What package manager are you using?
      placeholder: npm, yarn, pnpm
    validations:
      required: true
  - type: input
    attributes:
      label: What operating system are you using?
      placeholder: Mac, Windows, Linux
    validations:
      required: true
  - type: textarea
    attributes:
      label: Describe the Bug
      description: A clear and concise description of what the bug is.
    validations:
      required: true
  - type: input
    attributes:
      label: Link to Minimal Reproducible Example
      description: 'Please use the following link to create a reproduction: https://astro.new'
      placeholder: 'https://stackblitz.com/abcd1234'
    validations:
      required: true


================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
  - name: 🏡 Main Astro Repo
    url: https://github.com/withastro/astro
    about: Unsure if your bug is related to the compiler? Please open an issue in the main Astro repo!
  - name: 👾 Chat
    url: https://astro.build/chat
    about: Our Discord server is active, come join us!
  - name: 💁 Support
    url: https://astro.build/chat
    about: 'This issue tracker is not for support questions. Join us on Discord for assistance!'


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
## Changes

- What does this change?
- Be short and concise. Bullet points can help!
- Before/after screenshots can be helpful as well.

## Testing

<!-- How was this change tested? -->
<!-- DON'T DELETE THIS SECTION! If no tests added, explain why. -->

## Docs

<!-- Was public documentation updated? -->
<!-- DON'T DELETE THIS SECTION! If no docs added, explain why (e.g. "bug fix only") -->


================================================
FILE: .github/workflows/ci.yml
================================================
name: Test

on:
  workflow_dispatch:
  push:
    branches: ['main', 'next']
  pull_request:
    branches: ['main', 'next']

# Automatically cancel in-progress actions on the same branch
concurrency:
  group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.ref }}
  cancel-in-progress: true

jobs:
  test:
    timeout-minutes: 3
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1

      - name: Set up Go
        uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
        with:
          go-version: 1.22

      - name: Test
        run: go test -v -timeout 30s ./internal/...

  test-wasm:
    timeout-minutes: 10
    strategy:
      matrix:
        OS: [ubuntu-latest, windows-latest]
    runs-on: ${{ matrix.OS }}
    steps:
      - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1

      - name: Set up Go
        uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
        with:
          go-version: 1.22

      - name: Set up PNPM
        uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0

      - name: Set up Node.js
        uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
        with:
          node-version: 24
          cache: pnpm

      - name: Build WASM
        run: make wasm

      - name: Install NPM Dependencies
        run: pnpm install
        env:
          CI: true

      - name: Build JS
        run: pnpm run build:compiler

      - name: Test WASM
        run: pnpm test:ci

  lint:
    timeout-minutes: 3
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
      - name: golangci-lint
        uses: golangci/golangci-lint-action@d6238b002a20823d52840fda27e2d4891c5952dc # v4.0.1
        with:
          version: latest
        env:
          GOOS: js
          GOARCH: wasm

  lint-js:
    timeout-minutes: 3
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
      - name: Setup Biome
        uses: biomejs/setup-biome@454fa0d884737805f48d7dc236c1761a0ac3cc13 # v2.6.0
      - name: Run linting
        run: biome ci --diagnostic-level=warn


================================================
FILE: .github/workflows/congrats.yml
================================================
name: Congratsbot

on:
  push:
    branches: [main]

jobs:
  congrats:
    if: ${{ github.repository_owner == 'withastro' }}
    uses: withastro/automation/.github/workflows/congratsbot.yml@main
    with:
      EMOJIS: '⚙️,🔩,🔧,🛠️,🧰,🗜️,🦺,<:lgtm:1121889033602215966>'
    secrets:
      DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK_CONGRATS }}


================================================
FILE: .github/workflows/issue-labeled.yml
================================================
name: Issue Labeled

on:
  issues:
    types: [labeled]

jobs:
  reply_labelled:
    if: github.repository_owner == 'withastro'
    uses: withastro/automation/.github/workflows/issue-labeled.yml@main


================================================
FILE: .github/workflows/issue-needs-repro.yml
================================================
name: Close Issues (needs repro)

on:
  schedule:
    - cron: "0 0 * * *"

jobs:
  close-issues:
    if: github.repository == 'withastro/compiler'
    runs-on: ubuntu-latest
    steps:
      - name: needs repro
        uses: actions-cool/issues-helper@9861779a695cf1898bd984c727f685f351cfc372 # v3.7.2
        with:
          actions: "close-issues"
          token: ${{ secrets.GITHUB_TOKEN }}
          labels: "needs repro"
          inactive-day: 3


================================================
FILE: .github/workflows/issue-opened.yml
================================================
name: Label issues
on:
  issues:
    types:
      - reopened
      - opened

jobs:
  label_issues:
    if: github.repository_owner == 'withastro'
    uses: withastro/automation/.github/workflows/issue-opened.yml@main


================================================
FILE: .github/workflows/release.yml
================================================
name: Release
permissions: {}

on:
  # We trigger the release job when a commit is pushed to these branches
  push:
    branches: [main, next]
  # We trigger the snapshot-release job for comments on PRs
  issue_comment:
    types: [created]

jobs:
  release:
    timeout-minutes: 3
    if: github.repository_owner == 'withastro' && github.event_name == 'push'
    name: Changelog
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
      id-token: write
    steps:
      - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
        with:
          persist-credentials: false

      - name: Set up Go
        uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
        with:
          go-version: 1.22

      - name: Set up PNPM
        uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0

      - name: Set up Node.js
        uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
        with:
          node-version: 24.11.1
          cache: pnpm

      - name: Build WASM
        run: make wasm

      - name: Install NPM Dependencies
        run: pnpm install

      - name: Build JS
        run: pnpm run build:compiler

      - name: Create Release Pull Request or Publish to npm
        uses: changesets/action@e0145edc7d9d8679003495b11f87bd8ef63c0cba # v1.5.3
        with:
          publish: pnpm run release
          commit: "[ci] release"
          title: "[ci] release"
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          NPM_TOKEN: "" # See https://github.com/changesets/changesets/issues/1152#issuecomment-3190884868

  snapshot-release:
    timeout-minutes: 3
    name: Create a snapshot release of a pull request
    if: github.repository_owner == 'withastro' && github.event_name == 'issue_comment' && github.event.issue.pull_request && startsWith(github.event.comment.body, '!preview')
    runs-on: ubuntu-latest
    permissions:
      contents: write
      pull-requests: write
      id-token: write
    defaults:
      run:
        shell: bash
    steps:
      - name: Check if user has admin access (only admins can publish snapshot releases).
        id: checkAccess
        uses: actions-cool/check-user-permission@7b90a27f92f3961b368376107661682c441f6103 # v2.3.0
        with:
          require: admin
          username: ${{ github.triggering_actor }}

      # if the user does not have the required permission, we should return exit code 1 to stop the workflow
      - name: Check user permission
        if: steps.checkAccess.outputs.require-result == 'false'
        run: |
          echo "${{ github.triggering_actor }} does not have permissions on this repo."
          echo "Current permission level is ${{ steps.checkAccess.outputs.user-permission }}"
          echo "Job originally triggered by ${{ github.actor }}"
          exit 1

      - name: Extract the snapshot name from comment body
        id: getSnapshotName
        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
        with:
          script: |
            const splitComment = context.payload.comment.body.split(' ');
            splitComment.length !== 2 && (github.rest.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: 'Invalid comment format. Expected: "!preview <one-word-snapshot-name>"',
            }) || core.setFailed('Invalid comment format. Expected: "!preview <one-word-snapshot-name>"'));
            return splitComment[1].trim();
          result-encoding: string

      - name: resolve pr refs
        id: refs
        uses: eficode/resolve-pr-refs@f7e14e739786aae2053e162c678cd4c3c2edaa83 # v0.0.4
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

      - uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5.0.1
        with:
          persist-credentials: false
          ref: ${{ steps.refs.outputs.head_ref }}

      - name: Set up Go
        uses: actions/setup-go@d35c59abb061a4a6fb18e82ac0862c26744d6ab5 # v5.5.0
        with:
          go-version: 1.22

      - name: Setup PNPM
        uses: pnpm/action-setup@41ff72655975bd51cab0327fa583b6e92b6d3061 # v4.2.0

      - name: Setup Node
        uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
        with:
          node-version: 24.11.1
          cache: pnpm

      - name: Install dependencies
        run: pnpm install

      - name: Build Packages
        run: pnpm run build:all

      - name: Bump Package Versions
        run: |
          pnpm exec changeset version --snapshot ${{ steps.getSnapshotName.outputs.result }} > changesets.output.txt 2>&1
          echo ::set-output name=result::`cat changesets.output.txt`
        env:
          # Needs access to run the script
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

      - name: Publish Release
        id: publish
        run: |
          pnpm run release --tag next--${{ steps.getSnapshotName.outputs.result }} > publish.output.txt 2>&1
          echo ::set-output name=result::`cat publish.output.txt`
        env:
          NPM_TOKEN: "" # See https://github.com/changesets/changesets/issues/1152#issuecomment-3190884868

      - name: Pull Request Notification
        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
        env:
          MESSAGE: ${{ steps.publish.outputs.result }}
        with:
          script: |
            console.log(process.env.MESSAGE);
            github.rest.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: '```\n' + process.env.MESSAGE + '\n```',
            })


================================================
FILE: .gitignore
================================================
.DS_Store
.pnpm-store
node_modules
*.wasm
/astro
debug.test
__debug_bin
packages/compiler/sourcemap.mjs


================================================
FILE: .gitpod.yml
================================================
# This configuration file was automatically generated by Gitpod.
# Please adjust to your needs (see https://www.gitpod.io/docs/config-gitpod-file)
# and commit this file to your remote git repository to share the goodness with others.

tasks:
  - init: pnpm install && pnpm run build && go get && go build ./... && go test ./... && make
    command: go run .


================================================
FILE: .golangci.yml
================================================
issues:
  exclude-dirs:
    - lib
  exclude-files:
    - xxhash.go
  exclude-rules:
    - path: token.go
      linters:
        - errcheck
    - path: escape.go
      linters:
        - errcheck

    - linters:
        - staticcheck
      text: "SA9003"


================================================
FILE: .prettierignore
================================================
**/dist
pnpm-lock.yaml


================================================
FILE: .vscode/settings.json
================================================
{
  "go.toolsEnvVars": {
    "GOOS": "js",
    "GOARCH": "wasm"
  },
  "editor.unusualLineTerminators": "off"
}


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing

Contributions are welcome to the Go compiler!

## Setup

### Go

[Go][go] `1.20+` is needed to work with this repo. On Macs, installing via [Homebrew][homebrew] is recommended: `brew install go`. For Windows & Linux, you can [follow Go’s installation guide][go] if you don’t have your own preferred method of package installation.

If you use VS Code as your primary editor, installing the [Go extension][go-vscode] is highly recommended.

### Node

You will also need [Node.js][node] installed, as well as PNPM 8.x (`npm i -g pnpm`). More often than not, you won’t need to touch JS in this repo, but in case you do, be sure to run `pnpm install` first.

## Code Structure

A simple explanation of the compiler process is:

1. Tokenizes (`internal/token.go`)
2. Scans (`internal/js_scanner.go`)
3. Prints (`internal/printer/print-to-js.go`)

**Tokenizing** takes the raw `.astro` text and turns it into simple tokens such as `FrontmatterStart`, `FrontmatterEnd`, `TagStart`, `TagEnd`, etc.

**Scanning** does a basic scanning of the JS to pull out imports after the tokenizer has made it clear where JS begins and ends.

**Printing** takes all the output up till now and generates (prints) valid TypeScript that can be executed within Node.

When adding a new feature or debugging an issue, start at the tokenizer, then move onto the scanner, and finally end at the printer. By starting at the lowest level of complexity (tokenizer), it will be easier to reason about.

## Tests

It's important to **run the test from the root of the project**. Doing so, `go` will load all the necessary global information needed to run the tests.

### Run all tests

```shell
go test -v ./internal/...
```
### Run a specific test suite 

```shell
go test -v ./internal/printer
```
### Run a specific test case

Many of our test cases are designed like this:

```go
func TestPrintToJSON(t *testing.T) {
  tests := []jsonTestcase{
  	{
  	  name:   "basic",
  	  source: `<h1>Hello world!</h1>`,
  	  want:   []ASTNode{{Type: "element", Name: "h1", Children: []ASTNode{{Type: "text", Value: "Hello world!"}}}},
  	},
    {
  	  name:   "Comment preserves whitespace",
  	  source: `<!-- hello -->`,
  	  want:   []ASTNode{{Type: "comment", Value: " hello "}},
  	}
  }
}
```

In this particular instance, the test case is name of the function, a slash `/`, followed by the `name` field. If the test case has spaces, you can use them.

```shell
go test -v ./internal/... -run TestPrintToJSON/basic
go test -v ./internal/... -run TestPrintToJSON/Comment preserves whitespace
```

#### Snapshot testing

We use [go-snaps](https://github.com/gkampitakis/go-snaps) for snapshot testing. Visit their repository for more details on how to use it

#### Update snapshots

Some of our tests use snapshot tests. If some of you changes are expected to update some snapshot tests, you can use the environment variable `UPDATE_SNAPS` to do so:

```shell
UPDATE_SNAPS=true go test -v ./internal/...
```

Instead, if there are some **obsolete snapshots**, you can `UPDATE_SNAPS=clean`:

```shell
UPDATE_SNAPS=clean go test -v ./internal/...
```


### Adding new test cases

The printer tests emit only snapshots. Go to `printer_test.go` and add a new test case:

```go
{
	name: "New name for this test"
	code: "<div></div>"
}
```

Then run the below command, and a new snapshot named `new_name_for_this_test.snap` should appear in the snapshot folder.

```shell
go test -v ./internal/printer/printer_test.go
```

Other tests, like tokenizer and scanner be found in `internal/token_test.go`, `internal/js_scanner_test.go` and respectively.

Those tests don't emit any snapshot, and you'll have to add a `want` field:

```go
{
	name: "New name for this test"
	code: "<div></div>",
	want: want{
		code: "<div></div>"
	}
}
```


[homebrew]: https://brew.sh/
[go]: https://golang.org/
[go-vscode]: https://marketplace.visualstudio.com/items?itemName=golang.go
[node]: https://nodejs.org/


================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2021 [Astro contributors](https://github.com/withastro/compiler/graphs/contributors)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

"""
This license applies to parts of the `internal/` subdirectory originating from 
the https://cs.opensource.google/go/x/net/+/master:html/ repository:

Copyright (c) 2009 The Go Authors. All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

   * Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
   * Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


================================================
FILE: Makefile
================================================
GO_FLAGS += "-ldflags=-s -w"

# Avoid embedding the build path in the executable for more reproducible builds
GO_FLAGS += -trimpath


wasm: internal/*/*.go go.mod
	CGO_ENABLED=0 GOOS=js GOARCH=wasm go build $(GO_FLAGS) -o ./packages/compiler/wasm/astro.wasm ./cmd/astro-wasm/astro-wasm.go


publish-node:
	make wasm
	cd packages/compiler && pnpm run build

clean:
	git clean -dxf


================================================
FILE: SYNTAX_SPEC.md
================================================
# The `.astro` File Format - Syntax Specification

**Version:** 1.0
**Status:** Draft
**Date:** 2026-02-03

---

## Table of Contents

1. [File Structure](#1-file-structure)
2. [Component Script (Frontmatter)](#2-component-script-frontmatter)
3. [Template](#3-template)
4. [Style Blocks](#4-style-blocks)
5. [Script Blocks](#5-script-blocks)

---

## 1. File Structure

An `.astro` file is composed of up to two sections described below. All are optional. When present, they must appear in this order:

```
┌──────────────────────────────────┐
│  ---                             │
│  Component Script                │
│  ---                             │
├──────────────────────────────────┤
│  Template                        │
└──────────────────────────────────┘
```

### 1.1 Minimal examples

```astro
<!-- A comment! -->
<h1>Hello, World!</h1>
```

```astro
---
const greeting = "Hello";
---

<h1>{greeting}, World!</h1>

<style>
  h1 { color: royalblue; }
</style>
```

---

## 2. Component Script (Frontmatter)

The region between the two `---` fences.

- The opening and closing fences are not required on their own line. Code may appear on the same line as both fences.
- Only one component script is allowed per file.
- Any amount of whitespace may appear before the opening fence or after the closing fence.
- Any content may appear before the opening fence, but is customarily ignored.

The component script is TypeScript. All standard TypeScript syntax is valid, apart from the exceptions and additions outlined in §2.1.

### 2.1 Top-level return

`return` may be used at the top level:

```astro
---
import { getUser } from "../lib/auth.js";

const user = await getUser();
if (!user) {
  return Astro.redirect("/login");
}
---
```

---

## 3. Template

The template is considered to be everything after the closing fence of the component script, or the entire file when there is no component script.

The template mostly follows the [JSX specification](https://facebook.github.io/jsx/), with the differences and additions outlined in §3.2.

### 3.1 Whitespace between the component script and template is ignored

Any amount of whitespace (spaces, tabs, newlines) between the closing fence of the component script and the start of the template is ignored and does not produce text nodes.

```astro
---
const greeting = "Hello";
---



<h1>{greeting}, World!</h1>
```

### 3.2 Differences from JSX

Unless mentioned otherwise, these differences apply both within the template and within expressions inside the template.

#### HTML comments

HTML comments `<!-- … -->` are allowed.

```astro
<!-- This is an HTML comment -->
{
	<!-- This is an HTML comment inside an expression -->
}
```

#### <Fragment>

In addition to the standard JSX fragment syntax `<>…</>`, `Fragment` is supported as the tag name for fragments, i.e. `<Fragment>…</Fragment>`.

```astro
<Fragment>
	<div>Item 1</div>	
	<div>Item 2</div>
</Fragment>
```

This form may accept attributes, unlike the shorthand syntax.

#### `is:raw` Directive

The `is:raw` attribute on any element allows the content to be treated as raw text instead of JSX.

```astro
<Component is:raw>{<% non-JS content %>}</Component>

<div is:raw>
	{not an expression, just text}
</div>
```

#### HTML doctype

The [HTML doctype declaration](https://html.spec.whatwg.org/multipage/syntax.html#the-doctype) is allowed.

```astro
<!DOCTYPE html>
```

##### Top-level text nodes

Top-level text inside the template is treated as text nodes.

```astro
Hello, World!
```

#### Whitespace in expressions

Whitespace inside expressions `{ }` is preserved as text nodes, unlike JSX, where whitespace inside expression containers is ignored:

```astro
<!-- Whitespace around element -->
{
    <div>Hello</div>
}

<!-- Leading/trailing spaces -->
{   <div>test</div>   }

<!-- Whitespace-only expression -->
{   }
```

In Astro, all of these produce text nodes for the whitespace, whereas in JSX:

- Whitespace around elements inside `{ }` is ignored
- Whitespace-only expressions result in an empty expression, with no text nodes.

#### Multiple root elements

Unlike JSX, no single root element is required:

```astro
<header>…</header>
<main>…</main>
<footer>…</footer>

<!-- or inside an expression: -->
{
  <div>1</div>
  <div>2</div>
  <div>3</div>
}
```

#### Attribute names

Attribute names [follow the HTML conventions](https://html.spec.whatwg.org/multipage/syntax.html#syntax-attribute-name) and are not required to be valid JavaScript identifiers. For example, characters like hyphens and colons are allowed in attribute names:

```astro
<div @click="handler" x.data="value" :class="my-class" />
```

#### Namespace in component names is not supported

Colons in component names are not treated as namespace separators. For example:

```astro
<Namespace:Component />
```

Will be treated as a single component name (i.e. `Namespace:Component`). Spaces are not allowed in component names, so the following:

```astro
<Namespace : Component />
```

Would result in the component's name being Namespace, an attribute named `:` with no value, and an attribute named `Component` with no value.

#### Attribute shorthand

Attributes can use a shorthand syntax where `{prop}` is equivalent to `prop={prop}`:

```astro
<Component {prop} />
<!-- equivalent to: -->
<Component prop={prop} />
```

#### Template literal attributes

Attributes can use backticks for interpolation without opening an expression:

```astro
<Component attribute=`hello ${value}` />
```

#### Empty expressions inside attributes

Empty expressions `{}` inside attributes are allowed:

```astro
<Component attribute={} />
```

#### Comments inside opening tags

Comments are allowed inside the opening tag of an element:

```astro
<div
	{/* Hello */}
	class="my-class"
></div>
```

#### Less-than signs in text nodes

Less-than signs `<` in text nodes are parsed following HTML rules, meaning they do not need to be escaped:

```astro
<p>5 < 10</p>
```

#### Non-ASCII tag names are not supported

Tag names must use ASCII characters only. Non-ASCII tag names (e.g. `<日本>`) are not supported and are treated as text nodes.

#### Unquoted attribute values

Attribute values do not need to be quoted if they contain only alphanumeric characters, hyphens, underscores, and periods:

```astro
<Component data-id=12345 class=my-class />
```

#### Unclosed HTML tags

Like HTML, tags do not need to be explicitly closed.

```astro
<p>Hello
<p>World
```

It is up to the parser to optionally try to infer where tags close based on HTML parsing rules, or leave them unclosed.

##### Void elements

HTML void elements do not need to be self-closed:

```astro
<input type="text">
<br>
<img src="image.png">
```

#### Element-specific parsing rules

Certain HTML elements have special parsing rules that differ from the general rules outlined above. These include:

- `<script>` - contains JavaScript/TypeScript (see §5)
- `<style>` - contains CSS (see §4)

##### Elements that disable expression parsing

The following elements disable expression parsing entirely. Inside these elements and their descendants, curly braces `{` and `}` are treated as literal text characters, not expression delimiters:

- `<math>`
- `<iframe>`
- `<noembed>`
- `<noframes>`
- `<plaintext>`
- `<xmp>`

Example with `<math>`:

```astro
<math xmlns="http://www.w3.org/1998/Math/MathML">
  <semantics>
    <annotation encoding="application/x-tex">
      f\colon X \to \mathbb{R}^{2x}
    </annotation>
  </semantics>
</math>
```

In this example, `{R}` and `{2x}` are treated as literal text, not expressions.

##### Raw text elements that still support expressions

The `<title>` and `<textarea>` elements have special parsing where HTML tags inside them are treated as literal text rather than elements, but expressions still work.

```astro
<title>{pageTitle} - Site with <b>bold</b></title>
<textarea>{defaultValue} with <div>tags</div></textarea>
```

In this example:
- `{pageTitle}` and `{defaultValue}` are expressions that will be evaluated
- The `<b>bold</b>` and `<div>tags</div>` are treated as literal text, not HTML elements

---

## 4. Style Blocks

```astro
<style>
  h1 { color: red; }
</style>
```

Multiple `<style>` blocks are allowed per file.

### 4.1 Language

By default, `<style>` blocks can contain CSS. The content adheres to standard CSS syntax as defined by the [CSS Syntax Module](https://www.w3.org/TR/css-syntax-3/).

### 4.2 `lang` attribute

Specifies a preprocessor language:

```astro
<style lang="scss">
  $accent: #1d4ed8;
  .card { border-color: $accent; }
</style>
```

The syntax then follows the rules of the specified preprocessor instead of standard CSS.

---

## 5. Script Blocks

```astro
<script>
  console.log("Hello");
</script>
```

Multiple `<script>` blocks are allowed per file.

### 5.1 Language

A bare `<script>` tag with no attributes can contain TypeScript. The content adheres to standard TypeScript syntax.

```astro
<script>
  interface User {
    id: number;
    name: string;
  }

  // ...
</script>
```

If any attributes are present, the content instead follows standard [HTML `<script>` element](https://html.spec.whatwg.org/multipage/scripting.html#the-script-element) rules.

```astro
<script defer>
	// JavaScript
</script>

<script type="module">
  // JavaScript module
  import { foo } from "./foo.js";
</script>

<script type="application/json">
  { "key": "value" }
</script>
```


================================================
FILE: biome.json
================================================
{
  "$schema": "https://biomejs.dev/schemas/1.8.1/schema.json",
  "files": {
    "ignore": ["**/dist/**", "**/pnpm-lock.yaml", "wasm_exec.ts"],
    "include": ["packages/**"]
  },
  "formatter": {
    "enabled": true,
    "indentStyle": "tab",
    "indentWidth": 2,
    "lineWidth": 100
  },
  "organizeImports": {
    "enabled": true
  },
  "linter": {
    "enabled": true,
    "rules": {
      "recommended": true,
      "suspicious": {
        "noExplicitAny": "info",
        "noConsoleLog": "info"
      },
      "style": {
        "useTemplate": {
          "level": "error",
          "fix": "safe"
        },
        "noUnusedTemplateLiteral": {
          "level": "error",
          "fix": "safe"
        }
      }
    }
  },
  "javascript": {
    "formatter": {
      "trailingCommas": "es5",
      "quoteStyle": "single",
      "semicolons": "always"
    }
  },
  "json": {
    "parser": {
      "allowComments": true,
      "allowTrailingCommas": true
    },
    "formatter": {
      "indentStyle": "space",
      "trailingCommas": "none"
    }
  },
  "overrides": [
    {
      "include": ["**/stress/**"],
      "linter": {
        "rules": {
          "suspicious": {
            "noConsoleLog": "off"
          }
        }
      }
    },
    {
      "include": ["package.json"],
      "json": {
        "formatter": {
          "lineWidth": 1
        }
      }
    }
  ]
}


================================================
FILE: cmd/astro-wasm/astro-wasm.go
================================================
//go:build js && wasm

package main

import (
	"encoding/base64"
	"encoding/json"
	"fmt"
	"strings"
	"sync"
	"syscall/js"
	"unicode"

	"github.com/norunners/vert"
	astro "github.com/withastro/compiler/internal"
	"github.com/withastro/compiler/internal/handler"
	"github.com/withastro/compiler/internal/loc"
	"github.com/withastro/compiler/internal/printer"
	"github.com/withastro/compiler/internal/sourcemap"
	t "github.com/withastro/compiler/internal/t"
	"github.com/withastro/compiler/internal/transform"
	wasm_utils "github.com/withastro/compiler/internal_wasm/utils"
)

func main() {
	js.Global().Set("@astrojs/compiler", js.ValueOf(make(map[string]interface{})))
	module := js.Global().Get("@astrojs/compiler")
	module.Set("transform", Transform())
	module.Set("parse", Parse())
	module.Set("convertToTSX", ConvertToTSX())

	<-make(chan struct{})
}

func jsString(j js.Value) string {
	if j.Equal(js.Undefined()) || j.Equal(js.Null()) {
		return ""
	}
	return j.String()
}

func jsBoolOptional(j js.Value, defaultValue bool) bool {
	if j.Equal(js.Undefined()) || j.Equal(js.Null()) {
		return defaultValue
	}
	return j.Bool()
}

func jsBool(j js.Value) bool {
	if j.Equal(js.Undefined()) || j.Equal(js.Null()) {
		return false
	}
	return j.Bool()
}

func makeParseOptions(options js.Value) t.ParseOptions {
	position := true

	pos := options.Get("position")
	if !pos.IsNull() && !pos.IsUndefined() {
		position = pos.Bool()
	}

	filename := jsString(options.Get("filename"))
	if filename == "" {
		filename = "<stdin>"
	}

	return t.ParseOptions{
		Filename: filename,
		Position: position,
	}
}

func makeTransformOptions(options js.Value) transform.TransformOptions {
	filename := jsString(options.Get("filename"))
	if filename == "" {
		filename = "<stdin>"
	}

	normalizedFilename := jsString(options.Get("normalizedFilename"))
	if normalizedFilename == "" {
		normalizedFilename = filename
	}

	internalURL := jsString(options.Get("internalURL"))
	if internalURL == "" {
		internalURL = "astro/runtime/server/index.js"
	}

	sourcemap := jsString(options.Get("sourcemap"))
	if sourcemap == "<boolean: true>" {
		sourcemap = "both"
	}

	astroGlobalArgs := jsString(options.Get("astroGlobalArgs"))

	compact := false
	if jsBool(options.Get("compact")) {
		compact = true
	}

	scopedSlot := false
	if jsBool(options.Get("resultScopedSlot")) {
		scopedSlot = true
	}

	transitionsAnimationURL := jsString(options.Get("transitionsAnimationURL"))
	if transitionsAnimationURL == "" {
		transitionsAnimationURL = "astro/components/viewtransitions.css"
	}

	annotateSourceFile := false
	if jsBool(options.Get("annotateSourceFile")) {
		annotateSourceFile = true
	}

	var resolvePath any = options.Get("resolvePath")
	var resolvePathFn func(string) string
	if resolvePath.(js.Value).Type() == js.TypeFunction {
		resolvePathFn = func(id string) string {
			result, _ := wasm_utils.Await(resolvePath.(js.Value).Invoke(id))
			if result[0].Equal(js.Undefined()) || result[0].Equal(js.Null()) {
				return id
			} else {
				return result[0].String()
			}
		}
	}

	preprocessStyle := options.Get("preprocessStyle")

	scopedStyleStrategy := jsString(options.Get("scopedStyleStrategy"))
	if scopedStyleStrategy == "" {
		scopedStyleStrategy = "where"
	}

	return transform.TransformOptions{
		Filename:                filename,
		NormalizedFilename:      normalizedFilename,
		InternalURL:             internalURL,
		SourceMap:               sourcemap,
		AstroGlobalArgs:         astroGlobalArgs,
		Compact:                 compact,
		ResolvePath:             resolvePathFn,
		PreprocessStyle:         preprocessStyle,
		ResultScopedSlot:        scopedSlot,
		ScopedStyleStrategy:     scopedStyleStrategy,
		TransitionsAnimationURL: transitionsAnimationURL,
		AnnotateSourceFile:      annotateSourceFile,
	}
}

func makeTSXOptions(options js.Value) printer.TSXOptions {
	includeScripts := jsBoolOptional(options.Get("includeScripts"), true)
	includeStyles := jsBoolOptional(options.Get("includeStyles"), true)

	return printer.TSXOptions{
		IncludeScripts: includeScripts,
		IncludeStyles:  includeStyles,
	}
}

type RawSourceMap struct {
	File           string   `js:"file"`
	Mappings       string   `js:"mappings"`
	Names          []string `js:"names"`
	Sources        []string `js:"sources"`
	SourcesContent []string `js:"sourcesContent"`
	Version        int      `js:"version"`
}

type HoistedScript struct {
	Code string `js:"code"`
	Src  string `js:"src"`
	Type string `js:"type"`
	Map  string `js:"map"`
}

type HydratedComponent struct {
	ExportName   string `js:"exportName"`
	LocalName    string `js:"localName"`
	Specifier    string `js:"specifier"`
	ResolvedPath string `js:"resolvedPath"`
}

type ParseResult struct {
	AST         string                  `js:"ast"`
	Diagnostics []loc.DiagnosticMessage `js:"diagnostics"`
}

type TSXResult struct {
	Code        string                  `js:"code"`
	Map         string                  `js:"map"`
	Diagnostics []loc.DiagnosticMessage `js:"diagnostics"`
	Ranges      printer.TSXRanges       `js:"metaRanges"`
}

type TransformResult struct {
	Code                 string                  `js:"code"`
	Diagnostics          []loc.DiagnosticMessage `js:"diagnostics"`
	Map                  string                  `js:"map"`
	Scope                string                  `js:"scope"`
	CSS                  []string                `js:"css"`
	Scripts              []HoistedScript         `js:"scripts"`
	HydratedComponents   []HydratedComponent     `js:"hydratedComponents"`
	ClientOnlyComponents []HydratedComponent     `js:"clientOnlyComponents"`
	ServerComponents     []HydratedComponent     `js:"serverComponents"`
	ContainsHead         bool                    `js:"containsHead"`
	StyleError           []string                `js:"styleError"`
	Propagation          bool                    `js:"propagation"`
}

// This is spawned as a goroutine to preprocess style nodes using an async function passed from JS
func preprocessStyle(i int, style *astro.Node, transformOptions transform.TransformOptions, styleError *[]string, cb func()) {
	defer cb()
	if style.FirstChild == nil {
		return
	}
	attrs := wasm_utils.GetAttrs(style)
	data, _ := wasm_utils.Await(transformOptions.PreprocessStyle.(js.Value).Invoke(style.FirstChild.Data, attrs))
	// note: Rollup (and by extension our Astro Vite plugin) allows for "undefined" and "null" responses if a transform wishes to skip this occurrence
	if data[0].Equal(js.Undefined()) || data[0].Equal(js.Null()) {
		return
	}
	// If an error return, override the style's CSS so the compiler doesn't hang
	// And return a styleError. The caller will use this to know that style processing failed.
	if err := jsString(data[0].Get("error")); err != "" {
		style.FirstChild.Data = ""
		//*styleError = err
		*styleError = append(*styleError, err)
		return
	}
	str := jsString(data[0].Get("code"))
	if str == "" {
		return
	}
	style.FirstChild.Data = str
}

func Parse() any {
	return js.FuncOf(func(this js.Value, args []js.Value) any {
		source := jsString(args[0])
		parseOptions := makeParseOptions(js.Value(args[1]))
		transformOptions := makeTransformOptions(js.Value(args[1]))
		transformOptions.Scope = "xxxxxx"
		h := handler.NewHandler(source, parseOptions.Filename)

		var doc *astro.Node
		doc, err := astro.ParseWithOptions(strings.NewReader(source), astro.ParseOptionWithHandler(h), astro.ParseOptionEnableLiteral(true))
		if err != nil {
			h.AppendError(err)
		}
		result := printer.PrintToJSON(source, doc, parseOptions)

		// AFTER printing, exec transformations to pickup any errors/warnings
		transform.Transform(doc, transformOptions, h)

		return vert.ValueOf(ParseResult{
			AST:         string(result.Output),
			Diagnostics: h.Diagnostics(),
		}).Value
	})
}

func ConvertToTSX() any {
	return js.FuncOf(func(this js.Value, args []js.Value) any {
		source := jsString(args[0])
		transformOptions := makeTransformOptions(js.Value(args[1]))
		transformOptions.Scope = "xxxxxx"
		h := handler.NewHandler(source, transformOptions.Filename)

		var doc *astro.Node
		doc, err := astro.ParseWithOptions(strings.NewReader(source), astro.ParseOptionWithHandler(h), astro.ParseOptionEnableLiteral(true))
		if err != nil {
			h.AppendError(err)
		}

		tsxOptions := makeTSXOptions(js.Value(args[1]))

		result := printer.PrintToTSX(source, doc, tsxOptions, transformOptions, h)

		// AFTER printing, exec transformations to pickup any errors/warnings
		transform.Transform(doc, transformOptions, h)

		sourcemapString := createSourceMapString(source, result, transformOptions)
		code := string(result.Output)
		if transformOptions.SourceMap != "external" {
			inlineSourcemap := `//# sourceMappingURL=data:application/json;charset=utf-8;base64,` + base64.StdEncoding.EncodeToString([]byte(sourcemapString))
			code += "\n" + inlineSourcemap
		}

		return vert.ValueOf(TSXResult{
			Code:        code,
			Map:         sourcemapString,
			Diagnostics: h.Diagnostics(),
			Ranges:      result.TSXRanges,
		}).Value
	})
}

func Transform() any {
	return js.FuncOf(func(this js.Value, args []js.Value) any {
		source := strings.TrimRightFunc(jsString(args[0]), unicode.IsSpace)

		transformOptions := makeTransformOptions(js.Value(args[1]))
		scopeStr := transformOptions.NormalizedFilename
		if scopeStr == "<stdin>" {
			scopeStr = source
		}
		transformOptions.Scope = astro.HashString(scopeStr)
		h := handler.NewHandler(source, transformOptions.Filename)

		styleError := []string{}
		promiseHandle := js.FuncOf(func(this js.Value, args []js.Value) any {
			resolve := args[0]
			reject := args[1]

			go func() {
				var doc *astro.Node
				defer func() {
					if err := recover(); err != nil {
						reject.Invoke(wasm_utils.ErrorToJSError(h, err.(error)))
						return
					}
				}()

				doc, err := astro.ParseWithOptions(strings.NewReader(source), astro.ParseOptionWithHandler(h))
				if err != nil {
					reject.Invoke(wasm_utils.ErrorToJSError(h, err))
					return
				}

				// Hoist styles and scripts to the top-level
				transform.ExtractStyles(doc, &transformOptions)

				// Pre-process styles
				// Important! These goroutines need to be spawned from this file or they don't work
				var wg sync.WaitGroup
				if len(doc.Styles) > 0 {
					if transformOptions.PreprocessStyle.(js.Value).Type() == js.TypeFunction {
						for i, style := range doc.Styles {
							wg.Add(1)
							i := i
							go preprocessStyle(i, style, transformOptions, &styleError, wg.Done)
						}
					}
				}
				// Wait for all the style goroutines to finish
				wg.Wait()

				// Perform CSS and element scoping as needed
				transform.Transform(doc, transformOptions, h)

				css := []string{}
				scripts := []HoistedScript{}
				hydratedComponents := []HydratedComponent{}
				clientOnlyComponents := []HydratedComponent{}
				serverComponents := []HydratedComponent{}
				css_result := printer.PrintCSS(source, doc, transformOptions)
				for _, bytes := range css_result.Output {
					css = append(css, string(bytes))
				}

				// Append hoisted scripts
				for _, node := range doc.Scripts {
					src := astro.GetAttribute(node, "src")
					script := HoistedScript{
						Src:  "",
						Code: "",
						Type: "",
						Map:  "",
					}

					if src != nil {
						script.Type = "external"
						script.Src = src.Val
					} else if node.FirstChild != nil {
						script.Type = "inline"

						if transformOptions.SourceMap != "" {
							isLine := func(r rune) bool { return r == '\r' || r == '\n' }
							isNotLine := func(r rune) bool { return !(r == '\r' || r == '\n') }
							output := make([]byte, 0)
							builder := sourcemap.MakeChunkBuilder(nil, sourcemap.GenerateLineOffsetTables(source, len(strings.Split(source, "\n"))))
							sourcesContent, _ := json.Marshal(source)
							if len(node.FirstChild.Loc) > 0 {
								i := node.FirstChild.Loc[0].Start
								nonWS := strings.IndexFunc(node.FirstChild.Data, isNotLine)
								i += nonWS
								for _, ln := range strings.Split(strings.TrimFunc(node.FirstChild.Data, isLine), "\n") {
									content := []byte(ln)
									content = append(content, '\n')
									for j, b := range content {
										if j == 0 || !unicode.IsSpace(rune(b)) {
											builder.AddSourceMapping(loc.Loc{Start: i}, output)
										}
										output = append(output, b)
										i += 1
									}
								}
								output = append(output, '\n')
							} else {
								output = append(output, []byte(strings.TrimSpace(node.FirstChild.Data))...)
							}
							sourcemap := fmt.Sprintf(
								`{ "version": 3, "sources": ["%s"], "sourcesContent": [%s], "mappings": "%s", "names": [] }`,
								transformOptions.Filename,
								string(sourcesContent),
								string(builder.GenerateChunk(output).Buffer),
							)
							script.Map = sourcemap
							script.Code = string(output)
						} else {
							script.Code = node.FirstChild.Data
						}
					}

					// sourcemapString := createSourceMapString(source, result, transformOptions)
					// inlineSourcemap := `//# sourceMappingURL=data:application/json;charset=utf-8;base64,` + base64.StdEncoding.EncodeToString([]byte(sourcemapString))
					scripts = append(scripts, script)
				}

				for _, c := range doc.HydratedComponents {
					hydratedComponents = append(hydratedComponents, HydratedComponent{
						ExportName:   c.ExportName,
						Specifier:    c.Specifier,
						ResolvedPath: c.ResolvedPath,
					})
				}

				for _, c := range doc.ClientOnlyComponents {
					clientOnlyComponents = append(clientOnlyComponents, HydratedComponent{
						ExportName:   c.ExportName,
						Specifier:    c.Specifier,
						ResolvedPath: c.ResolvedPath,
					})
				}

				for _, c := range doc.ServerComponents {
					serverComponents = append(serverComponents, HydratedComponent{
						ExportName:   c.ExportName,
						LocalName:    c.LocalName,
						Specifier:    c.Specifier,
						ResolvedPath: c.ResolvedPath,
					})
				}

				var value vert.Value
				result := printer.PrintToJS(source, doc, len(css), transformOptions, h)
				transformResult := &TransformResult{
					CSS:                  css,
					Scope:                transformOptions.Scope,
					Scripts:              scripts,
					HydratedComponents:   hydratedComponents,
					ClientOnlyComponents: clientOnlyComponents,
					ServerComponents:     serverComponents,
					ContainsHead:         doc.ContainsHead,
					StyleError:           styleError,
					Propagation:          doc.HeadPropagation,
				}
				switch transformOptions.SourceMap {
				case "external":
					value = createExternalSourceMap(source, transformResult, result, transformOptions)
				case "both":
					value = createBothSourceMap(source, transformResult, result, transformOptions)
				case "inline":
					value = createInlineSourceMap(source, transformResult, result, transformOptions)
				default:
					transformResult.Code = string(result.Output)
					transformResult.Map = ""
					value = vert.ValueOf(transformResult)
				}
				value.Set("diagnostics", vert.ValueOf(h.Diagnostics()).Value)
				resolve.Invoke(value.Value)
			}()

			return nil
		})
		defer promiseHandle.Release()

		// Create and return the Promise object
		promiseConstructor := js.Global().Get("Promise")
		return promiseConstructor.New(promiseHandle)
	})
}

func createSourceMapString(source string, result printer.PrintResult, transformOptions transform.TransformOptions) string {
	sourcesContent, _ := json.Marshal(source)
	sourcemap := RawSourceMap{
		Version:        3,
		Sources:        []string{transformOptions.Filename},
		SourcesContent: []string{string(sourcesContent)},
		Mappings:       string(result.SourceMapChunk.Buffer),
	}
	return fmt.Sprintf(`{
  "version": 3,
  "sources": ["%s"],
  "sourcesContent": [%s],
  "mappings": "%s",
  "names": []
}`, sourcemap.Sources[0], sourcemap.SourcesContent[0], sourcemap.Mappings)
}

func createExternalSourceMap(source string, transformResult *TransformResult, result printer.PrintResult, transformOptions transform.TransformOptions) vert.Value {
	transformResult.Code = string(result.Output)
	transformResult.Map = createSourceMapString(source, result, transformOptions)
	return vert.ValueOf(transformResult)
}

func createInlineSourceMap(source string, transformResult *TransformResult, result printer.PrintResult, transformOptions transform.TransformOptions) vert.Value {
	sourcemapString := createSourceMapString(source, result, transformOptions)
	inlineSourcemap := `//# sourceMappingURL=data:application/json;charset=utf-8;base64,` + base64.StdEncoding.EncodeToString([]byte(sourcemapString))
	transformResult.Code = string(result.Output) + "\n" + inlineSourcemap
	transformResult.Map = ""
	return vert.ValueOf(transformResult)
}

func createBothSourceMap(source string, transformResult *TransformResult, result printer.PrintResult, transformOptions transform.TransformOptions) vert.Value {
	sourcemapString := createSourceMapString(source, result, transformOptions)
	inlineSourcemap := `//# sourceMappingURL=data:application/json;charset=utf-8;base64,` + base64.StdEncoding.EncodeToString([]byte(sourcemapString))
	transformResult.Code = string(result.Output) + "\n" + inlineSourcemap
	transformResult.Map = sourcemapString
	return vert.ValueOf(transformResult)
}


================================================
FILE: go.mod
================================================
module github.com/withastro/compiler

go 1.21

require (
	github.com/gkampitakis/go-snaps v0.5.2
	github.com/google/go-cmp v0.5.9
	github.com/iancoleman/strcase v0.2.0
	github.com/lithammer/dedent v1.1.0
	github.com/norunners/vert v0.0.0-20221203075838-106a353d42dd
	github.com/tdewolff/parse/v2 v2.6.4
	golang.org/x/net v0.0.0-20221004154528-8021a29435af
	golang.org/x/sys v0.0.0-20221010170243-090e33056c14
)

require (
	github.com/gkampitakis/ciinfo v0.3.0 // indirect
	github.com/gkampitakis/go-diff v1.3.2 // indirect
	github.com/kr/pretty v0.3.1 // indirect
	github.com/kr/text v0.2.0 // indirect
	github.com/maruel/natural v1.1.1 // indirect
	github.com/rogpeppe/go-internal v1.12.0 // indirect
	github.com/tidwall/gjson v1.17.0 // indirect
	github.com/tidwall/match v1.1.1 // indirect
	github.com/tidwall/pretty v1.2.1 // indirect
	github.com/tidwall/sjson v1.2.5 // indirect
)


================================================
FILE: go.sum
================================================
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/gkampitakis/ciinfo v0.3.0 h1:gWZlOC2+RYYttL0hBqcoQhM7h1qNkVqvRCV1fOvpAv8=
github.com/gkampitakis/ciinfo v0.3.0/go.mod h1:1NIwaOcFChN4fa/B0hEBdAb6npDlFL8Bwx4dfRLRqAo=
github.com/gkampitakis/go-diff v1.3.2 h1:Qyn0J9XJSDTgnsgHRdz9Zp24RaJeKMUHg2+PDZZdC4M=
github.com/gkampitakis/go-diff v1.3.2/go.mod h1:LLgOrpqleQe26cte8s36HTWcTmMEur6OPYerdAAS9tk=
github.com/gkampitakis/go-snaps v0.5.2 h1:ay/6f7WHwRkOgpBec9DjMLRBAApziJommZ21NkOOCwY=
github.com/gkampitakis/go-snaps v0.5.2/go.mod h1:ZABkO14uCuVxBHAXAfKG+bqNz+aa1bGPAg8jkI0Nk8Y=
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0=
github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
github.com/lithammer/dedent v1.1.0 h1:VNzHMVCBNG1j0fh3OrsFRkVUwStdDArbgBWoPAffktY=
github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc=
github.com/maruel/natural v1.1.1 h1:Hja7XhhmvEFhcByqDoHz9QZbkWey+COd9xWfCfn1ioo=
github.com/maruel/natural v1.1.1/go.mod h1:v+Rfd79xlw1AgVBjbO0BEQmptqb5HvL/k9GRHB7ZKEg=
github.com/norunners/vert v0.0.0-20221203075838-106a353d42dd h1:tHn7K76q9eJ2rXLH/OoxHkdprM3l2A+0kdxOrKYcV7U=
github.com/norunners/vert v0.0.0-20221203075838-106a353d42dd/go.mod h1:8iuQLyTSvuzwy6R6l6w6J+i9c/6xPEVoVdcMz9E8FEw=
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
github.com/tdewolff/parse/v2 v2.6.4 h1:KCkDvNUMof10e3QExio9OPZJT8SbdKojLBumw8YZycQ=
github.com/tdewolff/parse/v2 v2.6.4/go.mod h1:woz0cgbLwFdtbjJu8PIKxhW05KplTFQkOdX78o+Jgrs=
github.com/tdewolff/test v1.0.7 h1:8Vs0142DmPFW/bQeHRP3MV19m1gvndjUb1sn8yy74LM=
github.com/tdewolff/test v1.0.7/go.mod h1:6DAvZliBAAnD7rhVgwaM7DE5/d9NMOAJ09SqYqeK4QE=
github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tidwall/gjson v1.17.0 h1:/Jocvlh98kcTfpN2+JzGQWQcqrPQwDrVEMApx/M5ZwM=
github.com/tidwall/gjson v1.17.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk=
github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA=
github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM=
github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4=
github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU=
github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY=
github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28=
golang.org/x/net v0.0.0-20221004154528-8021a29435af h1:wv66FM3rLZGPdxpYL+ApnDe2HzHcTFta3z5nsc13wI4=
golang.org/x/net v0.0.0-20221004154528-8021a29435af/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk=
golang.org/x/sys v0.0.0-20221010170243-090e33056c14 h1:k5II8e6QD8mITdi+okbbmR/cIyEbeXLBhy5Ha4nevyc=
golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=


================================================
FILE: internal/const.go
================================================
// Copyright 2011 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package astro

import a "golang.org/x/net/html/atom"

// Section 12.2.4.2 of the HTML5 specification says "The following elements
// have varying levels of special parsing rules".
// https://html.spec.whatwg.org/multipage/syntax.html#the-stack-of-open-elements
var isSpecialElementMap = map[string]bool{
	"address":    true,
	"applet":     true,
	"area":       true,
	"article":    true,
	"aside":      true,
	"base":       true,
	"basefont":   true,
	"bgsound":    true,
	"blockquote": true,
	"body":       true,
	"br":         true,
	"button":     true,
	"caption":    true,
	"center":     true,
	"col":        true,
	"colgroup":   true,
	"dd":         true,
	"details":    true,
	"dir":        true,
	"div":        true,
	"dl":         true,
	"dt":         true,
	"embed":      true,
	"fieldset":   true,
	"figcaption": true,
	"figure":     true,
	"footer":     true,
	"form":       true,
	"frame":      true,
	"frameset":   true,
	"h1":         true,
	"h2":         true,
	"h3":         true,
	"h4":         true,
	"h5":         true,
	"h6":         true,
	"head":       true,
	"header":     true,
	"hgroup":     true,
	"hr":         true,
	"html":       true,
	"iframe":     true,
	"img":        true,
	"input":      true,
	"keygen":     true, // "keygen" has been removed from the spec, but are kept here for backwards compatibility.
	"li":         true,
	"link":       true,
	"listing":    true,
	"main":       true,
	"marquee":    true,
	"menu":       true,
	"meta":       true,
	"nav":        true,
	"noembed":    true,
	"noframes":   true,
	"noscript":   true,
	"object":     true,
	"ol":         true,
	"p":          true,
	"param":      true,
	"plaintext":  true,
	"pre":        true,
	"script":     true,
	"section":    true,
	"select":     true,
	"source":     true,
	"style":      true,
	"summary":    true,
	"table":      true,
	"tbody":      true,
	"td":         true,
	"template":   true,
	"textarea":   true,
	"tfoot":      true,
	"th":         true,
	"thead":      true,
	"title":      true,
	"tr":         true,
	"track":      true,
	"ul":         true,
	"wbr":        true,
	"xmp":        true,
}

func isSpecialElement(element *Node) bool {
	switch element.Namespace {
	case "", "html":
		return isSpecialElementMap[element.Data]
	case "math":
		switch element.Data {
		case "mi", "mo", "mn", "ms", "mtext", "annotation-xml":
			return true
		}
	case "svg":
		switch element.Data {
		case "foreignObject", "desc", "title":
			return true
		}
	}
	return false
}

var knownDirectiveMap = map[string]bool{
	"client:load":    true,
	"client:idle":    true,
	"client:visible": true,
	"client:only":    true,
	"class:list":     true,
	"set:text":       true,
	"set:html":       true,
}

func IsKnownDirective(element *Node, attr *Attribute) bool {
	if knownDirectiveMap[attr.Key] {
		return true
	}
	if element.DataAtom == a.Script {
		return attr.Key == "hoist"
	}
	if element.DataAtom == a.Style {
		return attr.Key == "global"
	}
	return false
}


================================================
FILE: internal/doc.go
================================================
// Copyright 2012 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// This example demonstrates parsing HTML data and walking the resulting tree.
package astro


================================================
FILE: internal/doctype.go
================================================
// Copyright 2011 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package astro

import (
	"strings"
)

// parseDoctype parses the data from a DoctypeToken into a name,
// public identifier, and system identifier. It returns a Node whose Type
// is DoctypeNode, whose Data is the name, and which has attributes
// named "system" and "public" for the two identifiers if they were present.
// quirks is whether the document should be parsed in "quirks mode".
func parseDoctype(s string) (n *Node, quirks bool) {
	n = &Node{Type: DoctypeNode}

	// Find the name.
	space := strings.IndexAny(s, whitespace)
	if space == -1 {
		space = len(s)
	}
	n.Data = s[:space]
	// The comparison to "html" is case-sensitive.
	if n.Data != "html" {
		quirks = true
	}
	n.Data = strings.ToLower(n.Data)
	s = strings.TrimLeft(s[space:], whitespace)

	if len(s) < 6 {
		// It can't start with "PUBLIC" or "SYSTEM".
		// Ignore the rest of the string.
		return n, quirks || s != ""
	}

	key := strings.ToLower(s[:6])
	s = s[6:]
	for key == "public" || key == "system" {
		s = strings.TrimLeft(s, whitespace)
		if s == "" {
			break
		}
		quote := s[0]
		if quote != '"' && quote != '\'' {
			break
		}
		s = s[1:]
		q := strings.IndexRune(s, rune(quote))
		var id string
		if q == -1 {
			id = s
			s = ""
		} else {
			id = s[:q]
			s = s[q+1:]
		}
		n.Attr = append(n.Attr, Attribute{Key: key, Val: id})
		if key == "public" {
			key = "system"
		} else {
			key = ""
		}
	}

	if key != "" || s != "" {
		quirks = true
	} else if len(n.Attr) > 0 {
		if n.Attr[0].Key == "public" {
			public := strings.ToLower(n.Attr[0].Val)
			switch public {
			case "-//w3o//dtd w3 html strict 3.0//en//", "-/w3d/dtd html 4.0 transitional/en", "html":
				quirks = true
			default:
				for _, q := range quirkyIDs {
					if strings.HasPrefix(public, q) {
						quirks = true
						break
					}
				}
			}
			// The following two public IDs only cause quirks mode if there is no system ID.
			if len(n.Attr) == 1 && (strings.HasPrefix(public, "-//w3c//dtd html 4.01 frameset//") ||
				strings.HasPrefix(public, "-//w3c//dtd html 4.01 transitional//")) {
				quirks = true
			}
		}
		if lastAttr := n.Attr[len(n.Attr)-1]; lastAttr.Key == "system" &&
			strings.ToLower(lastAttr.Val) == "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd" {
			quirks = true
		}
	}

	return n, quirks
}

// quirkyIDs is a list of public doctype identifiers that cause a document
// to be interpreted in quirks mode. The identifiers should be in lower case.
var quirkyIDs = []string{
	"+//silmaril//dtd html pro v0r11 19970101//",
	"-//advasoft ltd//dtd html 3.0 aswedit + extensions//",
	"-//as//dtd html 3.0 aswedit + extensions//",
	"-//ietf//dtd html 2.0 level 1//",
	"-//ietf//dtd html 2.0 level 2//",
	"-//ietf//dtd html 2.0 strict level 1//",
	"-//ietf//dtd html 2.0 strict level 2//",
	"-//ietf//dtd html 2.0 strict//",
	"-//ietf//dtd html 2.0//",
	"-//ietf//dtd html 2.1e//",
	"-//ietf//dtd html 3.0//",
	"-//ietf//dtd html 3.2 final//",
	"-//ietf//dtd html 3.2//",
	"-//ietf//dtd html 3//",
	"-//ietf//dtd html level 0//",
	"-//ietf//dtd html level 1//",
	"-//ietf//dtd html level 2//",
	"-//ietf//dtd html level 3//",
	"-//ietf//dtd html strict level 0//",
	"-//ietf//dtd html strict level 1//",
	"-//ietf//dtd html strict level 2//",
	"-//ietf//dtd html strict level 3//",
	"-//ietf//dtd html strict//",
	"-//ietf//dtd html//",
	"-//metrius//dtd metrius presentational//",
	"-//microsoft//dtd internet explorer 2.0 html strict//",
	"-//microsoft//dtd internet explorer 2.0 html//",
	"-//microsoft//dtd internet explorer 2.0 tables//",
	"-//microsoft//dtd internet explorer 3.0 html strict//",
	"-//microsoft//dtd internet explorer 3.0 html//",
	"-//microsoft//dtd internet explorer 3.0 tables//",
	"-//netscape comm. corp.//dtd html//",
	"-//netscape comm. corp.//dtd strict html//",
	"-//o'reilly and associates//dtd html 2.0//",
	"-//o'reilly and associates//dtd html extended 1.0//",
	"-//o'reilly and associates//dtd html extended relaxed 1.0//",
	"-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//",
	"-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//",
	"-//spyglass//dtd html 2.0 extended//",
	"-//sq//dtd html 2.0 hotmetal + extensions//",
	"-//sun microsystems corp.//dtd hotjava html//",
	"-//sun microsystems corp.//dtd hotjava strict html//",
	"-//w3c//dtd html 3 1995-03-24//",
	"-//w3c//dtd html 3.2 draft//",
	"-//w3c//dtd html 3.2 final//",
	"-//w3c//dtd html 3.2//",
	"-//w3c//dtd html 3.2s draft//",
	"-//w3c//dtd html 4.0 frameset//",
	"-//w3c//dtd html 4.0 transitional//",
	"-//w3c//dtd html experimental 19960712//",
	"-//w3c//dtd html experimental 970421//",
	"-//w3c//dtd w3 html//",
	"-//w3o//dtd w3 html 3.0//",
	"-//webtechs//dtd mozilla html 2.0//",
	"-//webtechs//dtd mozilla html//",
}


================================================
FILE: internal/entity.go
================================================
// Copyright 2010 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package astro

// All entities that do not end with ';' are 6 or fewer bytes long.
const longestEntityWithoutSemicolon = 6

// entity is a map from HTML entity names to their values. The semicolon matters:
// https://html.spec.whatwg.org/multipage/syntax.html#named-character-references
// lists both "amp" and "amp;" as two separate entries.
//
// Note that the HTML5 list is larger than the HTML4 list at
// http://www.w3.org/TR/html4/sgml/entities.html
var entity = map[string]rune{
	"AElig;":                           '\U000000C6',
	"AMP;":                             '\U00000026',
	"Aacute;":                          '\U000000C1',
	"Abreve;":                          '\U00000102',
	"Acirc;":                           '\U000000C2',
	"Acy;":                             '\U00000410',
	"Afr;":                             '\U0001D504',
	"Agrave;":                          '\U000000C0',
	"Alpha;":                           '\U00000391',
	"Amacr;":                           '\U00000100',
	"And;":                             '\U00002A53',
	"Aogon;":                           '\U00000104',
	"Aopf;":                            '\U0001D538',
	"ApplyFunction;":                   '\U00002061',
	"Aring;":                           '\U000000C5',
	"Ascr;":                            '\U0001D49C',
	"Assign;":                          '\U00002254',
	"Atilde;":                          '\U000000C3',
	"Auml;":                            '\U000000C4',
	"Backslash;":                       '\U00002216',
	"Barv;":                            '\U00002AE7',
	"Barwed;":                          '\U00002306',
	"Bcy;":                             '\U00000411',
	"Because;":                         '\U00002235',
	"Bernoullis;":                      '\U0000212C',
	"Beta;":                            '\U00000392',
	"Bfr;":                             '\U0001D505',
	"Bopf;":                            '\U0001D539',
	"Breve;":                           '\U000002D8',
	"Bscr;":                            '\U0000212C',
	"Bumpeq;":                          '\U0000224E',
	"CHcy;":                            '\U00000427',
	"COPY;":                            '\U000000A9',
	"Cacute;":                          '\U00000106',
	"Cap;":                             '\U000022D2',
	"CapitalDifferentialD;":            '\U00002145',
	"Cayleys;":                         '\U0000212D',
	"Ccaron;":                          '\U0000010C',
	"Ccedil;":                          '\U000000C7',
	"Ccirc;":                           '\U00000108',
	"Cconint;":                         '\U00002230',
	"Cdot;":                            '\U0000010A',
	"Cedilla;":                         '\U000000B8',
	"CenterDot;":                       '\U000000B7',
	"Cfr;":                             '\U0000212D',
	"Chi;":                             '\U000003A7',
	"CircleDot;":                       '\U00002299',
	"CircleMinus;":                     '\U00002296',
	"CirclePlus;":                      '\U00002295',
	"CircleTimes;":                     '\U00002297',
	"ClockwiseContourIntegral;":        '\U00002232',
	"CloseCurlyDoubleQuote;":           '\U0000201D',
	"CloseCurlyQuote;":                 '\U00002019',
	"Colon;":                           '\U00002237',
	"Colone;":                          '\U00002A74',
	"Congruent;":                       '\U00002261',
	"Conint;":                          '\U0000222F',
	"ContourIntegral;":                 '\U0000222E',
	"Copf;":                            '\U00002102',
	"Coproduct;":                       '\U00002210',
	"CounterClockwiseContourIntegral;": '\U00002233',
	"Cross;":                           '\U00002A2F',
	"Cscr;":                            '\U0001D49E',
	"Cup;":                             '\U000022D3',
	"CupCap;":                          '\U0000224D',
	"DD;":                              '\U00002145',
	"DDotrahd;":                        '\U00002911',
	"DJcy;":                            '\U00000402',
	"DScy;":                            '\U00000405',
	"DZcy;":                            '\U0000040F',
	"Dagger;":                          '\U00002021',
	"Darr;":                            '\U000021A1',
	"Dashv;":                           '\U00002AE4',
	"Dcaron;":                          '\U0000010E',
	"Dcy;":                             '\U00000414',
	"Del;":                             '\U00002207',
	"Delta;":                           '\U00000394',
	"Dfr;":                             '\U0001D507',
	"DiacriticalAcute;":                '\U000000B4',
	"DiacriticalDot;":                  '\U000002D9',
	"DiacriticalDoubleAcute;":          '\U000002DD',
	"DiacriticalGrave;":                '\U00000060',
	"DiacriticalTilde;":                '\U000002DC',
	"Diamond;":                         '\U000022C4',
	"DifferentialD;":                   '\U00002146',
	"Dopf;":                            '\U0001D53B',
	"Dot;":                             '\U000000A8',
	"DotDot;":                          '\U000020DC',
	"DotEqual;":                        '\U00002250',
	"DoubleContourIntegral;":           '\U0000222F',
	"DoubleDot;":                       '\U000000A8',
	"DoubleDownArrow;":                 '\U000021D3',
	"DoubleLeftArrow;":                 '\U000021D0',
	"DoubleLeftRightArrow;":            '\U000021D4',
	"DoubleLeftTee;":                   '\U00002AE4',
	"DoubleLongLeftArrow;":             '\U000027F8',
	"DoubleLongLeftRightArrow;":        '\U000027FA',
	"DoubleLongRightArrow;":            '\U000027F9',
	"DoubleRightArrow;":                '\U000021D2',
	"DoubleRightTee;":                  '\U000022A8',
	"DoubleUpArrow;":                   '\U000021D1',
	"DoubleUpDownArrow;":               '\U000021D5',
	"DoubleVerticalBar;":               '\U00002225',
	"DownArrow;":                       '\U00002193',
	"DownArrowBar;":                    '\U00002913',
	"DownArrowUpArrow;":                '\U000021F5',
	"DownBreve;":                       '\U00000311',
	"DownLeftRightVector;":             '\U00002950',
	"DownLeftTeeVector;":               '\U0000295E',
	"DownLeftVector;":                  '\U000021BD',
	"DownLeftVectorBar;":               '\U00002956',
	"DownRightTeeVector;":              '\U0000295F',
	"DownRightVector;":                 '\U000021C1',
	"DownRightVectorBar;":              '\U00002957',
	"DownTee;":                         '\U000022A4',
	"DownTeeArrow;":                    '\U000021A7',
	"Downarrow;":                       '\U000021D3',
	"Dscr;":                            '\U0001D49F',
	"Dstrok;":                          '\U00000110',
	"ENG;":                             '\U0000014A',
	"ETH;":                             '\U000000D0',
	"Eacute;":                          '\U000000C9',
	"Ecaron;":                          '\U0000011A',
	"Ecirc;":                           '\U000000CA',
	"Ecy;":                             '\U0000042D',
	"Edot;":                            '\U00000116',
	"Efr;":                             '\U0001D508',
	"Egrave;":                          '\U000000C8',
	"Element;":                         '\U00002208',
	"Emacr;":                           '\U00000112',
	"EmptySmallSquare;":                '\U000025FB',
	"EmptyVerySmallSquare;":            '\U000025AB',
	"Eogon;":                           '\U00000118',
	"Eopf;":                            '\U0001D53C',
	"Epsilon;":                         '\U00000395',
	"Equal;":                           '\U00002A75',
	"EqualTilde;":                      '\U00002242',
	"Equilibrium;":                     '\U000021CC',
	"Escr;":                            '\U00002130',
	"Esim;":                            '\U00002A73',
	"Eta;":                             '\U00000397',
	"Euml;":                            '\U000000CB',
	"Exists;":                          '\U00002203',
	"ExponentialE;":                    '\U00002147',
	"Fcy;":                             '\U00000424',
	"Ffr;":                             '\U0001D509',
	"FilledSmallSquare;":               '\U000025FC',
	"FilledVerySmallSquare;":           '\U000025AA',
	"Fopf;":                            '\U0001D53D',
	"ForAll;":                          '\U00002200',
	"Fouriertrf;":                      '\U00002131',
	"Fscr;":                            '\U00002131',
	"GJcy;":                            '\U00000403',
	"GT;":                              '\U0000003E',
	"Gamma;":                           '\U00000393',
	"Gammad;":                          '\U000003DC',
	"Gbreve;":                          '\U0000011E',
	"Gcedil;":                          '\U00000122',
	"Gcirc;":                           '\U0000011C',
	"Gcy;":                             '\U00000413',
	"Gdot;":                            '\U00000120',
	"Gfr;":                             '\U0001D50A',
	"Gg;":                              '\U000022D9',
	"Gopf;":                            '\U0001D53E',
	"GreaterEqual;":                    '\U00002265',
	"GreaterEqualLess;":                '\U000022DB',
	"GreaterFullEqual;":                '\U00002267',
	"GreaterGreater;":                  '\U00002AA2',
	"GreaterLess;":                     '\U00002277',
	"GreaterSlantEqual;":               '\U00002A7E',
	"GreaterTilde;":                    '\U00002273',
	"Gscr;":                            '\U0001D4A2',
	"Gt;":                              '\U0000226B',
	"HARDcy;":                          '\U0000042A',
	"Hacek;":                           '\U000002C7',
	"Hat;":                             '\U0000005E',
	"Hcirc;":                           '\U00000124',
	"Hfr;":                             '\U0000210C',
	"HilbertSpace;":                    '\U0000210B',
	"Hopf;":                            '\U0000210D',
	"HorizontalLine;":                  '\U00002500',
	"Hscr;":                            '\U0000210B',
	"Hstrok;":                          '\U00000126',
	"HumpDownHump;":                    '\U0000224E',
	"HumpEqual;":                       '\U0000224F',
	"IEcy;":                            '\U00000415',
	"IJlig;":                           '\U00000132',
	"IOcy;":                            '\U00000401',
	"Iacute;":                          '\U000000CD',
	"Icirc;":                           '\U000000CE',
	"Icy;":                             '\U00000418',
	"Idot;":                            '\U00000130',
	"Ifr;":                             '\U00002111',
	"Igrave;":                          '\U000000CC',
	"Im;":                              '\U00002111',
	"Imacr;":                           '\U0000012A',
	"ImaginaryI;":                      '\U00002148',
	"Implies;":                         '\U000021D2',
	"Int;":                             '\U0000222C',
	"Integral;":                        '\U0000222B',
	"Intersection;":                    '\U000022C2',
	"InvisibleComma;":                  '\U00002063',
	"InvisibleTimes;":                  '\U00002062',
	"Iogon;":                           '\U0000012E',
	"Iopf;":                            '\U0001D540',
	"Iota;":                            '\U00000399',
	"Iscr;":                            '\U00002110',
	"Itilde;":                          '\U00000128',
	"Iukcy;":                           '\U00000406',
	"Iuml;":                            '\U000000CF',
	"Jcirc;":                           '\U00000134',
	"Jcy;":                             '\U00000419',
	"Jfr;":                             '\U0001D50D',
	"Jopf;":                            '\U0001D541',
	"Jscr;":                            '\U0001D4A5',
	"Jsercy;":                          '\U00000408',
	"Jukcy;":                           '\U00000404',
	"KHcy;":                            '\U00000425',
	"KJcy;":                            '\U0000040C',
	"Kappa;":                           '\U0000039A',
	"Kcedil;":                          '\U00000136',
	"Kcy;":                             '\U0000041A',
	"Kfr;":                             '\U0001D50E',
	"Kopf;":                            '\U0001D542',
	"Kscr;":                            '\U0001D4A6',
	"LJcy;":                            '\U00000409',
	"LT;":                              '\U0000003C',
	"Lacute;":                          '\U00000139',
	"Lambda;":                          '\U0000039B',
	"Lang;":                            '\U000027EA',
	"Laplacetrf;":                      '\U00002112',
	"Larr;":                            '\U0000219E',
	"Lcaron;":                          '\U0000013D',
	"Lcedil;":                          '\U0000013B',
	"Lcy;":                             '\U0000041B',
	"LeftAngleBracket;":                '\U000027E8',
	"LeftArrow;":                       '\U00002190',
	"LeftArrowBar;":                    '\U000021E4',
	"LeftArrowRightArrow;":             '\U000021C6',
	"LeftCeiling;":                     '\U00002308',
	"LeftDoubleBracket;":               '\U000027E6',
	"LeftDownTeeVector;":               '\U00002961',
	"LeftDownVector;":                  '\U000021C3',
	"LeftDownVectorBar;":               '\U00002959',
	"LeftFloor;":                       '\U0000230A',
	"LeftRightArrow;":                  '\U00002194',
	"LeftRightVector;":                 '\U0000294E',
	"LeftTee;":                         '\U000022A3',
	"LeftTeeArrow;":                    '\U000021A4',
	"LeftTeeVector;":                   '\U0000295A',
	"LeftTriangle;":                    '\U000022B2',
	"LeftTriangleBar;":                 '\U000029CF',
	"LeftTriangleEqual;":               '\U000022B4',
	"LeftUpDownVector;":                '\U00002951',
	"LeftUpTeeVector;":                 '\U00002960',
	"LeftUpVector;":                    '\U000021BF',
	"LeftUpVectorBar;":                 '\U00002958',
	"LeftVector;":                      '\U000021BC',
	"LeftVectorBar;":                   '\U00002952',
	"Leftarrow;":                       '\U000021D0',
	"Leftrightarrow;":                  '\U000021D4',
	"LessEqualGreater;":                '\U000022DA',
	"LessFullEqual;":                   '\U00002266',
	"LessGreater;":                     '\U00002276',
	"LessLess;":                        '\U00002AA1',
	"LessSlantEqual;":                  '\U00002A7D',
	"LessTilde;":                       '\U00002272',
	"Lfr;":                             '\U0001D50F',
	"Ll;":                              '\U000022D8',
	"Lleftarrow;":                      '\U000021DA',
	"Lmidot;":                          '\U0000013F',
	"LongLeftArrow;":                   '\U000027F5',
	"LongLeftRightArrow;":              '\U000027F7',
	"LongRightArrow;":                  '\U000027F6',
	"Longleftarrow;":                   '\U000027F8',
	"Longleftrightarrow;":              '\U000027FA',
	"Longrightarrow;":                  '\U000027F9',
	"Lopf;":                            '\U0001D543',
	"LowerLeftArrow;":                  '\U00002199',
	"LowerRightArrow;":                 '\U00002198',
	"Lscr;":                            '\U00002112',
	"Lsh;":                             '\U000021B0',
	"Lstrok;":                          '\U00000141',
	"Lt;":                              '\U0000226A',
	"Map;":                             '\U00002905',
	"Mcy;":                             '\U0000041C',
	"MediumSpace;":                     '\U0000205F',
	"Mellintrf;":                       '\U00002133',
	"Mfr;":                             '\U0001D510',
	"MinusPlus;":                       '\U00002213',
	"Mopf;":                            '\U0001D544',
	"Mscr;":                            '\U00002133',
	"Mu;":                              '\U0000039C',
	"NJcy;":                            '\U0000040A',
	"Nacute;":                          '\U00000143',
	"Ncaron;":                          '\U00000147',
	"Ncedil;":                          '\U00000145',
	"Ncy;":                             '\U0000041D',
	"NegativeMediumSpace;":             '\U0000200B',
	"NegativeThickSpace;":              '\U0000200B',
	"NegativeThinSpace;":               '\U0000200B',
	"NegativeVeryThinSpace;":           '\U0000200B',
	"NestedGreaterGreater;":            '\U0000226B',
	"NestedLessLess;":                  '\U0000226A',
	"NewLine;":                         '\U0000000A',
	"Nfr;":                             '\U0001D511',
	"NoBreak;":                         '\U00002060',
	"NonBreakingSpace;":                '\U000000A0',
	"Nopf;":                            '\U00002115',
	"Not;":                             '\U00002AEC',
	"NotCongruent;":                    '\U00002262',
	"NotCupCap;":                       '\U0000226D',
	"NotDoubleVerticalBar;":            '\U00002226',
	"NotElement;":                      '\U00002209',
	"NotEqual;":                        '\U00002260',
	"NotExists;":                       '\U00002204',
	"NotGreater;":                      '\U0000226F',
	"NotGreaterEqual;":                 '\U00002271',
	"NotGreaterLess;":                  '\U00002279',
	"NotGreaterTilde;":                 '\U00002275',
	"NotLeftTriangle;":                 '\U000022EA',
	"NotLeftTriangleEqual;":            '\U000022EC',
	"NotLess;":                         '\U0000226E',
	"NotLessEqual;":                    '\U00002270',
	"NotLessGreater;":                  '\U00002278',
	"NotLessTilde;":                    '\U00002274',
	"NotPrecedes;":                     '\U00002280',
	"NotPrecedesSlantEqual;":           '\U000022E0',
	"NotReverseElement;":               '\U0000220C',
	"NotRightTriangle;":                '\U000022EB',
	"NotRightTriangleEqual;":           '\U000022ED',
	"NotSquareSubsetEqual;":            '\U000022E2',
	"NotSquareSupersetEqual;":          '\U000022E3',
	"NotSubsetEqual;":                  '\U00002288',
	"NotSucceeds;":                     '\U00002281',
	"NotSucceedsSlantEqual;":           '\U000022E1',
	"NotSupersetEqual;":                '\U00002289',
	"NotTilde;":                        '\U00002241',
	"NotTildeEqual;":                   '\U00002244',
	"NotTildeFullEqual;":               '\U00002247',
	"NotTildeTilde;":                   '\U00002249',
	"NotVerticalBar;":                  '\U00002224',
	"Nscr;":                            '\U0001D4A9',
	"Ntilde;":                          '\U000000D1',
	"Nu;":                              '\U0000039D',
	"OElig;":                           '\U00000152',
	"Oacute;":                          '\U000000D3',
	"Ocirc;":                           '\U000000D4',
	"Ocy;":                             '\U0000041E',
	"Odblac;":                          '\U00000150',
	"Ofr;":                             '\U0001D512',
	"Ograve;":                          '\U000000D2',
	"Omacr;":                           '\U0000014C',
	"Omega;":                           '\U000003A9',
	"Omicron;":                         '\U0000039F',
	"Oopf;":                            '\U0001D546',
	"OpenCurlyDoubleQuote;":            '\U0000201C',
	"OpenCurlyQuote;":                  '\U00002018',
	"Or;":                              '\U00002A54',
	"Oscr;":                            '\U0001D4AA',
	"Oslash;":                          '\U000000D8',
	"Otilde;":                          '\U000000D5',
	"Otimes;":                          '\U00002A37',
	"Ouml;":                            '\U000000D6',
	"OverBar;":                         '\U0000203E',
	"OverBrace;":                       '\U000023DE',
	"OverBracket;":                     '\U000023B4',
	"OverParenthesis;":                 '\U000023DC',
	"PartialD;":                        '\U00002202',
	"Pcy;":                             '\U0000041F',
	"Pfr;":                             '\U0001D513',
	"Phi;":                             '\U000003A6',
	"Pi;":                              '\U000003A0',
	"PlusMinus;":                       '\U000000B1',
	"Poincareplane;":                   '\U0000210C',
	"Popf;":                            '\U00002119',
	"Pr;":                              '\U00002ABB',
	"Precedes;":                        '\U0000227A',
	"PrecedesEqual;":                   '\U00002AAF',
	"PrecedesSlantEqual;":              '\U0000227C',
	"PrecedesTilde;":                   '\U0000227E',
	"Prime;":                           '\U00002033',
	"Product;":                         '\U0000220F',
	"Proportion;":                      '\U00002237',
	"Proportional;":                    '\U0000221D',
	"Pscr;":                            '\U0001D4AB',
	"Psi;":                             '\U000003A8',
	"QUOT;":                            '\U00000022',
	"Qfr;":                             '\U0001D514',
	"Qopf;":                            '\U0000211A',
	"Qscr;":                            '\U0001D4AC',
	"RBarr;":                           '\U00002910',
	"REG;":                             '\U000000AE',
	"Racute;":                          '\U00000154',
	"Rang;":                            '\U000027EB',
	"Rarr;":                            '\U000021A0',
	"Rarrtl;":                          '\U00002916',
	"Rcaron;":                          '\U00000158',
	"Rcedil;":                          '\U00000156',
	"Rcy;":                             '\U00000420',
	"Re;":                              '\U0000211C',
	"ReverseElement;":                  '\U0000220B',
	"ReverseEquilibrium;":              '\U000021CB',
	"ReverseUpEquilibrium;":            '\U0000296F',
	"Rfr;":                             '\U0000211C',
	"Rho;":                             '\U000003A1',
	"RightAngleBracket;":               '\U000027E9',
	"RightArrow;":                      '\U00002192',
	"RightArrowBar;":                   '\U000021E5',
	"RightArrowLeftArrow;":             '\U000021C4',
	"RightCeiling;":                    '\U00002309',
	"RightDoubleBracket;":              '\U000027E7',
	"RightDownTeeVector;":              '\U0000295D',
	"RightDownVector;":                 '\U000021C2',
	"RightDownVectorBar;":              '\U00002955',
	"RightFloor;":                      '\U0000230B',
	"RightTee;":                        '\U000022A2',
	"RightTeeArrow;":                   '\U000021A6',
	"RightTeeVector;":                  '\U0000295B',
	"RightTriangle;":                   '\U000022B3',
	"RightTriangleBar;":                '\U000029D0',
	"RightTriangleEqual;":              '\U000022B5',
	"RightUpDownVector;":               '\U0000294F',
	"RightUpTeeVector;":                '\U0000295C',
	"RightUpVector;":                   '\U000021BE',
	"RightUpVectorBar;":                '\U00002954',
	"RightVector;":                     '\U000021C0',
	"RightVectorBar;":                  '\U00002953',
	"Rightarrow;":                      '\U000021D2',
	"Ropf;":                            '\U0000211D',
	"RoundImplies;":                    '\U00002970',
	"Rrightarrow;":                     '\U000021DB',
	"Rscr;":                            '\U0000211B',
	"Rsh;":                             '\U000021B1',
	"RuleDelayed;":                     '\U000029F4',
	"SHCHcy;":                          '\U00000429',
	"SHcy;":                            '\U00000428',
	"SOFTcy;":                          '\U0000042C',
	"Sacute;":                          '\U0000015A',
	"Sc;":                              '\U00002ABC',
	"Scaron;":                          '\U00000160',
	"Scedil;":                          '\U0000015E',
	"Scirc;":                           '\U0000015C',
	"Scy;":                             '\U00000421',
	"Sfr;":                             '\U0001D516',
	"ShortDownArrow;":                  '\U00002193',
	"ShortLeftArrow;":                  '\U00002190',
	"ShortRightArrow;":                 '\U00002192',
	"ShortUpArrow;":                    '\U00002191',
	"Sigma;":                           '\U000003A3',
	"SmallCircle;":                     '\U00002218',
	"Sopf;":                            '\U0001D54A',
	"Sqrt;":                            '\U0000221A',
	"Square;":                          '\U000025A1',
	"SquareIntersection;":              '\U00002293',
	"SquareSubset;":                    '\U0000228F',
	"SquareSubsetEqual;":               '\U00002291',
	"SquareSuperset;":                  '\U00002290',
	"SquareSupersetEqual;":             '\U00002292',
	"SquareUnion;":                     '\U00002294',
	"Sscr;":                            '\U0001D4AE',
	"Star;":                            '\U000022C6',
	"Sub;":                             '\U000022D0',
	"Subset;":                          '\U000022D0',
	"SubsetEqual;":                     '\U00002286',
	"Succeeds;":                        '\U0000227B',
	"SucceedsEqual;":                   '\U00002AB0',
	"SucceedsSlantEqual;":              '\U0000227D',
	"SucceedsTilde;":                   '\U0000227F',
	"SuchThat;":                        '\U0000220B',
	"Sum;":                             '\U00002211',
	"Sup;":                             '\U000022D1',
	"Superset;":                        '\U00002283',
	"SupersetEqual;":                   '\U00002287',
	"Supset;":                          '\U000022D1',
	"THORN;":                           '\U000000DE',
	"TRADE;":                           '\U00002122',
	"TSHcy;":                           '\U0000040B',
	"TScy;":                            '\U00000426',
	"Tab;":                             '\U00000009',
	"Tau;":                             '\U000003A4',
	"Tcaron;":                          '\U00000164',
	"Tcedil;":                          '\U00000162',
	"Tcy;":                             '\U00000422',
	"Tfr;":                             '\U0001D517',
	"Therefore;":                       '\U00002234',
	"Theta;":                           '\U00000398',
	"ThinSpace;":                       '\U00002009',
	"Tilde;":                           '\U0000223C',
	"TildeEqual;":                      '\U00002243',
	"TildeFullEqual;":                  '\U00002245',
	"TildeTilde;":                      '\U00002248',
	"Topf;":                            '\U0001D54B',
	"TripleDot;":                       '\U000020DB',
	"Tscr;":                            '\U0001D4AF',
	"Tstrok;":                          '\U00000166',
	"Uacute;":                          '\U000000DA',
	"Uarr;":                            '\U0000219F',
	"Uarrocir;":                        '\U00002949',
	"Ubrcy;":                           '\U0000040E',
	"Ubreve;":                          '\U0000016C',
	"Ucirc;":                           '\U000000DB',
	"Ucy;":                             '\U00000423',
	"Udblac;":                          '\U00000170',
	"Ufr;":                             '\U0001D518',
	"Ugrave;":                          '\U000000D9',
	"Umacr;":                           '\U0000016A',
	"UnderBar;":                        '\U0000005F',
	"UnderBrace;":                      '\U000023DF',
	"UnderBracket;":                    '\U000023B5',
	"UnderParenthesis;":                '\U000023DD',
	"Union;":                           '\U000022C3',
	"UnionPlus;":                       '\U0000228E',
	"Uogon;":                           '\U00000172',
	"Uopf;":                            '\U0001D54C',
	"UpArrow;":                         '\U00002191',
	"UpArrowBar;":                      '\U00002912',
	"UpArrowDownArrow;":                '\U000021C5',
	"UpDownArrow;":                     '\U00002195',
	"UpEquilibrium;":                   '\U0000296E',
	"UpTee;":                           '\U000022A5',
	"UpTeeArrow;":                      '\U000021A5',
	"Uparrow;":                         '\U000021D1',
	"Updownarrow;":                     '\U000021D5',
	"UpperLeftArrow;":                  '\U00002196',
	"UpperRightArrow;":                 '\U00002197',
	"Upsi;":                            '\U000003D2',
	"Upsilon;":                         '\U000003A5',
	"Uring;":                           '\U0000016E',
	"Uscr;":                            '\U0001D4B0',
	"Utilde;":                          '\U00000168',
	"Uuml;":                            '\U000000DC',
	"VDash;":                           '\U000022AB',
	"Vbar;":                            '\U00002AEB',
	"Vcy;":                             '\U00000412',
	"Vdash;":                           '\U000022A9',
	"Vdashl;":                          '\U00002AE6',
	"Vee;":                             '\U000022C1',
	"Verbar;":                          '\U00002016',
	"Vert;":                            '\U00002016',
	"VerticalBar;":                     '\U00002223',
	"VerticalLine;":                    '\U0000007C',
	"VerticalSeparator;":               '\U00002758',
	"VerticalTilde;":                   '\U00002240',
	"VeryThinSpace;":                   '\U0000200A',
	"Vfr;":                             '\U0001D519',
	"Vopf;":                            '\U0001D54D',
	"Vscr;":                            '\U0001D4B1',
	"Vvdash;":                          '\U000022AA',
	"Wcirc;":                           '\U00000174',
	"Wedge;":                           '\U000022C0',
	"Wfr;":                             '\U0001D51A',
	"Wopf;":                            '\U0001D54E',
	"Wscr;":                            '\U0001D4B2',
	"Xfr;":                             '\U0001D51B',
	"Xi;":                              '\U0000039E',
	"Xopf;":                            '\U0001D54F',
	"Xscr;":                            '\U0001D4B3',
	"YAcy;":                            '\U0000042F',
	"YIcy;":                            '\U00000407',
	"YUcy;":                            '\U0000042E',
	"Yacute;":                          '\U000000DD',
	"Ycirc;":                           '\U00000176',
	"Ycy;":                             '\U0000042B',
	"Yfr;":                             '\U0001D51C',
	"Yopf;":                            '\U0001D550',
	"Yscr;":                            '\U0001D4B4',
	"Yuml;":                            '\U00000178',
	"ZHcy;":                            '\U00000416',
	"Zacute;":                          '\U00000179',
	"Zcaron;":                          '\U0000017D',
	"Zcy;":                             '\U00000417',
	"Zdot;":                            '\U0000017B',
	"ZeroWidthSpace;":                  '\U0000200B',
	"Zeta;":                            '\U00000396',
	"Zfr;":                             '\U00002128',
	"Zopf;":                            '\U00002124',
	"Zscr;":                            '\U0001D4B5',
	"aacute;":                          '\U000000E1',
	"abreve;":                          '\U00000103',
	"ac;":                              '\U0000223E',
	"acd;":                             '\U0000223F',
	"acirc;":                           '\U000000E2',
	"acute;":                           '\U000000B4',
	"acy;":                             '\U00000430',
	"aelig;":                           '\U000000E6',
	"af;":                              '\U00002061',
	"afr;":                             '\U0001D51E',
	"agrave;":                          '\U000000E0',
	"alefsym;":                         '\U00002135',
	"aleph;":                           '\U00002135',
	"alpha;":                           '\U000003B1',
	"amacr;":                           '\U00000101',
	"amalg;":                           '\U00002A3F',
	"amp;":                             '\U00000026',
	"and;":                             '\U00002227',
	"andand;":                          '\U00002A55',
	"andd;":                            '\U00002A5C',
	"andslope;":                        '\U00002A58',
	"andv;":                            '\U00002A5A',
	"ang;":                             '\U00002220',
	"ange;":                            '\U000029A4',
	"angle;":                           '\U00002220',
	"angmsd;":                          '\U00002221',
	"angmsdaa;":                        '\U000029A8',
	"angmsdab;":                        '\U000029A9',
	"angmsdac;":                        '\U000029AA',
	"angmsdad;":                        '\U000029AB',
	"angmsdae;":                        '\U000029AC',
	"angmsdaf;":                        '\U000029AD',
	"angmsdag;":                        '\U000029AE',
	"angmsdah;":                        '\U000029AF',
	"angrt;":                           '\U0000221F',
	"angrtvb;":                         '\U000022BE',
	"angrtvbd;":                        '\U0000299D',
	"angsph;":                          '\U00002222',
	"angst;":                           '\U000000C5',
	"angzarr;":                         '\U0000237C',
	"aogon;":                           '\U00000105',
	"aopf;":                            '\U0001D552',
	"ap;":                              '\U00002248',
	"apE;":                             '\U00002A70',
	"apacir;":                          '\U00002A6F',
	"ape;":                             '\U0000224A',
	"apid;":                            '\U0000224B',
	"apos;":                            '\U00000027',
	"approx;":                          '\U00002248',
	"approxeq;":                        '\U0000224A',
	"aring;":                           '\U000000E5',
	"ascr;":                            '\U0001D4B6',
	"ast;":                             '\U0000002A',
	"asymp;":                           '\U00002248',
	"asympeq;":                         '\U0000224D',
	"atilde;":                          '\U000000E3',
	"auml;":                            '\U000000E4',
	"awconint;":                        '\U00002233',
	"awint;":                           '\U00002A11',
	"bNot;":                            '\U00002AED',
	"backcong;":                        '\U0000224C',
	"backepsilon;":                     '\U000003F6',
	"backprime;":                       '\U00002035',
	"backsim;":                         '\U0000223D',
	"backsimeq;":                       '\U000022CD',
	"barvee;":                          '\U000022BD',
	"barwed;":                          '\U00002305',
	"barwedge;":                        '\U00002305',
	"bbrk;":                            '\U000023B5',
	"bbrktbrk;":                        '\U000023B6',
	"bcong;":                           '\U0000224C',
	"bcy;":                             '\U00000431',
	"bdquo;":                           '\U0000201E',
	"becaus;":                          '\U00002235',
	"because;":                         '\U00002235',
	"bemptyv;":                         '\U000029B0',
	"bepsi;":                           '\U000003F6',
	"bernou;":                          '\U0000212C',
	"beta;":                            '\U000003B2',
	"beth;":                            '\U00002136',
	"between;":                         '\U0000226C',
	"bfr;":                             '\U0001D51F',
	"bigcap;":                          '\U000022C2',
	"bigcirc;":                         '\U000025EF',
	"bigcup;":                          '\U000022C3',
	"bigodot;":                         '\U00002A00',
	"bigoplus;":                        '\U00002A01',
	"bigotimes;":                       '\U00002A02',
	"bigsqcup;":                        '\U00002A06',
	"bigstar;":                         '\U00002605',
	"bigtriangledown;":                 '\U000025BD',
	"bigtriangleup;":                   '\U000025B3',
	"biguplus;":                        '\U00002A04',
	"bigvee;":                          '\U000022C1',
	"bigwedge;":                        '\U000022C0',
	"bkarow;":                          '\U0000290D',
	"blacklozenge;":                    '\U000029EB',
	"blacksquare;":                     '\U000025AA',
	"blacktriangle;":                   '\U000025B4',
	"blacktriangledown;":               '\U000025BE',
	"blacktriangleleft;":               '\U000025C2',
	"blacktriangleright;":              '\U000025B8',
	"blank;":                           '\U00002423',
	"blk12;":                           '\U00002592',
	"blk14;":                           '\U00002591',
	"blk34;":                           '\U00002593',
	"block;":                           '\U00002588',
	"bnot;":                            '\U00002310',
	"bopf;":                            '\U0001D553',
	"bot;":                             '\U000022A5',
	"bottom;":                          '\U000022A5',
	"bowtie;":                          '\U000022C8',
	"boxDL;":                           '\U00002557',
	"boxDR;":                           '\U00002554',
	"boxDl;":                           '\U00002556',
	"boxDr;":                           '\U00002553',
	"boxH;":                            '\U00002550',
	"boxHD;":                           '\U00002566',
	"boxHU;":                           '\U00002569',
	"boxHd;":                           '\U00002564',
	"boxHu;":                           '\U00002567',
	"boxUL;":                           '\U0000255D',
	"boxUR;":                           '\U0000255A',
	"boxUl;":                           '\U0000255C',
	"boxUr;":                           '\U00002559',
	"boxV;":                            '\U00002551',
	"boxVH;":                           '\U0000256C',
	"boxVL;":                           '\U00002563',
	"boxVR;":                           '\U00002560',
	"boxVh;":                           '\U0000256B',
	"boxVl;":                           '\U00002562',
	"boxVr;":                           '\U0000255F',
	"boxbox;":                          '\U000029C9',
	"boxdL;":                           '\U00002555',
	"boxdR;":                           '\U00002552',
	"boxdl;":                           '\U00002510',
	"boxdr;":                           '\U0000250C',
	"boxh;":                            '\U00002500',
	"boxhD;":                           '\U00002565',
	"boxhU;":                           '\U00002568',
	"boxhd;":                           '\U0000252C',
	"boxhu;":                           '\U00002534',
	"boxminus;":                        '\U0000229F',
	"boxplus;":                         '\U0000229E',
	"boxtimes;":                        '\U000022A0',
	"boxuL;":                           '\U0000255B',
	"boxuR;":                           '\U00002558',
	"boxul;":                           '\U00002518',
	"boxur;":                           '\U00002514',
	"boxv;":                            '\U00002502',
	"boxvH;":                           '\U0000256A',
	"boxvL;":                           '\U00002561',
	"boxvR;":                           '\U0000255E',
	"boxvh;":                           '\U0000253C',
	"boxvl;":                           '\U00002524',
	"boxvr;":                           '\U0000251C',
	"bprime;":                          '\U00002035',
	"breve;":                           '\U000002D8',
	"brvbar;":                          '\U000000A6',
	"bscr;":                            '\U0001D4B7',
	"bsemi;":                           '\U0000204F',
	"bsim;":                            '\U0000223D',
	"bsime;":                           '\U000022CD',
	"bsol;":                            '\U0000005C',
	"bsolb;":                           '\U000029C5',
	"bsolhsub;":                        '\U000027C8',
	"bull;":                            '\U00002022',
	"bullet;":                          '\U00002022',
	"bump;":                            '\U0000224E',
	"bumpE;":                           '\U00002AAE',
	"bumpe;":                           '\U0000224F',
	"bumpeq;":                          '\U0000224F',
	"cacute;":                          '\U00000107',
	"cap;":                             '\U00002229',
	"capand;":                          '\U00002A44',
	"capbrcup;":                        '\U00002A49',
	"capcap;":                          '\U00002A4B',
	"capcup;":                          '\U00002A47',
	"capdot;":                          '\U00002A40',
	"caret;":                           '\U00002041',
	"caron;":                           '\U000002C7',
	"ccaps;":                           '\U00002A4D',
	"ccaron;":                          '\U0000010D',
	"ccedil;":                          '\U000000E7',
	"ccirc;":                           '\U00000109',
	"ccups;":                           '\U00002A4C',
	"ccupssm;":                         '\U00002A50',
	"cdot;":                            '\U0000010B',
	"cedil;":                           '\U000000B8',
	"cemptyv;":                         '\U000029B2',
	"cent;":                            '\U000000A2',
	"centerdot;":                       '\U000000B7',
	"cfr;":                             '\U0001D520',
	"chcy;":                            '\U00000447',
	"check;":                           '\U00002713',
	"checkmark;":                       '\U00002713',
	"chi;":                             '\U000003C7',
	"cir;":                             '\U000025CB',
	"cirE;":                            '\U000029C3',
	"circ;":                            '\U000002C6',
	"circeq;":                          '\U00002257',
	"circlearrowleft;":                 '\U000021BA',
	"circlearrowright;":                '\U000021BB',
	"circledR;":                        '\U000000AE',
	"circledS;":                        '\U000024C8',
	"circledast;":                      '\U0000229B',
	"circledcirc;":                     '\U0000229A',
	"circleddash;":                     '\U0000229D',
	"cire;":                            '\U00002257',
	"cirfnint;":                        '\U00002A10',
	"cirmid;":                          '\U00002AEF',
	"cirscir;":                         '\U000029C2',
	"clubs;":                           '\U00002663',
	"clubsuit;":                        '\U00002663',
	"colon;":                           '\U0000003A',
	"colone;":                          '\U00002254',
	"coloneq;":                         '\U00002254',
	"comma;":                           '\U0000002C',
	"commat;":                          '\U00000040',
	"comp;":                            '\U00002201',
	"compfn;":                          '\U00002218',
	"complement;":                      '\U00002201',
	"complexes;":                       '\U00002102',
	"cong;":                            '\U00002245',
	"congdot;":                         '\U00002A6D',
	"conint;":                          '\U0000222E',
	"copf;":                            '\U0001D554',
	"coprod;":                          '\U00002210',
	"copy;":                            '\U000000A9',
	"copysr;":                          '\U00002117',
	"crarr;":                           '\U000021B5',
	"cross;":                           '\U00002717',
	"cscr;":                            '\U0001D4B8',
	"csub;":                            '\U00002ACF',
	"csube;":                           '\U00002AD1',
	"csup;":                            '\U00002AD0',
	"csupe;":                           '\U00002AD2',
	"ctdot;":                           '\U000022EF',
	"cudarrl;":                         '\U00002938',
	"cudarrr;":                         '\U00002935',
	"cuepr;":                           '\U000022DE',
	"cuesc;":                           '\U000022DF',
	"cularr;":                          '\U000021B6',
	"cularrp;":                         '\U0000293D',
	"cup;":                             '\U0000222A',
	"cupbrcap;":                        '\U00002A48',
	"cupcap;":                          '\U00002A46',
	"cupcup;":                          '\U00002A4A',
	"cupdot;":                          '\U0000228D',
	"cupor;":                           '\U00002A45',
	"curarr;":                          '\U000021B7',
	"curarrm;":                         '\U0000293C',
	"curlyeqprec;":                     '\U000022DE',
	"curlyeqsucc;":                     '\U000022DF',
	"curlyvee;":                        '\U000022CE',
	"curlywedge;":                      '\U000022CF',
	"curren;":                          '\U000000A4',
	"curvearrowleft;":                  '\U000021B6',
	"curvearrowright;":                 '\U000021B7',
	"cuvee;":                           '\U000022CE',
	"cuwed;":                           '\U000022CF',
	"cwconint;":                        '\U00002232',
	"cwint;":                           '\U00002231',
	"cylcty;":                          '\U0000232D',
	"dArr;":                            '\U000021D3',
	"dHar;":                            '\U00002965',
	"dagger;":                          '\U00002020',
	"daleth;":                          '\U00002138',
	"darr;":                            '\U00002193',
	"dash;":                            '\U00002010',
	"dashv;":                           '\U000022A3',
	"dbkarow;":                         '\U0000290F',
	"dblac;":                           '\U000002DD',
	"dcaron;":                          '\U0000010F',
	"dcy;":                             '\U00000434',
	"dd;":                              '\U00002146',
	"ddagger;":                         '\U00002021',
	"ddarr;":                           '\U000021CA',
	"ddotseq;":                         '\U00002A77',
	"deg;":                             '\U000000B0',
	"delta;":                           '\U000003B4',
	"demptyv;":                         '\U000029B1',
	"dfisht;":                          '\U0000297F',
	"dfr;":                             '\U0001D521',
	"dharl;":                           '\U000021C3',
	"dharr;":                           '\U000021C2',
	"diam;":                            '\U000022C4',
	"diamond;":                         '\U000022C4',
	"diamondsuit;":                     '\U00002666',
	"diams;":                           '\U00002666',
	"die;":                             '\U000000A8',
	"digamma;":                         '\U000003DD',
	"disin;":                           '\U000022F2',
	"div;":                             '\U000000F7',
	"divide;":                          '\U000000F7',
	"divideontimes;":                   '\U000022C7',
	"divonx;":                          '\U000022C7',
	"djcy;":                            '\U00000452',
	"dlcorn;":                          '\U0000231E',
	"dlcrop;":                          '\U0000230D',
	"dollar;":                          '\U00000024',
	"dopf;":                            '\U0001D555',
	"dot;":                             '\U000002D9',
	"doteq;":                           '\U00002250',
	"doteqdot;":                        '\U00002251',
	"dotminus;":                        '\U00002238',
	"dotplus;":                         '\U00002214',
	"dotsquare;":                       '\U000022A1',
	"doublebarwedge;":                  '\U00002306',
	"downarrow;":                       '\U00002193',
	"downdownarrows;":                  '\U000021CA',
	"downharpoonleft;":                 '\U000021C3',
	"downharpoonright;":                '\U000021C2',
	"drbkarow;":                        '\U00002910',
	"drcorn;":                          '\U0000231F',
	"drcrop;":                          '\U0000230C',
	"dscr;":                            '\U0001D4B9',
	"dscy;":                            '\U00000455',
	"dsol;":                            '\U000029F6',
	"dstrok;":                          '\U00000111',
	"dtdot;":                           '\U000022F1',
	"dtri;":                            '\U000025BF',
	"dtrif;":                           '\U000025BE',
	"duarr;":                           '\U000021F5',
	"duhar;":                           '\U0000296F',
	"dwangle;":                         '\U000029A6',
	"dzcy;":                            '\U0000045F',
	"dzigrarr;":                        '\U000027FF',
	"eDDot;":                           '\U00002A77',
	"eDot;":                            '\U00002251',
	"eacute;":                          '\U000000E9',
	"easter;":                          '\U00002A6E',
	"ecaron;":                          '\U0000011B',
	"ecir;":                            '\U00002256',
	"ecirc;":                           '\U000000EA',
	"ecolon;":                          '\U00002255',
	"ecy;":                             '\U0000044D',
	"edot;":                            '\U00000117',
	"ee;":                              '\U00002147',
	"efDot;":                           '\U00002252',
	"efr;":                             '\U0001D522',
	"eg;":                              '\U00002A9A',
	"egrave;":                          '\U000000E8',
	"egs;":                             '\U00002A96',
	"egsdot;":                          '\U00002A98',
	"el;":                              '\U00002A99',
	"elinters;":                        '\U000023E7',
	"ell;":                             '\U00002113',
	"els;":                             '\U00002A95',
	"elsdot;":                          '\U00002A97',
	"emacr;":                           '\U00000113',
	"empty;":                           '\U00002205',
	"emptyset;":                        '\U00002205',
	"emptyv;":                          '\U00002205',
	"emsp;":                            '\U00002003',
	"emsp13;":                          '\U00002004',
	"emsp14;":                          '\U00002005',
	"eng;":                             '\U0000014B',
	"ensp;":                            '\U00002002',
	"eogon;":                           '\U00000119',
	"eopf;":                            '\U0001D556',
	"epar;":                            '\U000022D5',
	"eparsl;":                          '\U000029E3',
	"eplus;":                           '\U00002A71',
	"epsi;":                            '\U000003B5',
	"epsilon;":                         '\U000003B5',
	"epsiv;":                           '\U000003F5',
	"eqcirc;":                          '\U00002256',
	"eqcolon;":                         '\U00002255',
	"eqsim;":                           '\U00002242',
	"eqslantgtr;":                      '\U00002A96',
	"eqslantless;":                     '\U00002A95',
	"equals;":                          '\U0000003D',
	"equest;":                          '\U0000225F',
	"equiv;":                           '\U00002261',
	"equivDD;":                         '\U00002A78',
	"eqvparsl;":                        '\U000029E5',
	"erDot;":                           '\U00002253',
	"erarr;":                           '\U00002971',
	"escr;":                            '\U0000212F',
	"esdot;":                           '\U00002250',
	"esim;":                            '\U00002242',
	"eta;":                             '\U000003B7',
	"eth;":                             '\U000000F0',
	"euml;":                            '\U000000EB',
	"euro;":                            '\U000020AC',
	"excl;":                            '\U00000021',
	"exist;":                           '\U00002203',
	"expectation;":                     '\U00002130',
	"exponentiale;":                    '\U00002147',
	"fallingdotseq;":                   '\U00002252',
	"fcy;":                             '\U00000444',
	"female;":                          '\U00002640',
	"ffilig;":                          '\U0000FB03',
	"fflig;":                           '\U0000FB00',
	"ffllig;":                          '\U0000FB04',
	"ffr;":                             '\U0001D523',
	"filig;":                           '\U0000FB01',
	"flat;":                            '\U0000266D',
	"fllig;":                           '\U0000FB02',
	"fltns;":                           '\U000025B1',
	"fnof;":                            '\U00000192',
	"fopf;":                            '\U0001D557',
	"forall;":                          '\U00002200',
	"fork;":                            '\U000022D4',
	"forkv;":                           '\U00002AD9',
	"fpartint;":                        '\U00002A0D',
	"frac12;":                          '\U000000BD',
	"frac13;":                          '\U00002153',
	"frac14;":                          '\U000000BC',
	"frac15;":                          '\U00002155',
	"frac16;":                          '\U00002159',
	"frac18;":                          '\U0000215B',
	"frac23;":                          '\U00002154',
	"frac25;":                          '\U00002156',
	"frac34;":                          '\U000000BE',
	"frac35;":                          '\U00002157',
	"frac38;":                          '\U0000215C',
	"frac45;":                          '\U00002158',
	"frac56;":                          '\U0000215A',
	"frac58;":                          '\U0000215D',
	"frac78;":                          '\U0000215E',
	"frasl;":                           '\U00002044',
	"frown;":                           '\U00002322',
	"fscr;":                            '\U0001D4BB',
	"gE;":                              '\U00002267',
	"gEl;":                             '\U00002A8C',
	"gacute;":                          '\U000001F5',
	"gamma;":                           '\U000003B3',
	"gammad;":                          '\U000003DD',
	"gap;":                             '\U00002A86',
	"gbreve;":                          '\U0000011F',
	"gcirc;":                           '\U0000011D',
	"gcy;":                             '\U00000433',
	"gdot;":                            '\U00000121',
	"ge;":                              '\U00002265',
	"gel;":                             '\U000022DB',
	"geq;":                             '\U00002265',
	"geqq;":                            '\U00002267',
	"geqslant;":                        '\U00002A7E',
	"ges;":                             '\U00002A7E',
	"gescc;":                           '\U00002AA9',
	"gesdot;":                          '\U00002A80',
	"gesdoto;":                         '\U00002A82',
	"gesdotol;":                        '\U00002A84',
	"gesles;":                          '\U00002A94',
	"gfr;":                             '\U0001D524',
	"gg;":                              '\U0000226B',
	"ggg;":                             '\U000022D9',
	"gimel;":                           '\U00002137',
	"gjcy;":                            '\U00000453',
	"gl;":                              '\U00002277',
	"glE;":                             '\U00002A92',
	"gla;":                             '\U00002AA5',
	"glj;":                             '\U00002AA4',
	"gnE;":                             '\U00002269',
	"gnap;":                            '\U00002A8A',
	"gnapprox;":                        '\U00002A8A',
	"gne;":                             '\U00002A88',
	"gneq;":                            '\U00002A88',
	"gneqq;":                           '\U00002269',
	"gnsim;":                           '\U000022E7',
	"gopf;":                            '\U0001D558',
	"grave;":                           '\U00000060',
	"gscr;":                            '\U0000210A',
	"gsim;":                            '\U00002273',
	"gsime;":                           '\U00002A8E',
	"gsiml;":                           '\U00002A90',
	"gt;":                              '\U0000003E',
	"gtcc;":                            '\U00002AA7',
	"gtcir;":                           '\U00002A7A',
	"gtdot;":                           '\U000022D7',
	"gtlPar;":                          '\U00002995',
	"gtquest;":                         '\U00002A7C',
	"gtrapprox;":                       '\U00002A86',
	"gtrarr;":                          '\U00002978',
	"gtrdot;":                          '\U000022D7',
	"gtreqless;":                       '\U000022DB',
	"gtreqqless;":                      '\U00002A8C',
	"gtrless;":                         '\U00002277',
	"gtrsim;":                          '\U00002273',
	"hArr;":                            '\U000021D4',
	"hairsp;":                          '\U0000200A',
	"half;":                            '\U000000BD',
	"hamilt;":                          '\U0000210B',
	"hardcy;":                          '\U0000044A',
	"harr;":                            '\U00002194',
	"harrcir;":                         '\U00002948',
	"harrw;":                           '\U000021AD',
	"hbar;":                            '\U0000210F',
	"hcirc;":                           '\U00000125',
	"hearts;":                          '\U00002665',
	"heartsuit;":                       '\U00002665',
	"hellip;":                          '\U00002026',
	"hercon;":                          '\U000022B9',
	"hfr;":                             '\U0001D525',
	"hksearow;":                        '\U00002925',
	"hkswarow;":                        '\U00002926',
	"hoarr;":                           '\U000021FF',
	"homtht;":                          '\U0000223B',
	"hookleftarrow;":                   '\U000021A9',
	"hookrightarrow;":                  '\U000021AA',
	"hopf;":                            '\U0001D559',
	"horbar;":                          '\U00002015',
	"hscr;":                            '\U0001D4BD',
	"hslash;":                          '\U0000210F',
	"hstrok;":                          '\U00000127',
	"hybull;":                          '\U00002043',
	"hyphen;":                          '\U00002010',
	"iacute;":                          '\U000000ED',
	"ic;":                              '\U00002063',
	"icirc;":                           '\U000000EE',
	"icy;":                             '\U00000438',
	"iecy;":                            '\U00000435',
	"iexcl;":                           '\U000000A1',
	"iff;":                             '\U000021D4',
	"ifr;":                             '\U0001D526',
	"igrave;":                          '\U000000EC',
	"ii;":                              '\U00002148',
	"iiiint;":                          '\U00002A0C',
	"iiint;":                           '\U0000222D',
	"iinfin;":                          '\U000029DC',
	"iiota;":                           '\U00002129',
	"ijlig;":                           '\U00000133',
	"imacr;":                           '\U0000012B',
	"image;":                           '\U00002111',
	"imagline;":                        '\U00002110',
	"imagpart;":                        '\U00002111',
	"imath;":                           '\U00000131',
	"imof;":                            '\U000022B7',
	"imped;":                           '\U000001B5',
	"in;":                              '\U00002208',
	"incare;":                          '\U00002105',
	"infin;":                           '\U0000221E',
	"infintie;":                        '\U000029DD',
	"inodot;":                          '\U00000131',
	"int;":                             '\U0000222B',
	"intcal;":                          '\U000022BA',
	"integers;":                        '\U00002124',
	"intercal;":                        '\U000022BA',
	"intlarhk;":                        '\U00002A17',
	"intprod;":                         '\U00002A3C',
	"iocy;":                            '\U00000451',
	"iogon;":                           '\U0000012F',
	"iopf;":                            '\U0001D55A',
	"iota;":                            '\U000003B9',
	"iprod;":                           '\U00002A3C',
	"iquest;":                          '\U000000BF',
	"iscr;":                            '\U0001D4BE',
	"isin;":                            '\U00002208',
	"isinE;":                           '\U000022F9',
	"isindot;":                         '\U000022F5',
	"isins;":                           '\U000022F4',
	"isinsv;":                          '\U000022F3',
	"isinv;":                           '\U00002208',
	"it;":                              '\U00002062',
	"itilde;":                          '\U00000129',
	"iukcy;":                           '\U00000456',
	"iuml;":                            '\U000000EF',
	"jcirc;":                           '\U00000135',
	"jcy;":                             '\U00000439',
	"jfr;":                             '\U0001D527',
	"jmath;":                           '\U00000237',
	"jopf;":                            '\U0001D55B',
	"jscr;":                            '\U0001D4BF',
	"jsercy;":                          '\U00000458',
	"jukcy;":                           '\U00000454',
	"kappa;":                           '\U000003BA',
	"kappav;":                          '\U000003F0',
	"kcedil;":                          '\U00000137',
	"kcy;":                             '\U0000043A',
	"kfr;":                             '\U0001D528',
	"kgreen;":                          '\U00000138',
	"khcy;":                            '\U00000445',
	"kjcy;":                            '\U0000045C',
	"kopf;":                            '\U0001D55C',
	"kscr;":                            '\U0001D4C0',
	"lAarr;":                           '\U000021DA',
	"lArr;":                            '\U000021D0',
	"lAtail;":                          '\U0000291B',
	"lBarr;":                           '\U0000290E',
	"lE;":                              '\U00002266',
	"lEg;":                             '\U00002A8B',
	"lHar;":                            '\U00002962',
	"lacute;":                          '\U0000013A',
	"laemptyv;":                        '\U000029B4',
	"lagran;":                          '\U00002112',
	"lambda;":                          '\U000003BB',
	"lang;":                            '\U000027E8',
	"langd;":                           '\U00002991',
	"langle;":                          '\U000027E8',
	"lap;":                             '\U00002A85',
	"laquo;":                           '\U000000AB',
	"larr;":                            '\U00002190',
	"larrb;":                           '\U000021E4',
	"larrbfs;":                         '\U0000291F',
	"larrfs;":                          '\U0000291D',
	"larrhk;":                          '\U000021A9',
	"larrlp;":                          '\U000021AB',
	"larrpl;":                          '\U00002939',
	"larrsim;":                         '\U00002973',
	"larrtl;":                          '\U000021A2',
	"lat;":                             '\U00002AAB',
	"latail;":                          '\U00002919',
	"late;":                            '\U00002AAD',
	"lbarr;":                           '\U0000290C',
	"lbbrk;":                           '\U00002772',
	"lbrace;":                          '\U0000007B',
	"lbrack;":                          '\U0000005B',
	"lbrke;":                           '\U0000298B',
	"lbrksld;":                         '\U0000298F',
	"lbrkslu;":                         '\U0000298D',
	"lcaron;":                          '\U0000013E',
	"lcedil;":                          '\U0000013C',
	"lceil;":                           '\U00002308',
	"lcub;":                            '\U0000007B',
	"lcy;":                             '\U0000043B',
	"ldca;":                            '\U00002936',
	"ldquo;":                           '\U0000201C',
	"ldquor;":                          '\U0000201E',
	"ldrdhar;":                         '\U00002967',
	"ldrushar;":                        '\U0000294B',
	"ldsh;":                            '\U000021B2',
	"le;":                              '\U00002264',
	"leftarrow;":                       '\U00002190',
	"leftarrowtail;":                   '\U000021A2',
	"leftharpoondown;":                 '\U000021BD',
	"leftharpoonup;":                   '\U000021BC',
	"leftleftarrows;":                  '\U000021C7',
	"leftrightarrow;":                  '\U00002194',
	"leftrightarrows;":                 '\U000021C6',
	"leftrightharpoons;":               '\U000021CB',
	"leftrightsquigarrow;":             '\U000021AD',
	"leftthreetimes;":                  '\U000022CB',
	"leg;":                             '\U000022DA',
	"leq;":                             '\U00002264',
	"leqq;":                            '\U00002266',
	"leqslant;":                        '\U00002A7D',
	"les;":                             '\U00002A7D',
	"lescc;":                           '\U00002AA8',
	"lesdot;":                          '\U00002A7F',
	"lesdoto;":                         '\U00002A81',
	"lesdotor;":                        '\U00002A83',
	"lesges;":                          '\U00002A93',
	"lessapprox;":                      '\U00002A85',
	"lessdot;":                         '\U000022D6',
	"lesseqgtr;":                       '\U000022DA',
	"lesseqqgtr;":                      '\U00002A8B',
	"lessgtr;":                         '\U00002276',
	"lesssim;":                         '\U00002272',
	"lfisht;":                          '\U0000297C',
	"lfloor;":                          '\U0000230A',
	"lfr;":                             '\U0001D529',
	"lg;":                              '\U00002276',
	"lgE;":                             '\U00002A91',
	"lhard;":                           '\U000021BD',
	"lharu;":                           '\U000021BC',
	"lharul;":                          '\U0000296A',
	"lhblk;":                           '\U00002584',
	"ljcy;":                            '\U00000459',
	"ll;":                              '\U0000226A',
	"llarr;":                           '\U000021C7',
	"llcorner;":                        '\U0000231E',
	"llhard;":                          '\U0000296B',
	"lltri;":                           '\U000025FA',
	"lmidot;":                          '\U00000140',
	"lmoust;":                          '\U000023B0',
	"lmoustache;":                      '\U000023B0',
	"lnE;":                             '\U00002268',
	"lnap;":                            '\U00002A89',
	"lnapprox;":                        '\U00002A89',
	"lne;":                             '\U00002A87',
	"lneq;":                            '\U00002A87',
	"lneqq;":                           '\U00002268',
	"lnsim;":                           '\U000022E6',
	"loang;":                           '\U000027EC',
	"loarr;":                           '\U000021FD',
	"lobrk;":                           '\U000027E6',
	"longleftarrow;":                   '\U000027F5',
	"longleftrightarrow;":              '\U000027F7',
	"longmapsto;":                      '\U000027FC',
	"longrightarrow;":                  '\U000027F6',
	"looparrowleft;":                   '\U000021AB',
	"looparrowright;":                  '\U000021AC',
	"lopar;":                           '\U00002985',
	"lopf;":                            '\U0001D55D',
	"loplus;":                          '\U00002A2D',
	"lotimes;":                         '\U00002A34',
	"lowast;":                          '\U00002217',
	"lowbar;":                          '\U0000005F',
	"loz;":                             '\U000025CA',
	"lozenge;":                         '\U000025CA',
	"lozf;":                            '\U000029EB',
	"lpar;":                            '\U00000028',
	"lparlt;":                          '\U00002993',
	"lrarr;":                           '\U000021C6',
	"lrcorner;":                        '\U0000231F',
	"lrhar;":                           '\U000021CB',
	"lrhard;":                          '\U0000296D',
	"lrm;":                             '\U0000200E',
	"lrtri;":                           '\U000022BF',
	"lsaquo;":                          '\U00002039',
	"lscr;":                            '\U0001D4C1',
	"lsh;":                             '\U000021B0',
	"lsim;":                            '\U00002272',
	"lsime;":                           '\U00002A8D',
	"lsimg;":                           '\U00002A8F',
	"lsqb;":                            '\U0000005B',
	"lsquo;":                           '\U00002018',
	"lsquor;":                          '\U0000201A',
	"lstrok;":                          '\U00000142',
	"lt;":                              '\U0000003C',
	"ltcc;":                            '\U00002AA6',
	"ltcir;":                           '\U00002A79',
	"ltdot;":                           '\U000022D6',
	"lthree;":                          '\U000022CB',
	"ltimes;":                          '\U000022C9',
	"ltlarr;":                          '\U00002976',
	"ltquest;":                         '\U00002A7B',
	"ltrPar;":                          '\U00002996',
	"ltri;":                            '\U000025C3',
	"ltrie;":                           '\U000022B4',
	"ltrif;":                           '\U000025C2',
	"lurdshar;":                        '\U0000294A',
	"luruhar;":                         '\U00002966',
	"mDDot;":                           '\U0000223A',
	"macr;":                            '\U000000AF',
	"male;":                            '\U00002642',
	"malt;":                            '\U00002720',
	"maltese;":                         '\U00002720',
	"map;":                             '\U000021A6',
	"mapsto;":                          '\U000021A6',
	"mapstodown;":                      '\U000021A7',
	"mapstoleft;":                      '\U000021A4',
	"mapstoup;":                        '\U000021A5',
	"marker;":                          '\U000025AE',
	"mcomma;":                          '\U00002A29',
	"mcy;":                             '\U0000043C',
	"mdash;":                           '\U00002014',
	"measuredangle;":                   '\U00002221',
	"mfr;":                             '\U0001D52A',
	"mho;":                             '\U00002127',
	"micro;":                           '\U000000B5',
	"mid;":                             '\U00002223',
	"midast;":                          '\U0000002A',
	"midcir;":                          '\U00002AF0',
	"middot;":                          '\U000000B7',
	"minus;":                           '\U00002212',
	"minusb;":                          '\U0000229F',
	"minusd;":                          '\U00002238',
	"minusdu;":                         '\U00002A2A',
	"mlcp;":                            '\U00002ADB',
	"mldr;":                            '\U00002026',
	"mnplus;":                          '\U00002213',
	"models;":                          '\U000022A7',
	"mopf;":                            '\U0001D55E',
	"mp;":                              '\U00002213',
	"mscr;":                            '\U0001D4C2',
	"mstpos;":                          '\U0000223E',
	"mu;":                              '\U000003BC',
	"multimap;":                        '\U000022B8',
	"mumap;":                           '\U000022B8',
	"nLeftarrow;":                      '\U000021CD',
	"nLeftrightarrow;":                 '\U000021CE',
	"nRightarrow;":                     '\U000021CF',
	"nVDash;":                          '\U000022AF',
	"nVdash;":                          '\U000022AE',
	"nabla;":                           '\U00002207',
	"nacute;":                          '\U00000144',
	"nap;":                             '\U00002249',
	"napos;":                           '\U00000149',
	"napprox;":                         '\U00002249',
	"natur;":                           '\U0000266E',
	"natural;":                         '\U0000266E',
	"naturals;":                        '\U00002115',
	"nbsp;":                            '\U000000A0',
	"ncap;":                            '\U00002A43',
	"ncaron;":                          '\U00000148',
	"ncedil;":                          '\U00000146',
	"ncong;":                           '\U00002247',
	"ncup;":                            '\U00002A42',
	"ncy;":                             '\U0000043D',
	"ndash;":                           '\U00002013',
	"ne;":                              '\U00002260',
	"neArr;":                           '\U000021D7',
	"nearhk;":                          '\U00002924',
	"nearr;":                           '\U00002197',
	"nearrow;":                         '\U00002197',
	"nequiv;":                          '\U00002262',
	"nesear;":                          '\U00002928',
	"nexist;":                          '\U00002204',
	"nexists;":                         '\U00002204',
	"nfr;":                             '\U0001D52B',
	"nge;":                             '\U00002271',
	"ngeq;":                            '\U00002271',
	"ngsim;":                           '\U00002275',
	"ngt;":                             '\U0000226F',
	"ngtr;":                            '\U0000226F',
	"nhArr;":                           '\U000021CE',
	"nharr;":                           '\U000021AE',
	"nhpar;":                           '\U00002AF2',
	"ni;":                              '\U0000220B',
	"nis;":                             '\U000022FC',
	"nisd;":                            '\U000022FA',
	"niv;":                             '\U0000220B',
	"njcy;":                            '\U0000045A',
	"nlArr;":                           '\U000021CD',
	"nlarr;":                           '\U0000219A',
	"nldr;":                            '\U00002025',
	"nle;":                             '\U00002270',
	"nleftarrow;":                      '\U0000219A',
	"nleftrightarrow;":                 '\U000021AE',
	"nleq;":                            '\U00002270',
	"nless;":                           '\U0000226E',
	"nlsim;":                           '\U00002274',
	"nlt;":                             '\U0000226E',
	"nltri;":                           '\U000022EA',
	"nltrie;":                          '\U000022EC',
	"nmid;":                            '\U00002224',
	"nopf;":                            '\U0001D55F',
	"not;":                             '\U000000AC',
	"notin;":                           '\U00002209',
	"notinva;":                         '\U00002209',
	"notinvb;":                         '\U000022F7',
	"notinvc;":                         '\U000022F6',
	"notni;":                           '\U0000220C',
	"notniva;":                         '\U0000220C',
	"notnivb;":                         '\U000022FE',
	"notnivc;":                         '\U000022FD',
	"npar;":                            '\U00002226',
	"nparallel;":                       '\U00002226',
	"npolint;":                         '\U00002A14',
	"npr;":                             '\U00002280',
	"nprcue;":                          '\U000022E0',
	"nprec;":                           '\U00002280',
	"nrArr;":                           '\U000021CF',
	"nrarr;":                           '\U0000219B',
	"nrightarrow;":                     '\U0000219B',
	"nrtri;":                           '\U000022EB',
	"nrtrie;":                          '\U000022ED',
	"nsc;":                             '\U00002281',
	"nsccue;":                          '\U000022E1',
	"nscr;":                            '\U0001D4C3',
	"nshortmid;":                       '\U00002224',
	"nshortparallel;":                  '\U00002226',
	"nsim;":                            '\U00002241',
	"nsime;":                           '\U00002244',
	"nsimeq;":                          '\U00002244',
	"nsmid;":                           '\U00002224',
	"nspar;":                           '\U00002226',
	"nsqsube;":                         '\U000022E2',
	"nsqsupe;":                         '\U000022E3',
	"nsub;":                            '\U00002284',
	"nsube;":                           '\U00002288',
	"nsubseteq;":                       '\U00002288',
	"nsucc;":                           '\U00002281',
	"nsup;":                            '\U00002285',
	"nsupe;":                           '\U00002289',
	"nsupseteq;":                       '\U00002289',
	"ntgl;":                            '\U00002279',
	"ntilde;":                          '\U000000F1',
	"ntlg;":                            '\U00002278',
	"ntriangleleft;":                   '\U000022EA',
	"ntrianglelefteq;":                 '\U000022EC',
	"ntriangleright;":                  '\U000022EB',
	"ntrianglerighteq;":                '\U000022ED',
	"nu;":                              '\U000003BD',
	"num;":                             '\U00000023',
	"numero;":                          '\U00002116',
	"numsp;":                           '\U00002007',
	"nvDash;":                          '\U000022AD',
	"nvHarr;":                          '\U00002904',
	"nvdash;":                          '\U000022AC',
	"nvinfin;":                         '\U000029DE',
	"nvlArr;":                          '\U00002902',
	"nvrArr;":                          '\U00002903',
	"nwArr;":                           '\U000021D6',
	"nwarhk;":                          '\U00002923',
	"nwarr;":                           '\U00002196',
	"nwarrow;":                         '\U00002196',
	"nwnear;":                          '\U00002927',
	"oS;":                              '\U000024C8',
	"oacute;":                          '\U000000F3',
	"oast;":                            '\U0000229B',
	"ocir;":                            '\U0000229A',
	"ocirc;":                           '\U000000F4',
	"ocy;":                             '\U0000043E',
	"odash;":                           '\U0000229D',
	"odblac;":                          '\U00000151',
	"odiv;":                            '\U00002A38',
	"odot;":                            '\U00002299',
	"odsold;":                          '\U000029BC',
	"oelig;":                           '\U00000153',
	"ofcir;":                           '\U000029BF',
	"ofr;":                             '\U0001D52C',
	"ogon;":                            '\U000002DB',
	"ograve;":                          '\U000000F2',
	"ogt;":                             '\U000029C1',
	"ohbar;":                           '\U000029B5',
	"ohm;":                             '\U000003A9',
	"oint;":                            '\U0000222E',
	"olarr;":                           '\U000021BA',
	"olcir;":                           '\U000029BE',
	"olcross;":                         '\U000029BB',
	"oline;":                           '\U0000203E',
	"olt;":                             '\U000029C0',
	"omacr;":                           '\U0000014D',
	"omega;":                           '\U000003C9',
	"omicron;":                         '\U000003BF',
	"omid;":                            '\U000029B6',
	"ominus;":                          '\U00002296',
	"oopf;":                            '\U0001D560',
	"opar;":                            '\U000029B7',
	"operp;":                           '\U000029B9',
	"oplus;":                           '\U00002295',
	"or;":                              '\U00002228',
	"orarr;":                           '\U000021BB',
	"ord;":                             '\U00002A5D',
	"order;":                           '\U00002134',
	"orderof;":                         '\U00002134',
	"ordf;":                            '\U000000AA',
	"ordm;":                            '\U000000BA',
	"origof;":                          '\U000022B6',
	"oror;":                            '\U00002A56',
	"orslope;":                         '\U00002A57',
	"orv;":                             '\U00002A5B',
	"oscr;":                            '\U00002134',
	"oslash;":                          '\U000000F8',
	"osol;":                            '\U00002298',
	"otilde;":                          '\U000000F5',
	"otimes;":                          '\U00002297',
	"otimesas;":                        '\U00002A36',
	"ouml;":                            '\U000000F6',
	"ovbar;":                           '\U0000233D',
	"par;":                             '\U00002225',
	"para;":                            '\U000000B6',
	"parallel;":                        '\U00002225',
	"parsim;":                          '\U00002AF3',
	"parsl;":                           '\U00002AFD',
	"part;":                            '\U00002202',
	"pcy;":                             '\U0000043F',
	"percnt;":                          '\U00000025',
	"period;":                          '\U0000002E',
	"permil;":                          '\U00002030',
	"perp;":                            '\U000022A5',
	"pertenk;":                         '\U00002031',
	"pfr;":                             '\U0001D52D',
	"phi;":                             '\U000003C6',
	"phiv;":                            '\U000003D5',
	"phmmat;":                          '\U00002133',
	"phone;":                           '\U0000260E',
	"pi;":                              '\U000003C0',
	"pitchfork;":                       '\U000022D4',
	"piv;":                             '\U000003D6',
	"planck;":                          '\U0000210F',
	"planckh;":                         '\U0000210E',
	"plankv;":                          '\U0000210F',
	"plus;":                            '\U0000002B',
	"plusacir;":                        '\U00002A23',
	"plusb;":                           '\U0000229E',
	"pluscir;":                         '\U00002A22',
	"plusdo;":                          '\U00002214',
	"plusdu;":                          '\U00002A25',
	"pluse;":                           '\U00002A72',
	"plusmn;":                          '\U000000B1',
	"plussim;":                         '\U00002A26',
	"plustwo;":                         '\U00002A27',
	"pm;":                              '\U000000B1',
	"pointint;":                        '\U00002A15',
	"popf;":                            '\U0001D561',
	"pound;":                           '\U000000A3',
	"pr;":                              '\U0000227A',
	"prE;":                             '\U00002AB3',
	"prap;":                            '\U00002AB7',
	"prcue;":                           '\U0000227C',
	"pre;":                             '\U00002AAF',
	"prec;":                            '\U0000227A',
	"precapprox;":                      '\U00002AB7',
	"preccurlyeq;":                     '\U0000227C',
	"preceq;":                          '\U00002AAF',
	"precnapprox;":                     '\U00002AB9',
	"precneqq;":                        '\U00002AB5',
	"precnsim;":                        '\U000022E8',
	"precsim;":                         '\U0000227E',
	"prime;":                           '\U00002032',
	"primes;":                          '\U00002119',
	"prnE;":                            '\U00002AB5',
	"prnap;":                           '\U00002AB9',
	"prnsim;":                          '\U000022E8',
	"prod;":                            '\U0000220F',
	"profalar;":                        '\U0000232E',
	"profline;":                        '\U00002312',
	"profsurf;":                        '\U00002313',
	"prop;":                            '\U0000221D',
	"propto;":                          '\U0000221D',
	"prsim;":                           '\U0000227E',
	"prurel;":                          '\U000022B0',
	"pscr;":                            '\U0001D4C5',
	"psi;":                             '\U000003C8',
	"puncsp;":                          '\U00002008',
	"qfr;":                             '\U0001D52E',
	"qint;":                            '\U00002A0C',
	"qopf;":                            '\U0001D562',
	"qprime;":                          '\U00002057',
	"qscr;":                            '\U0001D4C6',
	"quaternions;":                     '\U0000210D',
	"quatint;":                         '\U00002A16',
	"quest;":                           '\U0000003F',
	"questeq;":                         '\U0000225F',
	"quot;":                            '\U00000022',
	"rAarr;":                           '\U000021DB',
	"rArr;":                            '\U000021D2',
	"rAtail;":                          '\U0000291C',
	"rBarr;":                           '\U0000290F',
	"rHar;":                            '\U00002964',
	"racute;":                          '\U00000155',
	"radic;":                           '\U0000221A',
	"raemptyv;":                        '\U000029B3',
	"rang;":                            '\U000027E9',
	"rangd;":                           '\U00002992',
	"range;":                           '\U000029A5',
	"rangle;":                          '\U000027E9',
	"raquo;":                           '\U000000BB',
	"rarr;":                            '\U00002192',
	"rarrap;":                          '\U00002975',
	"rarrb;":                           '\U000021E5',
	"rarrbfs;":                         '\U00002920',
	"rarrc;":                           '\U00002933',
	"rarrfs;":                          '\U0000291E',
	"rarrhk;":                          '\U000021AA',
	"rarrlp;":                          '\U000021AC',
	"rarrpl;":                          '\U00002945',
	"rarrsim;":                         '\U00002974',
	"rarrtl;":                          '\U000021A3',
	"rarrw;":                           '\U0000219D',
	"ratail;":                          '\U0000291A',
	"ratio;":                           '\U00002236',
	"rationals;":                       '\U0000211A',
	"rbarr;":                           '\U0000290D',
	"rbbrk;":                           '\U00002773',
	"rbrace;":                          '\U0000007D',
	"rbrack;":                          '\U0000005D',
	"rbrke;":                           '\U0000298C',
	"rbrksld;":                         '\U0000298E',
	"rbrkslu;":                         '\U00002990',
	"rcaron;":                          '\U00000159',
	"rcedil;":                          '\U00000157',
	"rceil;":                           '\U00002309',
	"rcub;":                            '\U0000007D',
	"rcy;":                             '\U00000440',
	"rdca;":                            '\U00002937',
	"rdldhar;":                         '\U00002969',
	"rdquo;":                           '\U0000201D',
	"rdquor;":                          '\U0000201D',
	"rdsh;":                            '\U000021B3',
	"real;":                            '\U0000211C',
	"realine;":                         '\U0000211B',
	"realpart;":                        '\U0000211C',
	"reals;":                           '\U0000211D',
	"rect;":                            '\U000025AD',
	"reg;":                             '\U000000AE',
	"rfisht;":                          '\U0000297D',
	"rfloor;":                          '\U0000230B',
	"rfr;":                             '\U0001D52F',
	"rhard;":                           '\U000021C1',
	"rharu;":                           '\U000021C0',
	"rharul;":                          '\U0000296C',
	"rho;":                             '\U000003C1',
	"rhov;":                            '\U000003F1',
	"rightarrow;":                      '\U00002192',
	"rightarrowtail;":                  '\U000021A3',
	"rightharpoondown;":                '\U000021C1',
	"rightharpoonup;":                  '\U000021C0',
	"rightleftarrows;":                 '\U000021C4',
	"rightleftharpoons;":               '\U000021CC',
	"rightrightarrows;":                '\U000021C9',
	"rightsquigarrow;":                 '\U0000219D',
	"rightthreetimes;":                 '\U000022CC',
	"ring;":                            '\U000002DA',
	"risingdotseq;":                    '\U00002253',
	"rlarr;":                           '\U000021C4',
	"rlhar;":                           '\U000021CC',
	"rlm;":                             '\U0000200F',
	"rmoust;":                          '\U000023B1',
	"rmoustache;":                      '\U000023B1',
	"rnmid;":                           '\U00002AEE',
	"roang;":                           '\U000027ED',
	"roarr;":                           '\U000021FE',
	"robrk;":                           '\U000027E7',
	"ropar;":                           '\U00002986',
	"ropf;":                            '\U0001D563',
	"roplus;":                          '\U00002A2E',
	"rotimes;":                         '\U00002A35',
	"rpar;":                            '\U00000029',
	"rpargt;":                          '\U00002994',
	"rppolint;":                        '\U00002A12',
	"rrarr;":                           '\U000021C9',
	"rsaquo;":                          '\U0000203A',
	"rscr;":                            '\U0001D4C7',
	"rsh;":                             '\U000021B1',
	"rsqb;":                            '\U0000005D',
	"rsquo;":                           '\U00002019',
	"rsquor;":                          '\U00002019',
	"rthree;":                          '\U000022CC',
	"rtimes;":                          '\U000022CA',
	"rtri;":                            '\U000025B9',
	"rtrie;":                           '\U000022B5',
	"rtrif;":                           '\U000025B8',
	"rtriltri;":                        '\U000029CE',
	"ruluhar;":                         '\U00002968',
	"rx;":                              '\U0000211E',
	"sacute;":                          '\U0000015B',
	"sbquo;":                           '\U0000201A',
	"sc;":                              '\U0000227B',
	"scE;":                             '\U00002AB4',
	"scap;":                            '\U00002AB8',
	"scaron;":                          '\U00000161',
	"sccue;":                           '\U0000227D',
	"sce;":                             '\U00002AB0',
	"scedil;":                          '\U0000015F',
	"scirc;":                           '\U0000015D',
	"scnE;":                            '\U00002AB6',
	"scnap;":                           '\U00002ABA',
	"scnsim;":                          '\U000022E9',
	"scpolint;":                        '\U00002A13',
	"scsim;":                           '\U0000227F',
	"scy;":                             '\U00000441',
	"sdot;":                            '\U000022C5',
	"sdotb;":                           '\U000022A1',
	"sdote;":                           '\U00002A66',
	"seArr;":                           '\U000021D8',
	"searhk;":                          '\U00002925',
	"searr;":                           '\U00002198',
	"searrow;":                         '\U00002198',
	"sect;":                            '\U000000A7',
	"semi;":                            '\U0000003B',
	"seswar;":                          '\U00002929',
	"setminus;":                        '\U00002216',
	"setmn;":                           '\U00002216',
	"sext;":                            '\U00002736',
	"sfr;":                             '\U0001D530',
	"sfrown;":                          '\U00002322',
	"sharp;":                           '\U0000266F',
	"shchcy;":                          '\U00000449',
	"shcy;":                            '\U00000448',
	"shortmid;":                        '\U00002223',
	"shortparallel;":                   '\U00002225',
	"shy;":                             '\U000000AD',
	"sigma;":                           '\U000003C3',
	"sigmaf;":                          '\U000003C2',
	"sigmav;":                          '\U000003C2',
	"sim;":                             '\U0000223C',
	"simdot;":                          '\U00002A6A',
	"sime;":                            '\U00002243',
	"simeq;":                           '\U00002243',
	"simg;":                            '\U00002A9E',
	"simgE;":                           '\U00002AA0',
	"siml;":                            '\U00002A9D',
	"simlE;":                           '\U00002A9F',
	"simne;":                           '\U00002246',
	"simplus;":                         '\U00002A24',
	"simrarr;":                         '\U00002972',
	"slarr;":                           '\U00002190',
	"smallsetminus;":                   '\U00002216',
	"smashp;":                          '\U00002A33',
	"smeparsl;":                        '\U000029E4',
	"smid;":                            '\U00002223',
	"smile;":                           '\U00002323',
	"smt;":                             '\U00002AAA',
	"smte;":                            '\U00002AAC',
	"softcy;":                          '\U0000044C',
	"sol;":                             '\U0000002F',
	"solb;":                            '\U000029C4',
	"solbar;":                          '\U0000233F',
	"sopf;":                            '\U0001D564',
	"spades;":                          '\U00002660',
	"spadesuit;":                       '\U00002660',
	"spar;":                            '\U00002225',
	"sqcap;":                           '\U00002293',
	"sqcup;":                           '\U00002294',
	"sqsub;":                           '\U0000228F',
	"sqsube;":                          '\U00002291',
	"sqsubset;":                        '\U0000228F',
	"sqsubseteq;":                      '\U00002291',
	"sqsup;":                           '\U00002290',
	"sqsupe;":                          '\U00002292',
	"sqsupset;":                        '\U00002290',
	"sqsupseteq;":                      '\U00002292',
	"squ;":                             '\U000025A1',
	"square;":                          '\U000025A1',
	"squarf;":                          '\U000025AA',
	"squf;":                            '\U000025AA',
	"srarr;":                           '\U00002192',
	"sscr;":                            '\U0001D4C8',
	"ssetmn;":                          '\U00002216',
	"ssmile;":                          '\U00002323',
	"sstarf;":                          '\U000022C6',
	"star;":                            '\U00002606',
	"starf;":                           '\U00002605',
	"straightepsilon;":                 '\U000003F5',
	"straightphi;":                     '\U000003D5',
	"strns;":                           '\U000000AF',
	"sub;":                             '\U00002282',
	"subE;":                            '\U00002AC5',
	"subdot;":                          '\U00002ABD',
	"sube;":                            '\U00002286',
	"subedot;":                         '\U00002AC3',
	"submult;":                         '\U00002AC1',
	"subnE;":                           '\U00002ACB',
	"subne;":                           '\U0000228A',
	"subplus;":                         '\U00002ABF',
	"subrarr;":                         '\U00002979',
	"subset;":                          '\U00002282',
	"subseteq;":                        '\U00002286',
	"subseteqq;":                       '\U00002AC5',
	"subsetneq;":                       '\U0000228A',
	"subsetneqq;":                      '\U00002ACB',
	"subsim;":                          '\U00002AC7',
	"subsub;":                          '\U00002AD5',
	"subsup;":                          '\U00002AD3',
	"succ;":                            '\U0000227B',
	"succapprox;":                      '\U00002AB8',
	"succcurlyeq;":                     '\U0000227D',
	"succeq;":                          '\U00002AB0',
	"succnapprox;":                     '\U00002ABA',
	"succneqq;":                        '\U00002AB6',
	"succnsim;":                        '\U000022E9',
	"succsim;":                         '\U0000227F',
	"sum;":                             '\U00002211',
	"sung;":                            '\U0000266A',
	"sup;":                             '\U00002283',
	"sup1;":                            '\U000000B9',
	"sup2;":                            '\U000000B2',
	"sup3;":                            '\U000000B3',
	"supE;":                            '\U00002AC6',
	"supdot;":                          '\U00002ABE',
	"supdsub;":                         '\U00002AD8',
	"supe;":                            '\U00002287',
	"supedot;":                         '\U00002AC4',
	"suphsol;":                         '\U000027C9',
	"suphsub;":                         '\U00002AD7',
	"suplarr;":                         '\U0000297B',
	"supmult;":                         '\U00002AC2',
	"supnE;":                           '\U00002ACC',
	"supne;":                           '\U0000228B',
	"supplus;":                         '\U00002AC0',
	"supset;":                          '\U00002283',
	"supseteq;":                        '\U00002287',
	"supseteqq;":                       '\U00002AC6',
	"supsetneq;":                       '\U0000228B',
	"supsetneqq;":                      '\U00002ACC',
	"supsim;":                          '\U00002AC8',
	"supsub;":                          '\U00002AD4',
	"supsup;":                          '\U00002AD6',
	"swArr;":                           '\U000021D9',
	"swarhk;":                          '\U00002926',
	"swarr;":                           '\U00002199',
	"swarrow;":                         '\U00002199',
	"swnwar;":                          '\U0000292A',
	"szlig;":                           '\U000000DF',
	"target;":                          '\U00002316',
	"tau;":                             '\U000003C4',
	"tbrk;":                            '\U000023B4',
	"tcaron;":                          '\U00000165',
	"tcedil;":                          '\U00000163',
	"tcy;":                             '\U00000442',
	"tdot;":                            '\U000020DB',
	"telrec;":                          '\U00002315',
	"tfr;":                             '\U0001D531',
	"there4;":                          '\U00002234',
	"therefore;":                       '\U00002234',
	"theta;":                           '\U000003B8',
	"thetasym;":                        '\U000003D1',
	"thetav;":                          '\U000003D1',
	"thickapprox;":                     '\U00002248',
	"thicksim;":                        '\U0000223C',
	"thinsp;":                          '\U00002009',
	"thkap;":                           '\U00002248',
	"thksim;":                          '\U0000223C',
	"thorn;":                           '\U000000FE',
	"tilde;":                           '\U000002DC',
	"times;":                           '\U000000D7',
	"timesb;":                          '\U000022A0',
	"timesbar;":                        '\U00002A31',
	"timesd;":                          '\U00002A30',
	"tint;":                            '\U0000222D',
	"toea;":                            '\U00002928',
	"top;":                             '\U000022A4',
	"topbot;":                          '\U00002336',
	"topcir;":                          '\U00002AF1',
	"topf;":                            '\U0001D565',
	"topfork;":                         '\U00002ADA',
	"tosa;":                            '\U00002929',
	"tprime;":                          '\U00002034',
	"trade;":                           '\U00002122',
	"triangle;":                        '\U000025B5',
	"triangledown;":                    '\U000025BF',
	"triangleleft;":                    '\U000025C3',
	"trianglelefteq;":                  '\U000022B4',
	"triangleq;":                       '\U0000225C',
	"triangleright;":                   '\U000025B9',
	"trianglerighteq;":                 '\U000022B5',
	"tridot;":                          '\U000025EC',
	"trie;":                            '\U0000225C',
	"triminus;":                        '\U00002A3A',
	"triplus;":                         '\U00002A39',
	"trisb;":                           '\U000029CD',
	"tritime;":                         '\U00002A3B',
	"trpezium;":                        '\U000023E2',
	"tscr;":                            '\U0001D4C9',
	"tscy;":                            '\U00000446',
	"tshcy;":                           '\U0000045B',
	"tstrok;":                          '\U00000167',
	"twixt;":                           '\U0000226C',
	"twoheadleftarrow;":                '\U0000219E',
	"twoheadrightarrow;":               '\U000021A0',
	"uArr;":                            '\U000021D1',
	"uHar;":                            '\U00002963',
	"uacute;":                          '\U000000FA',
	"uarr;":                            '\U00002191',
	"ubrcy;":                           '\U0000045E',
	"ubreve;":                          '\U0000016D',
	"ucirc;":                           '\U000000FB',
	"ucy;":                             '\U00000443',
	"udarr;":                           '\U000021C5',
	"udblac;":                          '\U00000171',
	"udhar;":                           '\U0000296E',
	"ufisht;":                          '\U0000297E',
	"ufr;":                             '\U0001D532',
	"ugrave;":                          '\U000000F9',
	"uharl;":                           '\U000021BF',
	"uharr;":                           '\U000021BE',
	"uhblk;":                           '\U00002580',
	"ulcorn;":                          '\U0000231C',
	"ulcorner;":                        '\U0000231C',
	"ulcrop;":                          '\U0000230F',
	"ultri;":                           '\U000025F8',
	"umacr;":                           '\U0000016B',
	"uml;":                             '\U000000A8',
	"uogon;":                           '\U00000173',
	"uopf;":                            '\U0001D566',
	"uparrow;":                         '\U00002191',
	"updownarrow;":                     '\U00002195',
	"upharpoonleft;":                   '\U000021BF',
	"upharpoonright;":                  '\U000021BE',
	"uplus;":                           '\U0000228E',
	"upsi;":                            '\U000003C5',
	"upsih;":                           '\U000003D2',
	"upsilon;":                         '\U000003C5',
	"upuparrows;":                      '\U000021C8',
	"urcorn;":                          '\U0000231D',
	"urcorner;":                        '\U0000231D',
	"urcrop;":                          '\U0000230E',
	"uring;":                           '\U0000016F',
	"urtri;":                           '\U000025F9',
	"uscr;":                            '\U0001D4CA',
	"utdot;":                           '\U000022F0',
	"utilde;":                          '\U00000169',
	"utri;":                            '\U000025B5',
	"utrif;":                           '\U000025B4',
	"uuarr;":                           '\U000021C8',
	"uuml;":                            '\U000000FC',
	"uwangle;":                         '\U000029A7',
	"vArr;":                            '\U000021D5',
	"vBar;":                            '\U00002AE8',
	"vBarv;":                           '\U00002AE9',
	"vDash;":                           '\U000022A8',
	"vangrt;":                          '\U0000299C',
	"varepsilon;":                      '\U000003F5',
	"varkappa;":                        '\U000003F0',
	"varnothing;":                      '\U00002205',
	"varphi;":                          '\U000003D5',
	"varpi;":                           '\U000003D6',
	"varpropto;":                       '\U0000221D',
	"varr;":                            '\U00002195',
	"varrho;":                          '\U000003F1',
	"varsigma;":                        '\U000003C2',
	"vartheta;":                        '\U000003D1',
	"vartriangleleft;":                 '\U000022B2',
	"vartriangleright;":                '\U000022B3',
	"vcy;":                             '\U00000432',
	"vdash;":                           '\U000022A2',
	"vee;":                             '\U00002228',
	"veebar;":                          '\U000022BB',
	"veeeq;":                           '\U0000225A',
	"vellip;":                          '\U000022EE',
	"verbar;":                          '\U0000007C',
	"vert;":                            '\U0000007C',
	"vfr;":                             '\U0001D533',
	"vltri;":                           '\U000022B2',
	"vopf;":                            '\U0001D567',
	"vprop;":                           '\U0000221D',
	"vrtri;":                           '\U000022B3',
	"vscr;":                            '\U0001D4CB',
	"vzigzag;":                         '\U0000299A',
	"wcirc;":                           '\U00000175',
	"wedbar;":                          '\U00002A5F',
	"wedge;":                           '\U00002227',
	"wedgeq;":                          '\U00002259',
	"weierp;":                          '\U00002118',
	"wfr;":                             '\U0001D534',
	"wopf;":                            '\U0001D568',
	"wp;":                              '\U00002118',
	"wr;":                              '\U00002240',
	"wreath;":                          '\U00002240',
	"wscr;":                            '\U0001D4CC',
	"xcap;":                            '\U000022C2',
	"xcirc;":                           '\U000025EF',
	"xcup;":                            '\U000022C3',
	"xdtri;":                           '\U000025BD',
	"xfr;":                             '\U0001D535',
	"xhArr;":                           '\U000027FA',
	"xharr;":                           '\U000027F7',
	"xi;":                              '\U000003BE',
	"xlArr;":                           '\U000027F8',
	"xlarr;":                           '\U000027F5',
	"xmap;":                            '\U000027FC',
	"xnis;":                            '\U000022FB',
	"xodot;":                           '\U00002A00',
	"xopf;":                            '\U0001D569',
	"xoplus;":                          '\U00002A01',
	"xotime;":                          '\U00002A02',
	"xrArr;":                           '\U000027F9',
	"xrarr;":                           '\U000027F6',
	"xscr;":                            '\U0001D4CD',
	"xsqcup;":                          '\U00002A06',
	"xuplus;":                          '\U00002A04',
	"xutri;":                           '\U000025B3',
	"xvee;":                            '\U000022C1',
	"xwedge;":                          '\U000022C0',
	"yacute;":                          '\U000000FD',
	"yacy;":                            '\U0000044F',
	"ycirc;":                           '\U00000177',
	"ycy;":                             '\U0000044B',
	"yen;":                             '\U000000A5',
	"yfr;":                             '\U0001D536',
	"yicy;":                            '\U00000457',
	"yopf;":                            '\U0001D56A',
	"yscr;":                            '\U0001D4CE',
	"yucy;":                            '\U0000044E',
	"yuml;":                            '\U000000FF',
	"zacute;":                          '\U0000017A',
	"zcaron;":                          '\U0000017E',
	"zcy;":                             '\U00000437',
	"zdot;":                            '\U0000017C',
	"zeetrf;":                          '\U00002128',
	"zeta;":                            '\U000003B6',
	"zfr;":                             '\U0001D537',
	"zhcy;":                            '\U00000436',
	"zigrarr;":                         '\U000021DD',
	"zopf;":                            '\U0001D56B',
	"zscr;":                            '\U0001D4CF',
	"zwj;":                             '\U0000200D',
	"zwnj;":                            '\U0000200C',
	"AElig":                            '\U000000C6',
	"AMP":                              '\U00000026',
	"Aacute":                           '\U000000C1',
	"Acirc":                            '\U000000C2',
	"Agrave":                           '\U000000C0',
	"Aring":                            '\U000000C5',
	"Atilde":                           '\U000000C3',
	"Auml":                             '\U000000C4',
	"COPY":                             '\U000000A9',
	"Ccedil":                           '\U000000C7',
	"ETH":                              '\U000000D0',
	"Eacute":                           '\U000000C9',
	"Ecirc":                            '\U000000CA',
	"Egrave":                           '\U000000C8',
	"Euml":                             '\U000000CB',
	"GT":                               '\U0000003E',
	"Iacute":                           '\U000000CD',
	"Icirc":                            '\U000000CE',
	"Igrave":                           '\U000000CC',
	"Iuml":                             '\U000000CF',
	"LT":                               '\U0000003C',
	"Ntilde":                           '\U000000D1',
	"Oacute":                           '\U000000D3',
	"Ocirc":                            '\U000000D4',
	"Ograve":                           '\U000000D2',
	"Oslash":                           '\U000000D8',
	"Otilde":                           '\U000000D5',
	"Ouml":                             '\U000000D6',
	"QUOT":                             '\U00000022',
	"REG":                              '\U000000AE',
	"THORN":                            '\U000000DE',
	"Uacute":                           '\U000000DA',
	"Ucirc":                            '\U000000DB',
	"Ugrave":                           '\U000000D9',
	"Uuml":                             '\U000000DC',
	"Yacute":                           '\U000000DD',
	"aacute":                           '\U000000E1',
	"acirc":                            '\U000000E2',
	"acute":                            '\U000000B4',
	"aelig":                            '\U000000E6',
	"agrave":                           '\U000000E0',
	"amp":                              '\U00000026',
	"aring":                            '\U000000E5',
	"atilde":                           '\U000000E3',
	"auml":                             '\U000000E4',
	"brvbar":                           '\U000000A6',
	"ccedil":                           '\U000000E7',
	"cedil":                            '\U000000B8',
	"cent":                             '\U000000A2',
	"copy":                             '\U000000A9',
	"curren":                           '\U000000A4',
	"deg":                              '\U000000B0',
	"divide":                           '\U000000F7',
	"eacute":                           '\U000000E9',
	"ecirc":                            '\U000000EA',
	"egrave":                           '\U000000E8',
	"eth":                              '\U000000F0',
	"euml":                             '\U000000EB',
	"frac12":                           '\U000000BD',
	"frac14":                           '\U000000BC',
	"frac34":                           '\U000000BE',
	"gt":                               '\U0000003E',
	"iacute":                           '\U000000ED',
	"icirc":                            '\U000000EE',
	"iexcl":                            '\U000000A1',
	"igrave":                           '\U000000EC',
	"iquest":                           '\U000000BF',
	"iuml":                             '\U000000EF',
	"laquo":                            '\U000000AB',
	"lt":                               '\U0000003C',
	"macr":                             '\U000000AF',
	"micro":                            '\U000000B5',
	"middot":                           '\U000000B7',
	"nbsp":                             '\U000000A0',
	"not":                              '\U000000AC',
	"ntilde":                           '\U000000F1',
	"oacute":                           '\U000000F3',
	"ocirc":                            '\U000000F4',
	"ograve":                           '\U000000F2',
	"ordf":                             '\U000000AA',
	"ordm":                             '\U000000BA',
	"oslash":                           '\U000000F8',
	"otilde":                           '\U000000F5',
	"ouml":                             '\U000000F6',
	"para":                             '\U000000B6',
	"plusmn":                           '\U000000B1',
	"pound":                            '\U000000A3',
	"quot":                             '\U00000022',
	"raquo":                            '\U000000BB',
	"reg":                              '\U000000AE',
	"sect":                             '\U000000A7',
	"shy":                              '\U000000AD',
	"sup1":                             '\U000000B9',
	"sup2":                             '\U000000B2',
	"sup3":                             '\U000000B3',
	"szlig":                            '\U000000DF',
	"thorn":                            '\U000000FE',
	"times":                            '\U000000D7',
	"uacute":                           '\U000000FA',
	"ucirc":                            '\U000000FB',
	"ugrave":                           '\U000000F9',
	"uml":                              '\U000000A8',
	"uuml":                             '\U000000FC',
	"yacute":                           '\U000000FD',
	"yen":                              '\U000000A5',
	"yuml":                             '\U000000FF',
}

// HTML entities that are two unicode codepoints.
var entity2 = map[string][2]rune{
	// TODO(nigeltao): Handle replacements that are wider than their names.
	// "nLt;":                     {'\u226A', '\u20D2'},
	// "nGt;":                     {'\u226B', '\u20D2'},
	"NotEqualTilde;":           {'\u2242', '\u0338'},
	"NotGreaterFullEqual;":     {'\u2267', '\u0338'},
	"NotGreaterGreater;":       {'\u226B', '\u0338'},
	"NotGreaterSlantEqual;":    {'\u2A7E', '\u0338'},
	"NotHumpDownHump;":         {'\u224E', '\u0338'},
	"NotHumpEqual;":            {'\u224F', '\u0338'},
	"NotLeftTriangleBar;":      {'\u29CF', '\u0338'},
	"NotLessLess;":             {'\u226A', '\u0338'},
	"NotLessSlantEqual;":       {'\u2A7D', '\u0338'},
	"NotNestedGreaterGreater;": {'\u2AA2', '\u0338'},
	"NotNestedLessLess;":       {'\u2AA1', '\u0338'},
	"NotPrecedesEqual;":        {'\u2AAF', '\u0338'},
	"NotRightTriangleBar;":     {'\u29D0', '\u0338'},
	"NotSquareSubset;":         {'\u228F', '\u0338'},
	"NotSquareSuperset;":       {'\u2290', '\u0338'},
	"NotSubset;":               {'\u2282', '\u20D2'},
	"NotSucceedsEqual;":        {'\u2AB0', '\u0338'},
	"NotSucceedsTilde;":        {'\u227F', '\u0338'},
	"NotSuperset;":             {'\u2283', '\u20D2'},
	"ThickSpace;":              {'\u205F', '\u200A'},
	"acE;":                     {'\u223E', '\u0333'},
	"bne;":                     {'\u003D', '\u20E5'},
	"bnequiv;":                 {'\u2261', '\u20E5'},
	"caps;":                    {'\u2229', '\uFE00'},
	"cups;":                    {'\u222A', '\uFE00'},
	"fjlig;":                   {'\u0066', '\u006A'},
	"gesl;":                    {'\u22DB', '\uFE00'},
	"gvertneqq;":               {'\u2269', '\uFE00'},
	"gvnE;":                    {'\u2269', '\uFE00'},
	"lates;":                   {'\u2AAD', '\uFE00'},
	"lesg;":                    {'\u22DA', '\uFE00'},
	"lvertneqq;":               {'\u2268', '\uFE00'},
	"lvnE;":                    {'\u2268', '\uFE00'},
	"nGg;":                     {'\u22D9', '\u0338'},
	"nGtv;":                    {'\u226B', '\u0338'},
	"nLl;":                     {'\u22D8', '\u0338'},
	"nLtv;":                    {'\u226A', '\u0338'},
	"nang;":                    {'\u2220', '\u20D2'},
	"napE;":                    {'\u2A70', '\u0338'},
	"napid;":                   {'\u224B', '\u0338'},
	"nbump;":                   {'\u224E', '\u0338'},
	"nbumpe;":                  {'\u224F', '\u0338'},
	"ncongdot;":                {'\u2A6D', '\u0338'},
	"nedot;":                   {'\u2250', '\u0338'},
	"nesim;":                   {'\u2242', '\u0338'},
	"ngE;":                     {'\u2267', '\u0338'},
	"ngeqq;":                   {'\u2267', '\u0338'},
	"ngeqslant;":               {'\u2A7E', '\u0338'},
	"nges;":                    {'\u2A7E', '\u0338'},
	"nlE;":                     {'\u2266', '\u0338'},
	"nleqq;":                   {'\u2266', '\u0338'},
	"nleqslant;":               {'\u2A7D', '\u0338'},
	"nles;":                    {'\u2A7D', '\u0338'},
	"notinE;":                  {'\u22F9', '\u0338'},
	"notindot;":                {'\u22F5', '\u0338'},
	"nparsl;":                  {'\u2AFD', '\u20E5'},
	"npart;":                   {'\u2202', '\u0338'},
	"npre;":                    {'\u2AAF', '\u0338'},
	"npreceq;":                 {'\u2AAF', '\u0338'},
	"nrarrc;":                  {'\u2933', '\u0338'},
	"nrarrw;":                  {'\u219D', '\u0338'},
	"nsce;":                    {'\u2AB0', '\u0338'},
	"nsubE;":                   {'\u2AC5', '\u0338'},
	"nsubset;":                 {'\u2282', '\u20D2'},
	"nsubseteqq;":              {'\u2AC5', '\u0338'},
	"nsucceq;":                 {'\u2AB0', '\u0338'},
	"nsupE;":                   {'\u2AC6', '\u0338'},
	"nsupset;":                 {'\u2283', '\u20D2'},
	"nsupseteqq;":              {'\u2AC6', '\u0338'},
	"nvap;":                    {'\u224D', '\u20D2'},
	"nvge;":                    {'\u2265', '\u20D2'},
	"nvgt;":                    {'\u003E', '\u20D2'},
	"nvle;":                    {'\u2264', '\u20D2'},
	"nvlt;":                    {'\u003C', '\u20D2'},
	"nvltrie;":                 {'\u22B4', '\u20D2'},
	"nvrtrie;":                 {'\u22B5', '\u20D2'},
	"nvsim;":                   {'\u223C', '\u20D2'},
	"race;":                    {'\u223D', '\u0331'},
	"smtes;":                   {'\u2AAC', '\uFE00'},
	"sqcaps;":                  {'\u2293', '\uFE00'},
	"sqcups;":                  {'\u2294', '\uFE00'},
	"varsubsetneq;":            {'\u228A', '\uFE00'},
	"varsubsetneqq;":           {'\u2ACB', '\uFE00'},
	"varsupsetneq;":            {'\u228B', '\uFE00'},
	"varsupsetneqq;":           {'\u2ACC', '\uFE00'},
	"vnsub;":                   {'\u2282', '\u20D2'},
	"vnsup;":                   {'\u2283', '\u20D2'},
	"vsubnE;":                  {'\u2ACB', '\uFE00'},
	"vsubne;":                  {'\u228A', '\uFE00'},
	"vsupnE;":                  {'\u2ACC', '\uFE00'},
	"vsupne;":                  {'\u228B', '\uFE00'},
}


================================================
FILE: internal/escape.go
================================================
// Copyright 2010 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package astro

import (
	"bytes"
	"io"
	"strings"
	"unicode/utf8"
)

type writer interface {
	io.Writer
	io.ByteWriter
	WriteString(string) (int, error)
}

// These replacements permit compatibility with old numeric entities that
// assumed Windows-1252 encoding.
// https://html.spec.whatwg.org/multipage/syntax.html#consume-a-character-reference
var replacementTable = [...]rune{
	'\u20AC', // First entry is what 0x80 should be replaced with.
	'\u0081',
	'\u201A',
	'\u0192',
	'\u201E',
	'\u2026',
	'\u2020',
	'\u2021',
	'\u02C6',
	'\u2030',
	'\u0160',
	'\u2039',
	'\u0152',
	'\u008D',
	'\u017D',
	'\u008F',
	'\u0090',
	'\u2018',
	'\u2019',
	'\u201C',
	'\u201D',
	'\u2022',
	'\u2013',
	'\u2014',
	'\u02DC',
	'\u2122',
	'\u0161',
	'\u203A',
	'\u0153',
	'\u009D',
	'\u017E',
	'\u0178', // Last entry is 0x9F.
	// 0x00->'\uFFFD' is handled programmatically.
	// 0x0D->'\u000D' is a no-op.
}

// unescapeEntity reads an entity like "&lt;" from b[src:] and writes the
// corresponding "<" to b[dst:], returning the incremented dst and src cursors.
// Precondition: b[src] == '&' && dst <= src.
// attribute should be true if parsing an attribute value.
func unescapeEntity(b []byte, dst, src int, attribute bool) (dst1, src1 int) {
	// https://html.spec.whatwg.org/multipage/syntax.html#consume-a-character-reference

	// i starts at 1 because we already know that s[0] == '&'.
	i, s := 1, b[src:]

	if len(s) <= 1 {
		b[dst] = b[src]
		return dst + 1, src + 1
	}

	if s[i] == '#' {
		if len(s) <= 3 { // We need to have at least "&#.".
			b[dst] = b[src]
			return dst + 1, src + 1
		}
		i++
		c := s[i]
		hex := false
		if c == 'x' || c == 'X' {
			hex = true
			i++
		}

		x := '\x00'
		for i < len(s) {
			c = s[i]
			i++
			if hex {
				if '0' <= c && c <= '9' {
					x = 16*x + rune(c) - '0'
					continue
				} else if 'a' <= c && c <= 'f' {
					x = 16*x + rune(c) - 'a' + 10
					continue
				} else if 'A' <= c && c <= 'F' {
					x = 16*x + rune(c) - 'A' + 10
					continue
				}
			} else if '0' <= c && c <= '9' {
				x = 10*x + rune(c) - '0'
				continue
			}
			if c != ';' {
				i--
			}
			break
		}

		if i <= 3 { // No characters matched.
			b[dst] = b[src]
			return dst + 1, src + 1
		}

		if 0x80 <= x && x <= 0x9F {
			// Replace characters from Windows-1252 with UTF-8 equivalents.
			x = replacementTable[x-0x80]
		} else if x == 0 || (0xD800 <= x && x <= 0xDFFF) || x > 0x10FFFF {
			// Replace invalid characters with the replacement character.
			x = '\uFFFD'
		}

		return dst + utf8.EncodeRune(b[dst:], x), src + i
	}

	// Consume the maximum number of characters possible, with the
	// consumed characters matching one of the named references.

	for i < len(s) {
		c := s[i]
		i++
		// Lower-cased characters are more common in entities, so we check for them first.
		if 'a' <= c && c <= 'z' || 'A' <= c && c <= 'Z' || '0' <= c && c <= '9' {
			continue
		}
		if c != ';' {
			i--
		}
		break
	}

	entityName := string(s[1:i])
	if entityName == "" {
		// No-op.
	} else if attribute && entityName[len(entityName)-1] != ';' && len(s) > i && s[i] == '=' {
		// No-op.
	} else if x := entity[entityName]; x != 0 {
		return dst + utf8.EncodeRune(b[dst:], x), src + i
	} else if x := entity2[entityName]; x[0] != 0 {
		dst1 := dst + utf8.EncodeRune(b[dst:], x[0])
		return dst1 + utf8.EncodeRune(b[dst1:], x[1]), src + i
	} else if !attribute {
		maxLen := len(entityName) - 1
		if maxLen > longestEntityWithoutSemicolon {
			maxLen = longestEntityWithoutSemicolon
		}
		for j := maxLen; j > 1; j-- {
			if x := entity[entityName[:j]]; x != 0 {
				return dst + utf8.EncodeRune(b[dst:], x), src + j + 1
			}
		}
	}

	dst1, src1 = dst+i, src+i
	copy(b[dst:dst1], b[src:src1])
	return dst1, src1
}

// unescape unescapes b's entities in-place, so that "a&lt;b" becomes "a<b".
// attribute should be true if parsing an attribute value.
func unescape(b []byte, attribute bool) []byte {
	for i, c := range b {
		if c == '&' {
			dst, src := unescapeEntity(b, i, i, attribute)
			for src < len(b) {
				c := b[src]
				if c == '&' {
					dst, src = unescapeEntity(b, dst, src, attribute)
				} else {
					b[dst] = c
					dst, src = dst+1, src+1
				}
			}
			return b[0:dst]
		}
	}
	return b
}

const escapedChars = "&'<>\"\r"

func escape(w writer, s string) error {
	i := strings.IndexAny(s, escapedChars)
	for i != -1 {
		if _, err := w.WriteString(s[:i]); err != nil {
			return err
		}
		var esc string
		switch s[i] {
		case '&':
			esc = "&amp;"
		case '\'':
			// "&#39;" is shorter than "&apos;" and apos was not in HTML until HTML5.
			esc = "&#39;"
		case '<':
			esc = "&lt;"
		case '>':
			esc = "&gt;"
		case '"':
			// "&#34;" is shorter than "&quot;".
			esc = "&#34;"
		case '\r':
			esc = "&#13;"
		default:
			panic("unrecognized escape character")
		}
		s = s[i+1:]
		if _, err := w.WriteString(esc); err != nil {
			return err
		}
		i = strings.IndexAny(s, escapedChars)
	}
	_, err := w.WriteString(s)
	return err
}

// EscapeString escapes special characters like "<" to become "&lt;". It
// escapes only five such characters: <, >, &, ' and ".
// UnescapeString(EscapeString(s)) == s always holds, but the converse isn't
// always true.
func EscapeString(s string) string {
	if !strings.ContainsAny(s, escapedChars) {
		return s
	}
	var buf bytes.Buffer
	escape(&buf, s)
	return buf.String()
}

// UnescapeString unescapes entities like "&lt;" to become "<". It unescapes a
// larger range of entities than EscapeString escapes. For example, "&aacute;"
// unescapes to "á", as does "&#225;" and "&xE1;".
// UnescapeString(EscapeString(s)) == s always holds, but the converse isn't
// always true.
func UnescapeString(s string) string {
	for _, c := range s {
		if c == '&' {
			return string(unescape([]byte(s), false))
		}
	}
	return s
}


================================================
FILE: internal/foreign.go
================================================
// Copyright 2011 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package astro

import (
	"strings"
)

func adjustAttributeNames(aa []Attribute, nameMap map[string]string) {
	for i := range aa {
		if newName, ok := nameMap[aa[i].Key]; ok {
			aa[i].Key = newName
		}
	}
}

func adjustForeignAttributes(aa []Attribute) {
	for i, a := range aa {
		if a.Key == "" || a.Key[0] != 'x' {
			continue
		}
		switch a.Key {
		case "xlink:actuate", "xlink:arcrole", "xlink:href", "xlink:role", "xlink:show",
			"xlink:title", "xlink:type", "xml:base", "xml:lang", "xml:space", "xmlns:xlink":
			j := strings.Index(a.Key, ":")
			aa[i].Namespace = a.Key[:j]
			aa[i].Key = a.Key[j+1:]
		}
	}
}

func htmlIntegrationPoint(n *Node) bool {
	if n.Type != ElementNode {
		return false
	}
	switch n.Namespace {
	case "math":
		if n.Data == "annotation-xml" {
			for _, a := range n.Attr {
				if a.Key == "encoding" {
					val := strings.ToLower(a.Val)
					if val == "text/html" || val == "application/xhtml+xml" {
						return true
					}
				}
			}
		}
	case "svg":
		switch n.Data {
		case "desc", "foreignObject", "title":
			return true
		}
	}
	return false
}

func mathMLTextIntegrationPoint(n *Node) bool {
	if n.Namespace != "math" {
		return false
	}
	switch n.Data {
	case "mi", "mo", "mn", "ms", "mtext":
		return true
	}
	return false
}

// Section 12.2.6.5.
var breakout = map[string]bool{
	"b":          true,
	"big":        true,
	"blockquote": true,
	"body":       true,
	"br":         true,
	"center":     true,
	"code":       true,
	"dd":         true,
	"div":        true,
	"dl":         true,
	"dt":         true,
	"em":         true,
	"embed":      true,
	"h1":         true,
	"h2":         true,
	"h3":         true,
	"h4":         true,
	"h5":         true,
	"h6":         true,
	"head":       true,
	"hr":         true,
	"i":          true,
	"img":        true,
	"li":         true,
	"listing":    true,
	"menu":       true,
	"meta":       true,
	"nobr":       true,
	"ol":         true,
	"p":          true,
	"pre":        true,
	"ruby":       true,
	"s":          true,
	"small":      true,
	"span":       true,
	"strong":     true,
	"strike":     true,
	"sub":        true,
	"sup":        true,
	"table":      true,
	"tt":         true,
	"u":          true,
	"ul":         true,
	"var":        true,
}

// Section 12.2.6.5.
var svgTagNameAdjustments = map[string]string{
	"altglyph":            "altGlyph",
	"altglyphdef":         "altGlyphDef",
	"altglyphitem":        "altGlyphItem",
	"animatecolor":        "animateColor",
	"animatemotion":       "animateMotion",
	"animatetransform":    "animateTransform",
	"clippath":            "clipPath",
	"feblend":             "feBlend",
	"fecolormatrix":       "feColorMatrix",
	"fecomponenttransfer": "feComponentTransfer",
	"fecomposite":         "feComposite",
	"feconvolvematrix":    "feConvolveMatrix",
	"fediffuselighting":   "feDiffuseLighting",
	"fedisplacementmap":   "feDisplacementMap",
	"fedistantlight":      "feDistantLight",
	"feflood":             "feFlood",
	"fefunca":             "feFuncA",
	"fefuncb":             "feFuncB",
	"fefuncg":             "feFuncG",
	"fefuncr":             "feFuncR",
	"fegaussianblur":      "feGaussianBlur",
	"feimage":             "feImage",
	"femerge":             "feMerge",
	"femergenode":         "feMergeNode",
	"femorphology":        "feMorphology",
	"feoffset":            "feOffset",
	"fepointlight":        "fePointLight",
	"fespecularlighting":  "feSpecularLighting",
	"fespotlight":         "feSpotLight",
	"fetile":              "feTile",
	"feturbulence":        "feTurbulence",
	"foreignobject":       "foreignObject",
	"glyphref":            "glyphRef",
	"lineargradient":      "linearGradient",
	"radialgradient":      "radialGradient",
	"textpath":            "textPath",
}

// Section 12.2.6.1
var mathMLAttributeAdjustments = map[string]string{
	"definitionurl": "definitionURL",
}

var svgAttributeAdjustments = map[string]string{
	"attributename":       "attributeName",
	"attributetype":       "attributeType",
	"basefrequency":       "baseFrequency",
	"baseprofile":         "baseProfile",
	"calcmode":            "calcMode",
	"clippathunits":       "clipPathUnits",
	"diffuseconstant":     "diffuseConstant",
	"edgemode":            "edgeMode",
	"filterunits":         "filterUnits",
	"glyphref":            "glyphRef",
	"gradienttransform":   "gradientTransform",
	"gradientunits":       "gradientUnits",
	"kernelmatrix":        "kernelMatrix",
	"kernelunitlength":    "kernelUnitLength",
	"keypoints":           "keyPoints",
	"keysplines":          "keySplines",
	"keytimes":            "keyTimes",
	"lengthadjust":        "lengthAdjust",
	"limitingconeangle":   "limitingConeAngle",
	"markerheight":        "markerHeight",
	"markerunits":         "markerUnits",
	"markerwidth":         "markerWidth",
	"maskcontentunits":    "maskContentUnits",
	"maskunits":           "maskUnits",
	"numoctaves":          "numOctaves",
	"pathlength":          "pathLength",
	"patterncontentunits": "patternContentUnits",
	"patterntransform":    "patternTransform",
	"patternunits":        "patternUnits",
	"pointsatx":           "pointsAtX",
	"pointsaty":           "pointsAtY",
	"pointsatz":           "pointsAtZ",
	"preservealpha":       "preserveAlpha",
	"preserveaspectratio": "preserveAspectRatio",
	"primitiveunits":      "primitiveUnits",
	"refx":                "refX",
	"refy":                "refY",
	"repeatcount":         "repeatCount",
	"repeatdur":           "repeatDur",
	"requiredextensions":  "requiredExtensions",
	"requiredfeatures":    "requiredFeatures",
	"specularconstant":    "specularConstant",
	"specularexponent":    "specularExponent",
	"spreadmethod":        "spreadMethod",
	"startoffset":         "startOffset",
	"stddeviation":        "stdDeviation",
	"stitchtiles":         "stitchTiles",
	"surfacescale":        "surfaceScale",
	"systemlanguage":      "systemLanguage",
	"tablevalues":         "tableValues",
	"targetx":             "targetX",
	"targety":             "targetY",
	"textlength":          "textLength",
	"viewbox":             "viewBox",
	"viewtarget":          "viewTarget",
	"xchannelselector":    "xChannelSelector",
	"ychannelselector":    "yChannelSelector",
	"zoomandpan":          "zoomAndPan",
}


================================================
FILE: internal/handler/handler.go
================================================
package handler

import (
	"errors"
	"strings"

	"github.com/withastro/compiler/internal/loc"
	"github.com/withastro/compiler/internal/sourcemap"
)

type Handler struct {
	sourcetext string
	filename   string
	builder    sourcemap.ChunkBuilder
	errors     []error
	warnings   []error
	infos      []error
	hints      []error
}

func NewHandler(sourcetext string, filename string) *Handler {
	return &Handler{
		sourcetext: sourcetext,
		filename:   filename,
		builder:    sourcemap.MakeChunkBuilder(nil, sourcemap.GenerateLineOffsetTables(sourcetext, len(strings.Split(sourcetext, "\n")))),
		errors:     make([]error, 0),
		warnings:   make([]error, 0),
		infos:      make([]error, 0),
		hints:      make([]error, 0),
	}
}

func (h *Handler) HasErrors() bool {
	return len(h.errors) > 0
}

func (h *Handler) AppendError(err error) {
	h.errors = append(h.errors, err)
}

func (h *Handler) AppendWarning(err error) {
	h.warnings = append(h.warnings, err)
}

func (h *Handler) AppendInfo(err error) {
	h.infos = append(h.infos, err)
}

func (h *Handler) AppendHint(err error) {
	h.hints = append(h.hints, err)
}

func (h *Handler) Errors() []loc.DiagnosticMessage {
	msgs := make([]loc.DiagnosticMessage, 0)
	for _, err := range h.errors {
		if err != nil {
			msgs = append(msgs, ErrorToMessage(h, loc.ErrorType, err))
		}
	}
	return msgs
}

func (h *Handler) Warnings() []loc.DiagnosticMessage {
	msgs := make([]loc.DiagnosticMessage, 0)
	for _, err := range h.warnings {
		if err != nil {
			msgs = append(msgs, ErrorToMessage(h, loc.WarningType, err))
		}
	}
	return msgs
}

func (h *Handler) Diagnostics() []loc.DiagnosticMessage {
	msgs := make([]loc.DiagnosticMessage, 0)
	for _, err := range h.errors {
		if err != nil {
			msgs = append(msgs, ErrorToMessage(h, loc.ErrorType, err))
		}
	}
	for _, err := range h.warnings {
		if err != nil {
			msgs = append(msgs, ErrorToMessage(h, loc.WarningType, err))
		}
	}
	for _, err := range h.infos {
		if err != nil {
			msgs = append(msgs, ErrorToMessage(h, loc.InformationType, err))
		}
	}
	for _, err := range h.hints {
		if err != nil {
			msgs = append(msgs, ErrorToMessage(h, loc.HintType, err))
		}
	}
	return msgs
}

func ErrorToMessage(h *Handler, severity loc.DiagnosticSeverity, err error) loc.DiagnosticMessage {
	var rangedError *loc.ErrorWithRange
	switch {
	case errors.As(err, &rangedError):
		pos := h.builder.GetLineAndColumnForLocation(rangedError.Range.Loc)
		location := &loc.DiagnosticLocation{
			File:   h.filename,
			Line:   pos[0],
			Column: pos[1],
			Length: rangedError.Range.Len,
		}
		message := rangedError.ToMessage(location)
		message.Severity = int(severity)
		return message
	default:
		return loc.DiagnosticMessage{Text: err.Error()}
	}
}


================================================
FILE: internal/hash.go
================================================
package astro

import (
	"encoding/base32"
	"strings"

	"github.com/withastro/compiler/internal/xxhash"
)

func HashString(str string) string {
	h := xxhash.New()
	//nolint
	h.Write([]byte(str))
	hashBytes := h.Sum(nil)
	return strings.ToLower(base32.StdEncoding.EncodeToString(hashBytes)[:8])
}


================================================
FILE: internal/helpers/joiner.go
================================================
package helpers

import (
	"bytes"
	"strings"
)

// This provides an efficient way to join lots of big string and byte slices
// together. It avoids the cost of repeatedly reallocating as the buffer grows
// by measuring exactly how big the buffer should be and then allocating once.
// This is a measurable speedup.
type Joiner struct {
	lastByte byte
	strings  []joinerString
	bytes    []joinerBytes
	length   uint32
}

type joinerString struct {
	data   string
	offset uint32
}

type joinerBytes struct {
	data   []byte
	offset uint32
}

func (j *Joiner) AddString(data string) {
	if len(data) > 0 {
		j.lastByte = data[len(data)-1]
	}
	j.strings = append(j.strings, joinerString{data, j.length})
	j.length += uint32(len(data))
}

func (j *Joiner) AddBytes(data []byte) {
	if len(data) > 0 {
		j.lastByte = data[len(data)-1]
	}
	j.bytes = append(j.bytes, joinerBytes{data, j.length})
	j.length += uint32(len(data))
}

func (j *Joiner) LastByte() byte {
	return j.lastByte
}

func (j *Joiner) Length() uint32 {
	return j.length
}

func (j *Joiner) EnsureNewlineAtEnd() {
	if j.length > 0 && j.lastByte != '\n' {
		j.AddString("\n")
	}
}

func (j *Joiner) Done() []byte {
	if len(j.strings) == 0 && len(j.bytes) == 1 && j.bytes[0].offset == 0 {
		// No need to allocate if there was only a single byte array written
		return j.bytes[0].data
	}
	buffer := make([]byte, j.length)
	for _,
Download .txt
gitextract_v3t26jmm/

├── .changeset/
│   ├── README.md
│   └── config.json
├── .devcontainer/
│   ├── Dockerfile
│   └── devcontainer.json
├── .editorconfig
├── .git-blame-ignore-revs
├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── ---01-bug-report.yml
│   │   └── config.yml
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── workflows/
│       ├── ci.yml
│       ├── congrats.yml
│       ├── issue-labeled.yml
│       ├── issue-needs-repro.yml
│       ├── issue-opened.yml
│       └── release.yml
├── .gitignore
├── .gitpod.yml
├── .golangci.yml
├── .prettierignore
├── .vscode/
│   └── settings.json
├── CONTRIBUTING.md
├── LICENSE
├── Makefile
├── SYNTAX_SPEC.md
├── biome.json
├── cmd/
│   └── astro-wasm/
│       └── astro-wasm.go
├── go.mod
├── go.sum
├── internal/
│   ├── const.go
│   ├── doc.go
│   ├── doctype.go
│   ├── entity.go
│   ├── escape.go
│   ├── foreign.go
│   ├── handler/
│   │   └── handler.go
│   ├── hash.go
│   ├── helpers/
│   │   ├── joiner.go
│   │   └── js_comment_utils.go
│   ├── js_scanner/
│   │   ├── js_scanner.go
│   │   ├── js_scanner_test.go
│   │   └── testdata/
│   │       └── fuzz/
│   │           └── FuzzHoistImport/
│   │               └── ec55358ab2929fbf4deab52587664e42682f0a6ea201a325c5c33f9d18c50456
│   ├── loc/
│   │   ├── diagnostics.go
│   │   └── loc.go
│   ├── node.go
│   ├── parser.go
│   ├── parser_test.go
│   ├── print-to-source.go
│   ├── printer/
│   │   ├── __printer_css__/
│   │   │   ├── scopedStyleStrategy___attribute_.snap
│   │   │   ├── scopedStyleStrategy___class_.snap
│   │   │   └── styles__no_frontmatter_.snap
│   │   ├── __printer_js__/
│   │   │   ├── All_components.snap
│   │   │   ├── Component_is_raw.snap
│   │   │   ├── Component_names_A-Z.snap
│   │   │   ├── Component_siblings_are_siblings.snap
│   │   │   ├── Component_with_await.snap
│   │   │   ├── Empty_attribute_expression.snap
│   │   │   ├── Empty_expression.snap
│   │   │   ├── Empty_expression_with_whitespace.snap
│   │   │   ├── Empty_script.snap
│   │   │   ├── Empty_style.snap
│   │   │   ├── Expression_in_form_followed_by_other_sibling_forms.snap
│   │   │   ├── Fragment.snap
│   │   │   ├── Fragment_literal_only.snap
│   │   │   ├── Fragment_shorthand.snap
│   │   │   ├── Fragment_shorthand_only.snap
│   │   │   ├── Fragment_shorthand_with_await.snap
│   │   │   ├── Fragment_slotted.snap
│   │   │   ├── Fragment_slotted_with_name.snap
│   │   │   ├── Fragment_with_await.snap
│   │   │   ├── Fragment_wrapping_link_with_awaited_href.snap
│   │   │   ├── HTML_comment_in_component_inside_expression_I.snap
│   │   │   ├── HTML_comment_in_component_inside_expression_II.snap
│   │   │   ├── Mixed_style_siblings.snap
│   │   │   ├── Nested_HTML_in_expressions,_wrapped_in_parens.snap
│   │   │   ├── No_extra_script_tag.snap
│   │   │   ├── Parser_can_handle_files___4096_chars.snap
│   │   │   ├── Preserve_namespaces.snap
│   │   │   ├── Preserve_namespaces_for_components.snap
│   │   │   ├── Preserve_namespaces_in_expressions.snap
│   │   │   ├── Preserve_slot_attribute_at_root_level_in_expression.snap
│   │   │   ├── Preserve_slot_attribute_in_conditional_expression_for_custom_element.snap
│   │   │   ├── Preserve_slot_attribute_in_expression_for_custom_element.snap
│   │   │   ├── Preserve_slot_whitespace.snap
│   │   │   ├── Preserve_slots_inside_custom-element.snap
│   │   │   ├── React_framework_example.snap
│   │   │   ├── SVG_styles.snap
│   │   │   ├── Self-closing_components_in_head_can_have_siblings.snap
│   │   │   ├── Self-closing_components_siblings_are_siblings.snap
│   │   │   ├── Self-closing_formatting_elements.snap
│   │   │   ├── Self-closing_formatting_elements_2.snap
│   │   │   ├── Self-closing_script_in_head_works.snap
│   │   │   ├── Self-closing_title.snap
│   │   │   ├── Self-closing_title_II.snap
│   │   │   ├── Use_of_interfaces_within_frontmatter.snap
│   │   │   ├── XElement.snap
│   │   │   ├── _955_ternary_slot_with_elements.snap
│   │   │   ├── _955_ternary_slot_with_text.snap
│   │   │   ├── advanced_svg_expression.snap
│   │   │   ├── anchor_content.snap
│   │   │   ├── anchor_expressions.snap
│   │   │   ├── anchor_inside_expression.snap
│   │   │   ├── attribute_with_template_literal.snap
│   │   │   ├── attribute_with_template_literal_interpolation.snap
│   │   │   ├── backtick_in_HTML_comment.snap
│   │   │   ├── basic__frontmatter_.snap
│   │   │   ├── basic__no_frontmatter_.snap
│   │   │   ├── basic_renderHead.snap
│   │   │   ├── caption_only.snap
│   │   │   ├── class_and_class_list_object.snap
│   │   │   ├── class_and_class_list_set.snap
│   │   │   ├── class_and_class_list_simple_array.snap
│   │   │   ├── class_list.snap
│   │   │   ├── class_list_with_spread.snap
│   │   │   ├── class_with_spread.snap
│   │   │   ├── client_only_component__default_.snap
│   │   │   ├── client_only_component__multiple_.snap
│   │   │   ├── client_only_component__named_.snap
│   │   │   ├── client_only_component__namespace_.snap
│   │   │   ├── client_only_component__namespaced_default_.snap
│   │   │   ├── client_only_component__namespaced_named_.snap
│   │   │   ├── comment_only_expressions_are_removed_I.snap
│   │   │   ├── comment_only_expressions_are_removed_II.snap
│   │   │   ├── comment_only_expressions_are_removed_III.snap
│   │   │   ├── comments_removed_from_attribute_list.snap
│   │   │   ├── complex_nested_template_literal_expression.snap
│   │   │   ├── complex_recursive_component.snap
│   │   │   ├── complex_table.snap
│   │   │   ├── component.snap
│   │   │   ├── component_in_expression_with_its_child_expression_before_its_child_element.snap
│   │   │   ├── component_with_only_a_script.snap
│   │   │   ├── component_with_quoted_attributes.snap
│   │   │   ├── condition_expressions_at_the_top-level.snap
│   │   │   ├── condition_expressions_at_the_top-level_with_head_content.snap
│   │   │   ├── conditional_iframe.snap
│   │   │   ├── conditional_noscript.snap
│   │   │   ├── conditional_render.snap
│   │   │   ├── conditional_rendering_of_title_containing_expression.snap
│   │   │   ├── conditional_slot.snap
│   │   │   ├── css_comment_doesn’t_produce_semicolon.snap
│   │   │   ├── css_imports_are_not_included_in_module_metadata.snap
│   │   │   ├── custom-element.snap
│   │   │   ├── custom_elements.snap
│   │   │   ├── define_vars_on_a_module_script_with_imports.snap
│   │   │   ├── define_vars_on_non-root_elements.snap
│   │   │   ├── define_vars_on_script_with_StaticExpression_turned_on.snap
│   │   │   ├── define_vars_on_style.snap
│   │   │   ├── define_vars_on_style_tag_with_style_empty_attribute_on_element.snap
│   │   │   ├── define_vars_on_style_tag_with_style_expression_attribute_on_element.snap
│   │   │   ├── define_vars_on_style_tag_with_style_quoted_attribute_on_element.snap
│   │   │   ├── define_vars_on_style_tag_with_style_shorthand_attribute_on_element.snap
│   │   │   ├── define_vars_on_style_tag_with_style_template_literal_attribute_on_element.snap
│   │   │   ├── division_inside_expression.snap
│   │   │   ├── doctype.snap
│   │   │   ├── dot_component.snap
│   │   │   ├── dynamic_import.snap
│   │   │   ├── escaped_entity.snap
│   │   │   ├── export_comments_I.snap
│   │   │   ├── export_comments_II.snap
│   │   │   ├── export_member_does_not_panic.snap
│   │   │   ├── expression_returning_multiple_elements.snap
│   │   │   ├── expression_slot.snap
│   │   │   ├── expression_with_leading_whitespace.snap
│   │   │   ├── expressions_with_JS_comments.snap
│   │   │   ├── expressions_with_multiple_curly_braces.snap
│   │   │   ├── function_expression_slots_I.snap
│   │   │   ├── function_expression_slots_II___959_.snap
│   │   │   ├── getStaticPaths__basic_.snap
│   │   │   ├── getStaticPaths__hoisted_.snap
│   │   │   ├── getStaticPaths__hoisted_II_.snap
│   │   │   ├── gets_all_potential_hydrated_components.snap
│   │   │   ├── head_content_with_component_first.snap
│   │   │   ├── head_expression.snap
│   │   │   ├── head_expression_and_conditional_rendering_of_fragment.snap
│   │   │   ├── head_inside_slot.snap
│   │   │   ├── head_slot.snap
│   │   │   ├── head_slot_II.snap
│   │   │   ├── head_slot_III.snap
│   │   │   ├── html5_boilerplate.snap
│   │   │   ├── iframe.snap
│   │   │   ├── import.meta.env.snap
│   │   │   ├── import.meta.snap
│   │   │   ├── import_assertions.snap
│   │   │   ├── import_order.snap
│   │   │   ├── import_to_identifier_named_assert.snap
│   │   │   ├── includes_comments_for_expression_attribute.snap
│   │   │   ├── includes_comments_for_shorthand_attribute.snap
│   │   │   ├── is_raw.snap
│   │   │   ├── jsx_comment_between_doctype_and_html.snap
│   │   │   ├── map_basic.snap
│   │   │   ├── map_nested.snap
│   │   │   ├── map_with_component.snap
│   │   │   ├── map_without_component.snap
│   │   │   ├── maybeRenderHead_not_printed_for_hoisted_scripts.snap
│   │   │   ├── multibyte_character___script.snap
│   │   │   ├── multibyte_character___style.snap
│   │   │   ├── multibyte_characters.snap
│   │   │   ├── multiline_class_attribute_on_component.snap
│   │   │   ├── multiple_define_vars_on_style.snap
│   │   │   ├── namespace_is_preserved_when_inside_an_expression.snap
│   │   │   ├── nested_expressions.snap
│   │   │   ├── nested_expressions_II.snap
│   │   │   ├── nested_expressions_III.snap
│   │   │   ├── nested_expressions_IV.snap
│   │   │   ├── nested_expressions_V.snap
│   │   │   ├── nested_expressions_VI.snap
│   │   │   ├── nested_expressions_VII.snap
│   │   │   ├── nested_expressions_VIII.snap
│   │   │   ├── nested_head_content_stays_in_the_head.snap
│   │   │   ├── nested_template_literal_expression.snap
│   │   │   ├── no_expressions_in_math.snap
│   │   │   ├── noscript_component.snap
│   │   │   ├── noscript_deep_styles.snap
│   │   │   ├── noscript_only.snap
│   │   │   ├── noscript_styles.snap
│   │   │   ├── orphan_slot.snap
│   │   │   ├── passes_escaped_filename_into_createComponent_if_it_contains_single_quotes.snap
│   │   │   ├── passes_filename_into_createComponent_if_passed_into_the_compiler_options.snap
│   │   │   ├── preserve_is_inline_slot.snap
│   │   │   ├── preserve_is_inline_slot_II.snap
│   │   │   ├── script.snap
│   │   │   ├── script_before_elements.snap
│   │   │   ├── script_define_vars_I.snap
│   │   │   ├── script_define_vars_II.snap
│   │   │   ├── script_external.snap
│   │   │   ├── script_external_in_expression.snap
│   │   │   ├── script_hoist_with_frontmatter.snap
│   │   │   ├── script_hoist_without_frontmatter.snap
│   │   │   ├── script_in__head_.snap
│   │   │   ├── script_in_expression.snap
│   │   │   ├── script_inline.snap
│   │   │   ├── script_mixed_handled_and_inline.snap
│   │   │   ├── script_multiple.snap
│   │   │   ├── scriptinline.snap
│   │   │   ├── select_in_form.snap
│   │   │   ├── select_map_expression.snap
│   │   │   ├── select_nested_option.snap
│   │   │   ├── select_option_expression.snap
│   │   │   ├── selectedcontent_element_in_customizable_select.snap
│   │   │   ├── selectedcontent_self-closing_element.snap
│   │   │   ├── self-closing_td.snap
│   │   │   ├── set_html.snap
│   │   │   ├── set_html_and_set_text.snap
│   │   │   ├── set_html_on_Component.snap
│   │   │   ├── set_html_on_Component_with_quoted_attribute.snap
│   │   │   ├── set_html_on_Component_with_template_literal_attribute_with_variable.snap
│   │   │   ├── set_html_on_Component_with_template_literal_attribute_without_variable.snap
│   │   │   ├── set_html_on_Fragment.snap
│   │   │   ├── set_html_on_Fragment_with_quoted_attribute.snap
│   │   │   ├── set_html_on_Fragment_with_template_literal_attribute_with_variable.snap
│   │   │   ├── set_html_on_Fragment_with_template_literal_attribute_without_variable.snap
│   │   │   ├── set_html_on_custom-element.snap
│   │   │   ├── set_html_on_custom-element_with_quoted_attribute.snap
│   │   │   ├── set_html_on_custom-element_with_template_literal_attribute_with_variable.snap
│   │   │   ├── set_html_on_custom-element_with_template_literal_attribute_without_variable.snap
│   │   │   ├── set_html_on_empty_tag.snap
│   │   │   ├── set_html_on_empty_tag_with_quoted_attribute.snap
│   │   │   ├── set_html_on_empty_tag_with_template_literal_attribute_with_variable.snap
│   │   │   ├── set_html_on_empty_tag_with_template_literal_attribute_without_variable.snap
│   │   │   ├── set_html_on_script.snap
│   │   │   ├── set_html_on_script_with_quoted_attribute.snap
│   │   │   ├── set_html_on_script_with_template_literal_attribute_with_variable.snap
│   │   │   ├── set_html_on_script_with_template_literal_attribute_without_variable.snap
│   │   │   ├── set_html_on_self-closing_tag.snap
│   │   │   ├── set_html_on_self-closing_tag_with_quoted_attribute.snap
│   │   │   ├── set_html_on_self-closing_tag_with_template_literal_attribute_with_variable.snap
│   │   │   ├── set_html_on_self-closing_tag_with_template_literal_attribute_without_variable.snap
│   │   │   ├── set_html_on_style.snap
│   │   │   ├── set_html_on_style_with_quoted_attribute.snap
│   │   │   ├── set_html_on_style_with_template_literal_attribute_with_variable.snap
│   │   │   ├── set_html_on_style_with_template_literal_attribute_without_variable.snap
│   │   │   ├── set_html_on_tag_with_children.snap
│   │   │   ├── set_html_on_tag_with_children_and_quoted_attribute.snap
│   │   │   ├── set_html_on_tag_with_children_and_template_literal_attribute_with_variable.snap
│   │   │   ├── set_html_on_tag_with_children_and_template_literal_attribute_without_variable.snap
│   │   │   ├── set_html_on_tag_with_empty_whitespace.snap
│   │   │   ├── set_html_on_tag_with_empty_whitespace_and_quoted_attribute.snap
│   │   │   ├── set_html_on_tag_with_empty_whitespace_and_template_literal_attribute_with_variable.snap
│   │   │   ├── set_html_on_tag_with_empty_whitespace_and_template_literal_attribute_without_variable.snap
│   │   │   ├── set_html_with_other_attributes.snap
│   │   │   ├── set_html_with_quoted_attribute.snap
│   │   │   ├── set_html_with_quoted_attribute_and_other_attributes.snap
│   │   │   ├── set_html_with_template_literal_attribute_with_variable.snap
│   │   │   ├── set_html_with_template_literal_attribute_with_variable_and_other_attributes.snap
│   │   │   ├── set_html_with_template_literal_attribute_without_variable.snap
│   │   │   ├── set_html_with_template_literal_attribute_without_variable_and_other_attributes.snap
│   │   │   ├── set_text.snap
│   │   │   ├── set_text_on_Component.snap
│   │   │   ├── set_text_on_Component_with_quoted_attribute.snap
│   │   │   ├── set_text_on_Component_with_template_literal_attribute_with_variable.snap
│   │   │   ├── set_text_on_Component_with_template_literal_attribute_without_variable.snap
│   │   │   ├── set_text_on_custom-element.snap
│   │   │   ├── set_text_on_custom-element_with_quoted_attribute.snap
│   │   │   ├── set_text_on_custom-element_with_template_literal_attribute_with_variable.snap
│   │   │   ├── set_text_on_custom-element_with_template_literal_attribute_without_variable.snap
│   │   │   ├── set_text_with_quoted_attribute.snap
│   │   │   ├── set_text_with_template_literal_attribute_with_variable.snap
│   │   │   ├── set_text_with_template_literal_attribute_without_variable.snap
│   │   │   ├── sibling_expressions.snap
│   │   │   ├── simple_ternary.snap
│   │   │   ├── slot_inside_of_Base.snap
│   │   │   ├── slot_with_fallback.snap
│   │   │   ├── slot_with_fallback_II.snap
│   │   │   ├── slot_with_fallback_III.snap
│   │   │   ├── slot_with_quoted_attributes.snap
│   │   │   ├── slots__basic_.snap
│   │   │   ├── slots__dynamic_name_.snap
│   │   │   ├── slots__expression_.snap
│   │   │   ├── slots__named_only_.snap
│   │   │   ├── slots__no_comments_.snap
│   │   │   ├── small_expression.snap
│   │   │   ├── solidus_in_template_literal_expression.snap
│   │   │   ├── spread_with_double_quotation_marks.snap
│   │   │   ├── spread_with_style_but_no_explicit_class.snap
│   │   │   ├── spread_without_style_or_class.snap
│   │   │   ├── styles__no_frontmatter_.snap
│   │   │   ├── svg_expressions.snap
│   │   │   ├── table.snap
│   │   │   ├── table_II.snap
│   │   │   ├── table_III.snap
│   │   │   ├── table_IV.snap
│   │   │   ├── table_caption_expression.snap
│   │   │   ├── table_expression_with_trailing_div.snap
│   │   │   ├── table_expressions__no_implicit_tbody_.snap
│   │   │   ├── table_simple_case.snap
│   │   │   ├── table_slot_I.snap
│   │   │   ├── table_slot_II.snap
│   │   │   ├── table_slot_III.snap
│   │   │   ├── table_slot_IV.snap
│   │   │   ├── table_slot_V.snap
│   │   │   ├── table_with_expression_in__th_.snap
│   │   │   ├── tbody_expressions.snap
│   │   │   ├── tbody_expressions_2.snap
│   │   │   ├── tbody_expressions_3.snap
│   │   │   ├── td_expressions.snap
│   │   │   ├── td_expressions_II.snap
│   │   │   ├── template_literal_attribute_on_component.snap
│   │   │   ├── template_literal_attribute_with_variable_on_component.snap
│   │   │   ├── ternary_component.snap
│   │   │   ├── ternary_layout.snap
│   │   │   ├── ternary_slot.snap
│   │   │   ├── text_after_title_expression.snap
│   │   │   ├── text_after_title_expressions.snap
│   │   │   ├── text_only.snap
│   │   │   ├── textarea.snap
│   │   │   ├── textarea_in_form.snap
│   │   │   ├── textarea_inside_expression.snap
│   │   │   ├── th_expressions.snap
│   │   │   ├── tr_only.snap
│   │   │   ├── trailing_expression.snap
│   │   │   ├── transition_animate_on_Component.snap
│   │   │   ├── transition_animate_with_an_expression.snap
│   │   │   ├── transition_name_with_an_expression.snap
│   │   │   ├── transition_name_with_an_template_literal.snap
│   │   │   ├── transition_persist-props_converted_to_a_data_attribute.snap
│   │   │   ├── transition_persist_converted_to_a_data_attribute.snap
│   │   │   ├── transition_persist_uses_transition_name_if_defined.snap
│   │   │   ├── type_import.snap
│   │   │   ├── unusual_line_terminator_I.snap
│   │   │   ├── unusual_line_terminator_II.snap
│   │   │   └── user-defined__implicit__is_printed.snap
│   │   ├── __printer_json__/
│   │   │   ├── Comment.snap
│   │   │   ├── Comment_preserves_whitespace.snap
│   │   │   ├── Component.snap
│   │   │   ├── Doctype.snap
│   │   │   ├── Fragment_Literal.snap
│   │   │   ├── Fragment_Shorthand.snap
│   │   │   ├── Frontmatter.snap
│   │   │   ├── JSON_escape.snap
│   │   │   ├── Preserve_namespaces.snap
│   │   │   ├── basic.snap
│   │   │   ├── custom-element.snap
│   │   │   ├── element_with_unterminated_double_quote_attribute.snap
│   │   │   ├── element_with_unterminated_single_quote_attribute.snap
│   │   │   ├── element_with_unterminated_template_literal_attribute.snap
│   │   │   ├── expression.snap
│   │   │   ├── jsx_comment_between_doctype_and_html.snap
│   │   │   ├── style_after_body_with_component_in_head_and_body.snap
│   │   │   ├── style_after_empty_html.snap
│   │   │   ├── style_after_html.snap
│   │   │   ├── style_after_html_with_component_in_head.snap
│   │   │   ├── style_after_html_with_component_in_head_and_body.snap
│   │   │   ├── style_before_html.snap
│   │   │   ├── style_in_body.snap
│   │   │   └── style_in_html.snap
│   │   ├── print-css.go
│   │   ├── print-to-js.go
│   │   ├── print-to-json.go
│   │   ├── print-to-tsx.go
│   │   ├── print-to-tsx_test.go
│   │   ├── printer.go
│   │   ├── printer_css_test.go
│   │   ├── printer_test.go
│   │   └── utils.go
│   ├── sourcemap/
│   │   └── sourcemap.go
│   ├── t/
│   │   └── t.go
│   ├── test_utils/
│   │   └── test_utils.go
│   ├── token.go
│   ├── token_test.go
│   ├── transform/
│   │   ├── scope-css.go
│   │   ├── scope-css_test.go
│   │   ├── scope-html.go
│   │   ├── scope-html_test.go
│   │   ├── transform.go
│   │   ├── transform_test.go
│   │   └── utils.go
│   └── xxhash/
│       ├── LICENSE.txt
│       ├── xxhash.go
│       └── xxhash_other.go
├── internal_wasm/
│   └── utils/
│       └── utils.go
├── lib/
│   └── esbuild/
│       ├── LICENSE.md
│       ├── ast/
│       │   └── ast.go
│       ├── compat/
│       │   ├── compat.go
│       │   ├── css_table.go
│       │   └── js_table.go
│       ├── config/
│       │   ├── config.go
│       │   └── globals.go
│       ├── css_ast/
│       │   ├── css_ast.go
│       │   └── css_decl_table.go
│       ├── css_lexer/
│       │   ├── css_lexer.go
│       │   └── css_lexer_test.go
│       ├── css_parser/
│       │   ├── css_decls.go
│       │   ├── css_decls_border_radius.go
│       │   ├── css_decls_box.go
│       │   ├── css_decls_box_shadow.go
│       │   ├── css_decls_color.go
│       │   ├── css_decls_font.go
│       │   ├── css_decls_font_family.go
│       │   ├── css_decls_font_weight.go
│       │   ├── css_decls_transform.go
│       │   ├── css_parser.go
│       │   ├── css_parser_selector.go
│       │   ├── css_parser_test.go
│       │   └── css_reduce_calc.go
│       ├── css_printer/
│       │   ├── astro_features.go
│       │   ├── css_printer.go
│       │   └── css_printer_test.go
│       ├── esbuild.go
│       ├── helpers/
│       │   ├── bitset.go
│       │   ├── comment.go
│       │   ├── hash.go
│       │   ├── joiner.go
│       │   ├── mime.go
│       │   ├── path.go
│       │   ├── serializer.go
│       │   ├── stack.go
│       │   ├── timer.go
│       │   ├── typos.go
│       │   └── utf.go
│       ├── logger/
│       │   ├── logger.go
│       │   ├── logger_darwin.go
│       │   ├── logger_linux.go
│       │   ├── logger_other.go
│       │   └── logger_windows.go
│       ├── sourcemap/
│       │   └── sourcemap.go
│       └── test/
│           ├── diff.go
│           └── util.go
├── package.json
├── packages/
│   └── compiler/
│       ├── .gitignore
│       ├── CHANGELOG.md
│       ├── README.md
│       ├── package.json
│       ├── src/
│       │   ├── browser/
│       │   │   ├── index.ts
│       │   │   ├── utils.ts
│       │   │   └── wasm_exec.ts
│       │   ├── node/
│       │   │   ├── index.ts
│       │   │   ├── sync.ts
│       │   │   ├── utils.ts
│       │   │   └── wasm_exec.ts
│       │   └── shared/
│       │       ├── ast.ts
│       │       ├── diagnostics.ts
│       │       └── types.ts
│       ├── sync.d.ts
│       ├── test/
│       │   ├── bad-styles/
│       │   │   ├── sass.ts
│       │   │   └── unclosed-style.ts
│       │   ├── basic/
│       │   │   ├── body-after-head-component.ts
│       │   │   ├── body-expression.ts
│       │   │   ├── comment.ts
│       │   │   ├── component-metadata/
│       │   │   │   └── index.ts
│       │   │   ├── component-name.ts
│       │   │   ├── export.ts
│       │   │   ├── expression-then-node.ts
│       │   │   ├── expressions.ts
│       │   │   ├── fragment.ts
│       │   │   ├── get-static-paths.ts
│       │   │   ├── head-injection.ts
│       │   │   ├── lt-gt-text.ts
│       │   │   ├── null-chars.ts
│       │   │   ├── props-interface.ts
│       │   │   ├── script-before-html.ts
│       │   │   ├── script-fragment.ts
│       │   │   ├── top-level-expressions.ts
│       │   │   ├── trailing-newline.ts
│       │   │   ├── trailing-space.ts
│       │   │   └── trailing-spaces-ii.ts
│       │   ├── client-directive/
│       │   │   ├── special-characters.ts
│       │   │   └── warn.ts
│       │   ├── compact/
│       │   │   └── minify.ts
│       │   ├── css-order/
│       │   │   ├── astro-styles.ts
│       │   │   └── imported-styles.ts
│       │   ├── errors/
│       │   │   ├── client-only-unfound.ts
│       │   │   ├── define-vars.ts
│       │   │   ├── fragment-shorthand.ts
│       │   │   ├── html-comment.ts
│       │   │   ├── invalid-spread.ts
│       │   │   ├── jsx-comment.ts
│       │   │   └── missing-frontmatter-fence.ts
│       │   ├── head-metadata/
│       │   │   ├── with-head.ts
│       │   │   └── without-head.ts
│       │   ├── js-sourcemaps/
│       │   │   ├── complex-frontmatter.ts
│       │   │   ├── deprecated.ts
│       │   │   ├── error.ts
│       │   │   ├── frontmatter.ts
│       │   │   ├── hover.ts
│       │   │   ├── module.ts
│       │   │   ├── script.ts
│       │   │   ├── template.ts
│       │   │   └── windows-linereturns.ts
│       │   ├── parse/
│       │   │   ├── ast.ts
│       │   │   ├── client-component-unfound.ts
│       │   │   ├── escaping.ts
│       │   │   ├── fragment.ts
│       │   │   ├── literal.ts
│       │   │   ├── multibyte-characters.ts
│       │   │   ├── orphan-head.ts
│       │   │   ├── orphan-slot.ts
│       │   │   ├── position.ts
│       │   │   └── serialize.ts
│       │   ├── resolve-path/
│       │   │   └── preserve.ts
│       │   ├── scope/
│       │   │   └── same-source.ts
│       │   ├── scripts/
│       │   │   ├── isinline-hint.ts
│       │   │   └── order.ts
│       │   ├── server-islands/
│       │   │   └── meta.ts
│       │   ├── slot-result/
│       │   │   └── result.ts
│       │   ├── static-extraction/
│       │   │   ├── css.ts
│       │   │   └── hoist-expression.ts
│       │   ├── stress/
│       │   │   └── index.ts
│       │   ├── styles/
│       │   │   ├── define-vars.ts
│       │   │   ├── emit-scope.ts
│       │   │   ├── empty-style.ts
│       │   │   ├── hash.ts
│       │   │   └── sass.ts
│       │   ├── table/
│       │   │   ├── components.ts
│       │   │   ├── expressions.ts
│       │   │   └── in-expression.ts
│       │   ├── teardown/
│       │   │   └── parse.ts
│       │   ├── transition/
│       │   │   ├── data-astro.ts
│       │   │   └── meta.ts
│       │   ├── tsx/
│       │   │   ├── basic.ts
│       │   │   ├── comment-whitespace.ts
│       │   │   ├── complex-generics.ts
│       │   │   ├── escape.ts
│       │   │   ├── line-terminator.ts
│       │   │   ├── literal-style-tag.ts
│       │   │   ├── meta.ts
│       │   │   ├── nested-generics.ts
│       │   │   ├── non-latin.ts
│       │   │   ├── props-and-getStaticPaths.ts
│       │   │   ├── props.ts
│       │   │   ├── raw.ts
│       │   │   ├── script.ts
│       │   │   └── top-level-returns.ts
│       │   ├── tsx-errors/
│       │   │   ├── eof.ts
│       │   │   ├── fragment-shorthand.ts
│       │   │   └── unfinished-component.ts
│       │   ├── tsx-sourcemaps/
│       │   │   ├── 404.ts
│       │   │   ├── attributes.ts
│       │   │   ├── deprecated.ts
│       │   │   ├── error.ts
│       │   │   ├── frontmatter.ts
│       │   │   ├── hover.ts
│       │   │   ├── module.ts
│       │   │   ├── multibyte.ts
│       │   │   ├── script.ts
│       │   │   ├── tags.ts
│       │   │   ├── template-windows.ts
│       │   │   ├── template.ts
│       │   │   └── unfinished-literal.ts
│       │   └── utils.ts
│       ├── tsconfig.json
│       ├── tsup.config.ts
│       ├── types.d.ts
│       └── utils.d.ts
└── pnpm-workspace.yaml
Download .txt
SYMBOL INDEX (1884 symbols across 154 files)

FILE: cmd/astro-wasm/astro-wasm.go
  function main (line 25) | func main() {
  function jsString (line 35) | func jsString(j js.Value) string {
  function jsBoolOptional (line 42) | func jsBoolOptional(j js.Value, defaultValue bool) bool {
  function jsBool (line 49) | func jsBool(j js.Value) bool {
  function makeParseOptions (line 56) | func makeParseOptions(options js.Value) t.ParseOptions {
  function makeTransformOptions (line 75) | func makeTransformOptions(options js.Value) transform.TransformOptions {
  function makeTSXOptions (line 154) | func makeTSXOptions(options js.Value) printer.TSXOptions {
  type RawSourceMap (line 164) | type RawSourceMap struct
  type HoistedScript (line 173) | type HoistedScript struct
  type HydratedComponent (line 180) | type HydratedComponent struct
  type ParseResult (line 187) | type ParseResult struct
  type TSXResult (line 192) | type TSXResult struct
  type TransformResult (line 199) | type TransformResult struct
  function preprocessStyle (line 215) | func preprocessStyle(i int, style *astro.Node, transformOptions transfor...
  function Parse (line 241) | func Parse() any {
  function ConvertToTSX (line 266) | func ConvertToTSX() any {
  function Transform (line 302) | func Transform() any {
  function createSourceMapString (line 488) | func createSourceMapString(source string, result printer.PrintResult, tr...
  function createExternalSourceMap (line 505) | func createExternalSourceMap(source string, transformResult *TransformRe...
  function createInlineSourceMap (line 511) | func createInlineSourceMap(source string, transformResult *TransformResu...
  function createBothSourceMap (line 519) | func createBothSourceMap(source string, transformResult *TransformResult...

FILE: internal/const.go
  function isSpecialElement (line 97) | func isSpecialElement(element *Node) bool {
  function IsKnownDirective (line 125) | func IsKnownDirective(element *Node, attr *Attribute) bool {

FILE: internal/doctype.go
  function parseDoctype (line 16) | func parseDoctype(s string) (n *Node, quirks bool) {

FILE: internal/entity.go
  constant longestEntityWithoutSemicolon (line 8) | longestEntityWithoutSemicolon = 6

FILE: internal/escape.go
  type writer (line 14) | type writer interface
  function unescapeEntity (line 64) | func unescapeEntity(b []byte, dst, src int, attribute bool) (dst1, src1 ...
  function unescape (line 174) | func unescape(b []byte, attribute bool) []byte {
  constant escapedChars (line 193) | escapedChars = "&'<>\"\r"
  function escape (line 195) | func escape(w writer, s string) error {
  function EscapeString (line 234) | func EscapeString(s string) string {
  function UnescapeString (line 248) | func UnescapeString(s string) string {

FILE: internal/foreign.go
  function adjustAttributeNames (line 11) | func adjustAttributeNames(aa []Attribute, nameMap map[string]string) {
  function adjustForeignAttributes (line 19) | func adjustForeignAttributes(aa []Attribute) {
  function htmlIntegrationPoint (line 34) | func htmlIntegrationPoint(n *Node) bool {
  function mathMLTextIntegrationPoint (line 59) | func mathMLTextIntegrationPoint(n *Node) bool {

FILE: internal/handler/handler.go
  type Handler (line 11) | type Handler struct
    method HasErrors (line 33) | func (h *Handler) HasErrors() bool {
    method AppendError (line 37) | func (h *Handler) AppendError(err error) {
    method AppendWarning (line 41) | func (h *Handler) AppendWarning(err error) {
    method AppendInfo (line 45) | func (h *Handler) AppendInfo(err error) {
    method AppendHint (line 49) | func (h *Handler) AppendHint(err error) {
    method Errors (line 53) | func (h *Handler) Errors() []loc.DiagnosticMessage {
    method Warnings (line 63) | func (h *Handler) Warnings() []loc.DiagnosticMessage {
    method Diagnostics (line 73) | func (h *Handler) Diagnostics() []loc.DiagnosticMessage {
  function NewHandler (line 21) | func NewHandler(sourcetext string, filename string) *Handler {
  function ErrorToMessage (line 98) | func ErrorToMessage(h *Handler, severity loc.DiagnosticSeverity, err err...

FILE: internal/hash.go
  function HashString (line 10) | func HashString(str string) string {

FILE: internal/helpers/joiner.go
  type Joiner (line 12) | type Joiner struct
    method AddString (line 29) | func (j *Joiner) AddString(data string) {
    method AddBytes (line 37) | func (j *Joiner) AddBytes(data []byte) {
    method LastByte (line 45) | func (j *Joiner) LastByte() byte {
    method Length (line 49) | func (j *Joiner) Length() uint32 {
    method EnsureNewlineAtEnd (line 53) | func (j *Joiner) EnsureNewlineAtEnd() {
    method Done (line 59) | func (j *Joiner) Done() []byte {
    method Contains (line 74) | func (j *Joiner) Contains(s string, b []byte) bool {
  type joinerString (line 19) | type joinerString struct
  type joinerBytes (line 24) | type joinerBytes struct

FILE: internal/helpers/js_comment_utils.go
  function peekIs (line 7) | func peekIs(input string, cur int, assert byte) bool {
  function RemoveComments (line 12) | func RemoveComments(input string) string {

FILE: internal/js_scanner/js_scanner.go
  function FindTopLevelReturns (line 21) | func FindTopLevelReturns(source []byte) []int {
  type HoistedScripts (line 215) | type HoistedScripts struct
  function HoistExports (line 222) | func HoistExports(source []byte) HoistedScripts {
  function isKeyword (line 428) | func isKeyword(value []byte) bool {
  function isPropsAliasing (line 434) | func isPropsAliasing(idents []string) bool {
  function HoistImports (line 438) | func HoistImports(source []byte) HoistedScripts {
  function HasGetStaticPaths (line 461) | func HasGetStaticPaths(source []byte) bool {
  type Props (line 476) | type Props struct
  function GetPropsType (line 482) | func GetPropsType(source []byte) Props {
  function IsIdentifier (line 647) | func IsIdentifier(value []byte) bool {
  function GetObjectKeys (line 664) | func GetObjectKeys(source []byte) [][]byte {
  type Import (line 735) | type Import struct
  type ImportStatement (line 742) | type ImportStatement struct
  type ImportState (line 751) | type ImportState
  constant ImportDefault (line 754) | ImportDefault ImportState = iota
  constant ImportNamed (line 755) | ImportNamed
  function NextImportStatement (line 758) | func NextImportStatement(source []byte, pos int) (int, ImportStatement) {
  function ExtractComponentExportName (line 935) | func ExtractComponentExportName(data string, imported Import) (string, b...

FILE: internal/js_scanner/js_scanner_test.go
  type testcase (line 14) | type testcase struct
  function TestFindTopLevelReturns (line 22) | func TestFindTopLevelReturns(t *testing.T) {
  function fixturesHoistImport (line 177) | func fixturesHoistImport() []testcase {
  function TestHoistImport (line 366) | func TestHoistImport(t *testing.T) {
  function FuzzHoistImport (line 391) | func FuzzHoistImport(f *testing.F) {
  function TestHoistExport (line 409) | func TestHoistExport(t *testing.T) {
  type keytestcase (line 855) | type keytestcase struct
  function TestGetObjectKeys (line 862) | func TestGetObjectKeys(t *testing.T) {
  type propsTestCase (line 937) | type propsTestCase struct
  function makeProps (line 944) | func makeProps(ident string, statement string, generics string) Props {
  function getPropsTypeTestCases (line 953) | func getPropsTypeTestCases() []propsTestCase {
  function assertPropsEqual (line 1010) | func assertPropsEqual(t *testing.T, got, want Props, source string) {
  function TestGetPropsType (line 1025) | func TestGetPropsType(t *testing.T) {

FILE: internal/loc/diagnostics.go
  type DiagnosticCode (line 3) | type DiagnosticCode
  constant ERROR (line 6) | ERROR                             DiagnosticCode = 1000
  constant ERROR_UNTERMINATED_JS_COMMENT (line 7) | ERROR_UNTERMINATED_JS_COMMENT     DiagnosticCode = 1001
  constant ERROR_FRAGMENT_SHORTHAND_ATTRS (line 8) | ERROR_FRAGMENT_SHORTHAND_ATTRS    DiagnosticCode = 1002
  constant ERROR_UNMATCHED_IMPORT (line 9) | ERROR_UNMATCHED_IMPORT            DiagnosticCode = 1003
  constant ERROR_UNSUPPORTED_SLOT_ATTRIBUTE (line 10) | ERROR_UNSUPPORTED_SLOT_ATTRIBUTE  DiagnosticCode = 1004
  constant ERROR_UNTERMINATED_STRING (line 11) | ERROR_UNTERMINATED_STRING         DiagnosticCode = 1005
  constant ERROR_MISSING_FRONTMATTER_FENCE (line 12) | ERROR_MISSING_FRONTMATTER_FENCE   DiagnosticCode = 1006
  constant WARNING (line 13) | WARNING                           DiagnosticCode = 2000
  constant WARNING_UNTERMINATED_HTML_COMMENT (line 14) | WARNING_UNTERMINATED_HTML_COMMENT DiagnosticCode = 2001
  constant WARNING_UNCLOSED_HTML_TAG (line 15) | WARNING_UNCLOSED_HTML_TAG         DiagnosticCode = 2002
  constant WARNING_DEPRECATED_DIRECTIVE (line 16) | WARNING_DEPRECATED_DIRECTIVE      DiagnosticCode = 2003
  constant WARNING_IGNORED_DIRECTIVE (line 17) | WARNING_IGNORED_DIRECTIVE         DiagnosticCode = 2004
  constant WARNING_UNSUPPORTED_EXPRESSION (line 18) | WARNING_UNSUPPORTED_EXPRESSION    DiagnosticCode = 2005
  constant WARNING_SET_WITH_CHILDREN (line 19) | WARNING_SET_WITH_CHILDREN         DiagnosticCode = 2006
  constant WARNING_CANNOT_DEFINE_VARS (line 20) | WARNING_CANNOT_DEFINE_VARS        DiagnosticCode = 2007
  constant WARNING_INVALID_SPREAD (line 21) | WARNING_INVALID_SPREAD            DiagnosticCode = 2008
  constant WARNING_UNEXPECTED_CHARACTER (line 22) | WARNING_UNEXPECTED_CHARACTER      DiagnosticCode = 2009
  constant WARNING_CANNOT_RERUN (line 23) | WARNING_CANNOT_RERUN              DiagnosticCode = 2010
  constant INFO (line 24) | INFO                              DiagnosticCode = 3000
  constant HINT (line 25) | HINT                              DiagnosticCode = 4000

FILE: internal/loc/loc.go
  type Loc (line 3) | type Loc struct
  type Range (line 8) | type Range struct
    method End (line 13) | func (r Range) End() int {
  type Span (line 19) | type Span struct
  type TSXRange (line 23) | type TSXRange struct
  type DiagnosticSeverity (line 29) | type DiagnosticSeverity
  constant ErrorType (line 32) | ErrorType       DiagnosticSeverity = 1
  constant WarningType (line 33) | WarningType     DiagnosticSeverity = 2
  constant InformationType (line 34) | InformationType DiagnosticSeverity = 3
  constant HintType (line 35) | HintType        DiagnosticSeverity = 4
  type DiagnosticMessage (line 38) | type DiagnosticMessage struct
  type DiagnosticLocation (line 46) | type DiagnosticLocation struct
  type ErrorWithRange (line 53) | type ErrorWithRange struct
    method Error (line 60) | func (e *ErrorWithRange) Error() string {
    method ToMessage (line 64) | func (e *ErrorWithRange) ToMessage(location *DiagnosticLocation) Diagn...

FILE: internal/node.go
  type NodeType (line 13) | type NodeType
    method String (line 34) | func (t NodeType) String() string {
  constant ErrorNode (line 16) | ErrorNode NodeType = iota
  constant TextNode (line 17) | TextNode
  constant DocumentNode (line 18) | DocumentNode
  constant ElementNode (line 19) | ElementNode
  constant CommentNode (line 20) | CommentNode
  constant DoctypeNode (line 21) | DoctypeNode
  constant RawNode (line 26) | RawNode
  constant scopeMarkerNode (line 27) | scopeMarkerNode
  constant FrontmatterNode (line 29) | FrontmatterNode
  constant ExpressionNode (line 30) | ExpressionNode
  constant RenderHeadNode (line 31) | RenderHeadNode
  constant ImplicitNodeMarker (line 58) | ImplicitNodeMarker = "\x00implicit"
  type HydratedComponentMetadata (line 66) | type HydratedComponentMetadata struct
  type Node (line 82) | type Node struct
    method InsertBefore (line 119) | func (n *Node) InsertBefore(newChild, oldChild *Node) {
    method AppendChild (line 147) | func (n *Node) AppendChild(c *Node) {
    method RemoveChild (line 166) | func (n *Node) RemoveChild(c *Node) {
    method Closest (line 187) | func (n *Node) Closest(check func(*Node) bool) *Node {
    method RemoveAttribute (line 210) | func (n *Node) RemoveAttribute(key string) {
    method clone (line 233) | func (n *Node) clone() *Node {
  function GetAttribute (line 201) | func GetAttribute(n *Node, key string) *Attribute {
  function reparentChildren (line 220) | func reparentChildren(dst, src *Node) {
  type nodeStack (line 249) | type nodeStack
    method pop (line 252) | func (s *nodeStack) pop() *Node {
    method top (line 263) | func (s *nodeStack) top() *Node {
    method index (line 272) | func (s *nodeStack) index(n *Node) int {
    method contains (line 282) | func (s *nodeStack) contains(a atom.Atom) bool {
    method insert (line 292) | func (s *nodeStack) insert(i int, n *Node) {
    method remove (line 299) | func (s *nodeStack) remove(n *Node) {
  type insertionModeStack (line 310) | type insertionModeStack
    method pop (line 312) | func (s *insertionModeStack) pop() (im insertionMode) {
    method top (line 319) | func (s *insertionModeStack) top() insertionMode {

FILE: internal/parser.go
  type parser (line 20) | type parser struct
    method top (line 66) | func (p *parser) top() *Node {
    method popUntil (line 111) | func (p *parser) popUntil(s scope, matchTags ...a.Atom) bool {
    method indexOfElementInScope (line 122) | func (p *parser) indexOfElementInScope(s scope, matchTags ...a.Atom) i...
    method elementInScope (line 168) | func (p *parser) elementInScope(s scope, matchTags ...a.Atom) bool {
    method clearStackToContext (line 174) | func (p *parser) clearStackToContext(s scope) {
    method parseGenericRawTextElement (line 204) | func (p *parser) parseGenericRawTextElement() {
    method generateLoc (line 210) | func (p *parser) generateLoc() []loc.Loc {
    method addLoc (line 222) | func (p *parser) addLoc() {
    method generateImpliedEndTags (line 232) | func (p *parser) generateImpliedEndTags(exceptions ...string) {
    method addChild (line 257) | func (p *parser) addChild(n *Node) {
    method shouldFosterParent (line 271) | func (p *parser) shouldFosterParent() bool {
    method fosterParent (line 283) | func (p *parser) fosterParent(n *Node) {
    method addText (line 331) | func (p *parser) addText(text string) {
    method addFrontmatter (line 357) | func (p *parser) addFrontmatter(empty bool) {
    method addExpression (line 383) | func (p *parser) addExpression() {
    method isInsideHead (line 418) | func (p *parser) isInsideHead() bool {
    method addElement (line 430) | func (p *parser) addElement() {
    method addFormattingElement (line 445) | func (p *parser) addFormattingElement() {
    method clearActiveFormattingElements (line 492) | func (p *parser) clearActiveFormattingElements() {
    method reconstructActiveFormattingElements (line 501) | func (p *parser) reconstructActiveFormattingElements() {
    method acknowledgeSelfClosingTag (line 530) | func (p *parser) acknowledgeSelfClosingTag() {
    method setOriginalIM (line 543) | func (p *parser) setOriginalIM() {
    method resetInsertionMode (line 551) | func (p *parser) resetInsertionMode() {
    method inTemplateFragmentContext (line 1611) | func (p *parser) inTemplateFragmentContext() bool {
    method inBodyEndTagFormatting (line 1615) | func (p *parser) inBodyEndTagFormatting(tagAtom a.Atom, tagName string) {
    method inBodyEndTagOther (line 1771) | func (p *parser) inBodyEndTagOther(tagAtom a.Atom, tagName string) {
    method adjustedCurrentNode (line 2985) | func (p *parser) adjustedCurrentNode() *Node {
    method inForeignContent (line 2993) | func (p *parser) inForeignContent() bool {
    method parseImpliedToken (line 3023) | func (p *parser) parseImpliedToken(t TokenType, dataAtom a.Atom, data ...
    method parseCurrentToken (line 3038) | func (p *parser) parseCurrentToken() {
    method parse (line 3062) | func (p *parser) parse() error {
  type scope (line 82) | type scope
  constant defaultScope (line 85) | defaultScope scope = iota
  constant listItemScope (line 86) | listItemScope
  constant buttonScope (line 87) | buttonScope
  constant tableScope (line 88) | tableScope
  constant tableRowScope (line 89) | tableRowScope
  constant tableBodyScope (line 90) | tableBodyScope
  constant selectScope (line 91) | selectScope
  function isFragment (line 399) | func isFragment(data string) bool {
  function isSlot (line 403) | func isSlot(data string) bool {
  function isComponent (line 407) | func isComponent(data string) bool {
  function isCustomElement (line 414) | func isCustomElement(data string) bool {
  type insertionMode (line 538) | type insertionMode
  constant whitespace (line 622) | whitespace = " \t\r\n\f"
  function initialIM (line 625) | func initialIM(p *parser) bool {
  function beforeHTMLIM (line 660) | func beforeHTMLIM(p *parser) bool {
  function beforeHeadIM (line 729) | func beforeHeadIM(p *parser) bool {
  function inHeadIM (line 784) | func inHeadIM(p *parser) bool {
  function inHeadNoscriptIM (line 971) | func inHeadNoscriptIM(p *parser) bool {
  function afterHeadIM (line 1020) | func afterHeadIM(p *parser) bool {
  function copyAttributes (line 1091) | func copyAttributes(dst *Node, src Token) {
  function removeImplicitMarker (line 1110) | func removeImplicitMarker(n *Node) {
  function inBodyIM (line 1120) | func inBodyIM(p *parser) bool {
  function textIM (line 1797) | func textIM(p *parser) bool {
  function inTableIM (line 1837) | func inTableIM(p *parser) bool {
  function inCaptionIM (line 1972) | func inCaptionIM(p *parser) bool {
  function inColumnGroupIM (line 2032) | func inColumnGroupIM(p *parser) bool {
  function inTableBodyIM (line 2108) | func inTableBodyIM(p *parser) bool {
  function inRowIM (line 2177) | func inRowIM(p *parser) bool {
  function inCellIM (line 2243) | func inCellIM(p *parser) bool {
  function inSelectIM (line 2309) | func inSelectIM(p *parser) bool {
  function inSelectInTableIM (line 2420) | func inSelectInTableIM(p *parser) bool {
  function inTemplateIM (line 2447) | func inTemplateIM(p *parser) bool {
  function afterBodyIM (line 2520) | func afterBodyIM(p *parser) bool {
  function inFramesetIM (line 2564) | func inFramesetIM(p *parser) bool {
  function afterFramesetIM (line 2615) | func afterFramesetIM(p *parser) bool {
  function afterAfterBodyIM (line 2655) | func afterAfterBodyIM(p *parser) bool {
  function afterAfterFramesetIM (line 2685) | func afterAfterFramesetIM(p *parser) bool {
  function frontmatterIM (line 2722) | func frontmatterIM(p *parser) bool {
  function inLiteralIM (line 2775) | func inLiteralIM(p *parser) bool {
  function inExpressionIM (line 2816) | func inExpressionIM(p *parser) bool {
  function ignoreTheRemainingTokens (line 2878) | func ignoreTheRemainingTokens(p *parser) bool {
  function getExitLiteralFunc (line 2883) | func getExitLiteralFunc(p *parser) func() bool {
  constant whitespaceOrNUL (line 2890) | whitespaceOrNUL = whitespace + "\x00"
  function parseForeignContent (line 2893) | func parseForeignContent(p *parser) bool {
  function Parse (line 3095) | func Parse(r io.Reader) (*Node, error) {
  type ParseOption (line 3100) | type ParseOption
  function ParseOptionWithHandler (line 3102) | func ParseOptionWithHandler(h *handler.Handler) ParseOption {
  function ParseOptionEnableScripting (line 3113) | func ParseOptionEnableScripting(enable bool) ParseOption {
  function ParseOptionEnableLiteral (line 3119) | func ParseOptionEnableLiteral(enable bool) ParseOption {
  function ParseWithOptions (line 3126) | func ParseWithOptions(r io.Reader, opts ...ParseOption) (*Node, error) {
  function ParseFragmentWithOptions (line 3152) | func ParseFragmentWithOptions(r io.Reader, context *Node, opts ...ParseO...

FILE: internal/parser_test.go
  type ParserLocTest (line 12) | type ParserLocTest struct
  function TestParserLocation (line 18) | func TestParserLocation(t *testing.T) {
  function runParserLocTest (line 74) | func runParserLocTest(t *testing.T, suite []ParserLocTest) {
  function walk (line 103) | func walk(doc *Node, cb func(*Node)) {
  function findTargetNode (line 114) | func findTargetNode(doc *Node) *Node {

FILE: internal/print-to-source.go
  function PrintToSource (line 8) | func PrintToSource(buf *strings.Builder, node *Node) {

FILE: internal/printer/print-css.go
  type PrintCSSResult (line 11) | type PrintCSSResult struct
  function PrintCSS (line 16) | func PrintCSS(sourcetext string, doc *Node, opts transform.TransformOpti...

FILE: internal/printer/print-to-js.go
  function PrintToJS (line 48) | func PrintToJS(sourcetext string, n *Node, cssLen int, opts transform.Tr...
  type RenderOptions (line 58) | type RenderOptions struct
  type ExtractedStatement (line 68) | type ExtractedStatement struct
  function printToJs (line 73) | func printToJs(p *printer, n *Node, cssLen int, opts transform.Transform...
  constant whitespace (line 92) | whitespace = " \t\r\n\f"
  function expressionOnlyHasComment (line 95) | func expressionOnlyHasComment(n *Node) bool {
  function emptyTextNodeWithoutSiblings (line 109) | func emptyTextNodeWithoutSiblings(n *Node) bool {
  function render1 (line 120) | func render1(p *printer, n *Node, opts RenderOptions) {

FILE: internal/printer/print-to-json.go
  type ASTPosition (line 15) | type ASTPosition struct
  type ASTPoint (line 20) | type ASTPoint struct
  type ASTNode (line 26) | type ASTNode struct
    method String (line 56) | func (n ASTNode) String() string {
  function escapeForJSON (line 40) | func escapeForJSON(value string) string {
  function PrintToJSON (line 108) | func PrintToJSON(sourcetext string, n *Node, opts t.ParseOptions) PrintR...
  function locToPoint (line 121) | func locToPoint(p *printer, loc loc.Loc) ASTPoint {
  function positionAt (line 134) | func positionAt(p *printer, n *Node, opts t.ParseOptions) ASTPosition {
  function attrPositionAt (line 177) | func attrPositionAt(p *printer, n *Attribute, opts t.ParseOptions) ASTPo...
  function renderNode (line 190) | func renderNode(p *printer, parent *ASTNode, n *Node, opts t.ParseOption...

FILE: internal/printer/print-to-tsx.go
  function getTSXPrefix (line 20) | func getTSXPrefix() string {
  type TSXOptions (line 24) | type TSXOptions struct
  function PrintToTSX (line 29) | func PrintToTSX(sourcetext string, n *Node, opts TSXOptions, transformOp...
  function finalizeRanges (line 45) | func finalizeRanges(content string, ranges TSXRanges) TSXRanges {
  type TSXRanges (line 63) | type TSXRanges struct
  function getStyleLangFromAttrs (line 158) | func getStyleLangFromAttrs(attrs []astro.Attribute) string {
  function getScriptTypeFromAttrs (line 178) | func getScriptTypeFromAttrs(attrs []astro.Attribute) string {
  type TSXExtractedTag (line 217) | type TSXExtractedTag struct
  function isScript (line 224) | func isScript(p *astro.Node) bool {
  function isStyle (line 228) | func isStyle(p *astro.Node) bool {
  function isRawText (line 233) | func isRawText(p *astro.Node) bool {
  function isValidTSXAttribute (line 259) | func isValidTSXAttribute(a Attribute) bool {
  function isValidFirstRune (line 285) | func isValidFirstRune(r rune) bool {
  type TextType (line 296) | type TextType
  constant RawText (line 299) | RawText TextType = iota
  constant Text (line 300) | Text
  constant ScriptText (line 301) | ScriptText
  constant JsonScriptText (line 302) | JsonScriptText
  constant UnknownScriptText (line 303) | UnknownScriptText
  constant StyleText (line 304) | StyleText
  function getTextType (line 307) | func getTextType(n *astro.Node) TextType {
  function renderTsx (line 333) | func renderTsx(p *printer, n *Node, o *TSXOptions) {

FILE: internal/printer/print-to-tsx_test.go
  function BenchmarkPrintToTSX (line 13) | func BenchmarkPrintToTSX(b *testing.B) {

FILE: internal/printer/printer.go
  type PrintResult (line 19) | type PrintResult struct
  type printer (line 26) | type printer struct
    method print (line 65) | func (p *printer) print(text string) {
    method printf (line 69) | func (p *printer) printf(format string, a ...interface{}) {
    method println (line 73) | func (p *printer) println(text string) {
    method setTSXFrontmatterRange (line 77) | func (p *printer) setTSXFrontmatterRange(frontmatterRange loc.TSXRange) {
    method setTSXBodyRange (line 81) | func (p *printer) setTSXBodyRange(componentRange loc.TSXRange) {
    method addTSXScript (line 85) | func (p *printer) addTSXScript(start int, end int, content string, scr...
    method addTSXStyle (line 96) | func (p *printer) addTSXStyle(start int, end int, content string, styl...
    method getAsyncFuncPrefix (line 108) | func (p *printer) getAsyncFuncPrefix() string {
    method printTextWithSourcemap (line 117) | func (p *printer) printTextWithSourcemap(text string, l loc.Loc) {
    method printEscapedJSXTextWithSourcemap (line 142) | func (p *printer) printEscapedJSXTextWithSourcemap(text string, l loc....
    method printInternalImports (line 177) | func (p *printer) printInternalImports(importSpecifier string, opts *R...
    method printCSSImports (line 232) | func (p *printer) printCSSImports(cssLen int) {
    method printRenderHead (line 251) | func (p *printer) printRenderHead() {
    method printMaybeRenderHead (line 256) | func (p *printer) printMaybeRenderHead() {
    method printReturnOpen (line 261) | func (p *printer) printReturnOpen() {
    method printReturnClose (line 267) | func (p *printer) printReturnClose() {
    method printTemplateLiteralOpen (line 273) | func (p *printer) printTemplateLiteralOpen() {
    method printTemplateLiteralClose (line 278) | func (p *printer) printTemplateLiteralClose() {
    method printDefineVarsOpen (line 291) | func (p *printer) printDefineVarsOpen(n *astro.Node) {
    method printDefineVarsClose (line 329) | func (p *printer) printDefineVarsClose(n *astro.Node) {
    method printFuncPrelude (line 342) | func (p *printer) printFuncPrelude(opts transform.TransformOptions, pr...
    method printFuncSuffix (line 359) | func (p *printer) printFuncSuffix(opts transform.TransformOptions, n *...
    method printAttributesToObject (line 394) | func (p *printer) printAttributesToObject(n *astro.Node) {
    method printAttribute (line 455) | func (p *printer) printAttribute(attr astro.Attribute, n *astro.Node) {
    method addSourceMapping (line 538) | func (p *printer) addSourceMapping(location loc.Loc) {
    method addNilSourceMapping (line 547) | func (p *printer) addNilSourceMapping() {
    method printTopLevelAstro (line 551) | func (p *printer) printTopLevelAstro(opts transform.TransformOptions) {
    method printComponentMetadata (line 604) | func (p *printer) printComponentMetadata(doc *astro.Node, opts transfo...
  function isTypeModuleScript (line 283) | func isTypeModuleScript(n *astro.Node) bool {
  function remove (line 555) | func remove(slice []*astro.Node, node *astro.Node) []*astro.Node {
  function maybeConvertTransition (line 565) | func maybeConvertTransition(n *astro.Node) {

FILE: internal/printer/printer_css_test.go
  type testcase_css (line 13) | type testcase_css struct
  function TestPrinterCSS (line 19) | func TestPrinterCSS(t *testing.T) {

FILE: internal/printer/printer_test.go
  type testcase (line 49) | type testcase struct
  type jsonTestcase (line 57) | type jsonTestcase struct
  function TestPrinter (line 63) | func TestPrinter(t *testing.T) {
  function TestPrintToJSON (line 2128) | func TestPrintToJSON(t *testing.T) {

FILE: internal/printer/utils.go
  function escapeText (line 14) | func escapeText(src string) string {
  function escapeBraces (line 22) | func escapeBraces(src string) string {
  function escapeStarSlash (line 28) | func escapeStarSlash(src string) string {
  function getTSXComponentName (line 32) | func getTSXComponentName(filename string) string {
  function getComponentName (line 52) | func getComponentName(filename string) string {
  function escapeExistingEscapes (line 68) | func escapeExistingEscapes(src string) string {
  function escapeTSXExpressions (line 72) | func escapeTSXExpressions(src string) string {
  function escapeInterpolation (line 78) | func escapeInterpolation(src string) string {
  function escapeBackticks (line 84) | func escapeBackticks(src string) string {
  function escapeSingleQuote (line 89) | func escapeSingleQuote(str string) string {
  function escapeDoubleQuote (line 93) | func escapeDoubleQuote(str string) string {
  function escapeNewlines (line 97) | func escapeNewlines(str string) string {
  function encodeDoubleQuote (line 103) | func encodeDoubleQuote(str string) string {
  function convertAttributeValue (line 107) | func convertAttributeValue(n *astro.Node, attrName string) string {

FILE: internal/sourcemap/sourcemap.go
  type Mapping (line 11) | type Mapping struct
  type SourceMap (line 20) | type SourceMap struct
    method Find (line 38) | func (sm *SourceMap) Find(line int, column int) *Mapping {
  type SourceContent (line 26) | type SourceContent struct
  function EncodeVLQ (line 81) | func EncodeVLQ(value int) []byte {
  function DecodeVLQ (line 116) | func DecodeVLQ(encoded []byte, start int) (int, int) {
  function DecodeVLQUTF16 (line 146) | func DecodeVLQUTF16(encoded []uint16) (int, int, bool) {
  type LineColumnOffset (line 184) | type LineColumnOffset struct
    method ComesBefore (line 189) | func (a LineColumnOffset) ComesBefore(b LineColumnOffset) bool {
    method Add (line 193) | func (a *LineColumnOffset) Add(b LineColumnOffset) {
    method AdvanceBytes (line 202) | func (offset *LineColumnOffset) AdvanceBytes(bytes []byte) {
    method AdvanceString (line 230) | func (offset *LineColumnOffset) AdvanceString(text string) {
  type SourceMapPieces (line 256) | type SourceMapPieces struct
    method HasContent (line 262) | func (pieces SourceMapPieces) HasContent() bool {
    method Finalize (line 271) | func (pieces SourceMapPieces) Finalize(shifts []SourceMapShift) []byte {
  type SourceMapShift (line 266) | type SourceMapShift struct
  type SourceMapState (line 370) | type SourceMapState struct
  function AppendSourceMapChunk (line 390) | func AppendSourceMapChunk(j *helpers.Joiner, prevEndState SourceMapState...
  function appendMappingToBuffer (line 431) | func appendMappingToBuffer(buffer []byte, lastByte byte, prevState Sourc...
  type LineOffsetTable (line 456) | type LineOffsetTable struct
  function GenerateLineOffsetTables (line 474) | func GenerateLineOffsetTables(contents string, approximateLineCount int)...
  type Chunk (line 560) | type Chunk struct
  type ChunkBuilder (line 575) | type ChunkBuilder struct
    method GetLineAndColumnForLocation (line 618) | func (b *ChunkBuilder) GetLineAndColumnForLocation(location loc.Loc) [...
    method OffsetAt (line 651) | func (b *ChunkBuilder) OffsetAt(location loc.Loc) int {
    method AddSourceMapping (line 667) | func (b *ChunkBuilder) AddSourceMapping(location loc.Loc, output []byt...
    method GenerateChunk (line 735) | func (b *ChunkBuilder) GenerateChunk(output []byte) Chunk {
    method updateGeneratedLineAndColumn (line 754) | func (b *ChunkBuilder) updateGeneratedLineAndColumn(output []byte) {
    method appendMapping (line 799) | func (b *ChunkBuilder) appendMapping(currentState SourceMapState) {
    method appendMappingWithoutRemapping (line 819) | func (b *ChunkBuilder) appendMappingWithoutRemapping(currentState Sour...
  function MakeChunkBuilder (line 597) | func MakeChunkBuilder(inputSourceMap *SourceMap, lineOffsetTables []Line...

FILE: internal/t/t.go
  type ParseOptions (line 3) | type ParseOptions struct

FILE: internal/test_utils/test_utils.go
  function RemoveNewlines (line 13) | func RemoveNewlines(input string) string {
  function Dedent (line 17) | func Dedent(input string) string {
  function ANSIDiff (line 27) | func ANSIDiff(x, y interface{}, opts ...cmp.Option) string {
  function RedactTestName (line 48) | func RedactTestName(testCaseName string) string {
  type OutputKind (line 65) | type OutputKind
  constant JsOutput (line 68) | JsOutput = iota
  constant JsonOutput (line 69) | JsonOutput
  constant CssOutput (line 70) | CssOutput
  constant HtmlOutput (line 71) | HtmlOutput
  constant JsxOutput (line 72) | JsxOutput
  type SnapshotOptions (line 83) | type SnapshotOptions struct
  function MakeSnapshot (line 99) | func MakeSnapshot(options *SnapshotOptions) {

FILE: internal/token.go
  type TokenType (line 22) | type TokenType
    method String (line 93) | func (t TokenType) String() string {
  constant ErrorToken (line 26) | ErrorToken TokenType = iota
  constant TextToken (line 28) | TextToken
  constant StartTagToken (line 30) | StartTagToken
  constant EndTagToken (line 32) | EndTagToken
  constant SelfClosingTagToken (line 34) | SelfClosingTagToken
  constant CommentToken (line 36) | CommentToken
  constant DoctypeToken (line 38) | DoctypeToken
  constant FrontmatterFenceToken (line 42) | FrontmatterFenceToken
  constant StartExpressionToken (line 45) | StartExpressionToken
  constant EndExpressionToken (line 47) | EndExpressionToken
  type FrontmatterState (line 51) | type FrontmatterState
    method String (line 119) | func (fm FrontmatterState) String() string {
  constant FrontmatterInitial (line 54) | FrontmatterInitial FrontmatterState = iota
  constant FrontmatterOpen (line 55) | FrontmatterOpen
  constant FrontmatterClosed (line 56) | FrontmatterClosed
  type AttributeType (line 60) | type AttributeType
    method String (line 62) | func (t AttributeType) String() string {
  constant QuotedAttribute (line 81) | QuotedAttribute AttributeType = iota
  constant EmptyAttribute (line 82) | EmptyAttribute
  constant ExpressionAttribute (line 83) | ExpressionAttribute
  constant SpreadAttribute (line 84) | SpreadAttribute
  constant ShorthandAttribute (line 85) | ShorthandAttribute
  constant TemplateLiteralAttribute (line 86) | TemplateLiteralAttribute
  type Attribute (line 137) | type Attribute struct
  type Expression (line 147) | type Expression struct
  type Token (line 158) | type Token struct
    method tagString (line 167) | func (t Token) tagString() string {
    method String (line 212) | func (t Token) String() string {
  type Tokenizer (line 239) | type Tokenizer struct
    method AllowCDATA (line 316) | func (z *Tokenizer) AllowCDATA(allowCDATA bool) {
    method NextIsNotRawText (line 347) | func (z *Tokenizer) NextIsNotRawText() {
    method Err (line 355) | func (z *Tokenizer) Err() error {
    method readByte (line 366) | func (z *Tokenizer) readByte() byte {
    method Buffered (line 377) | func (z *Tokenizer) Buffered() []byte {
    method skipWhiteSpace (line 382) | func (z *Tokenizer) skipWhiteSpace() {
    method readRawOrRCDATA (line 411) | func (z *Tokenizer) readRawOrRCDATA() {
    method readRawEndTag (line 468) | func (z *Tokenizer) readRawEndTag() bool {
    method readScript (line 506) | func (z *Tokenizer) readScript() {
    method readHTMLComment (line 895) | func (z *Tokenizer) readHTMLComment() {
    method readUntilCloseAngle (line 951) | func (z *Tokenizer) readUntilCloseAngle() {
    method readString (line 967) | func (z *Tokenizer) readString(c byte) {
    method readUntilChar (line 985) | func (z *Tokenizer) readUntilChar(chars []byte) {
    method readCommentOrRegExp (line 1017) | func (z *Tokenizer) readCommentOrRegExp(boundaryChars []byte) {
    method readMarkupDeclaration (line 1059) | func (z *Tokenizer) readMarkupDeclaration() TokenType {
    method readDoctype (line 1088) | func (z *Tokenizer) readDoctype() bool {
    method readCDATA (line 1113) | func (z *Tokenizer) readCDATA() bool {
    method startTagIn (line 1152) | func (z *Tokenizer) startTagIn(ss ...string) bool {
    method hasAttribute (line 1169) | func (z *Tokenizer) hasAttribute(s string) bool {
    method readStartTag (line 1182) | func (z *Tokenizer) readStartTag() TokenType {
    method readUnclosedTag (line 1252) | func (z *Tokenizer) readUnclosedTag() bool {
    method readTag (line 1290) | func (z *Tokenizer) readTag(saveAttr bool) {
    method readTagName (line 1353) | func (z *Tokenizer) readTagName() {
    method readTagAttrKey (line 1375) | func (z *Tokenizer) readTagAttrKey() {
    method readTagAttrVal (line 1419) | func (z *Tokenizer) readTagAttrVal() {
    method allTagAttrExpressionsClosed (line 1558) | func (z *Tokenizer) allTagAttrExpressionsClosed() bool {
    method readTagAttrExpression (line 1568) | func (z *Tokenizer) readTagAttrExpression() {
    method Loc (line 1630) | func (z *Tokenizer) Loc() loc.Loc {
    method isAtExpressionBoundary (line 1636) | func (z *Tokenizer) isAtExpressionBoundary() bool {
    method trackExpressionElementStack (line 1643) | func (z *Tokenizer) trackExpressionElementStack() {
    method Next (line 1676) | func (z *Tokenizer) Next() TokenType {
    method Raw (line 2107) | func (z *Tokenizer) Raw() []byte {
    method Text (line 2118) | func (z *Tokenizer) Text() []byte {
    method TagName (line 2140) | func (z *Tokenizer) TagName() (name []byte, hasAttr bool) {
    method TagAttr (line 2156) | func (z *Tokenizer) TagAttr() (key []byte, keyLoc loc.Loc, val []byte,...
    method Token (line 2183) | func (z *Tokenizer) Token() Token {
  function NewTokenizer (line 2216) | func NewTokenizer(r io.Reader) *Tokenizer {
  function NewTokenizerFragment (line 2228) | func NewTokenizerFragment(r io.Reader, contextTag string) *Tokenizer {

FILE: internal/token_test.go
  type TokenTypeTest (line 11) | type TokenTypeTest struct
  type AttributeTest (line 17) | type AttributeTest struct
  type LocTest (line 23) | type LocTest struct
  function TestBasic (line 29) | func TestBasic(t *testing.T) {
  function TestFrontmatter (line 518) | func TestFrontmatter(t *testing.T) {
  function TestExpressions (line 703) | func TestExpressions(t *testing.T) {
  function TestAttributes (line 871) | func TestAttributes(t *testing.T) {
  function TestLoc (line 978) | func TestLoc(t *testing.T) {
  function runTokenTypeTest (line 1013) | func runTokenTypeTest(t *testing.T, suite []TokenTypeTest) {
  function runAttributeTypeTest (line 1034) | func runAttributeTypeTest(t *testing.T, suite []AttributeTest) {
  function runTokenLocTest (line 1058) | func runTokenLocTest(t *testing.T, suite []LocTest) {

FILE: internal/transform/scope-css.go
  function ScopeStyle (line 18) | func ScopeStyle(styles []*astro.Node, opts TransformOptions) bool {
  function GetDefineVars (line 61) | func GetDefineVars(styles []*astro.Node) []string {

FILE: internal/transform/scope-css_test.go
  function TestScopeStyle (line 11) | func TestScopeStyle(t *testing.T) {

FILE: internal/transform/scope-html.go
  function ScopeElement (line 11) | func ScopeElement(n *astro.Node, opts TransformOptions) {
  function AddDefineVars (line 19) | func AddDefineVars(n *astro.Node, values []string) bool {
  function AnnotateElement (line 31) | func AnnotateElement(n *astro.Node, opts TransformOptions) {
  function annotateElement (line 60) | func annotateElement(n *astro.Node, opts TransformOptions) {
  function injectDefineVars (line 71) | func injectDefineVars(n *astro.Node, values []string) {
  function injectScopedClass (line 116) | func injectScopedClass(n *astro.Node, opts TransformOptions) {

FILE: internal/transform/scope-html_test.go
  function tests (line 13) | func tests() []struct {
  function TestScopeHTML (line 102) | func TestScopeHTML(t *testing.T) {
  function FuzzScopeHTML (line 131) | func FuzzScopeHTML(f *testing.F) {

FILE: internal/transform/transform.go
  constant TRANSITION_ANIMATE (line 16) | TRANSITION_ANIMATE = "transition:animate"
  constant TRANSITION_NAME (line 17) | TRANSITION_NAME = "transition:name"
  constant TRANSITION_PERSIST (line 18) | TRANSITION_PERSIST = "transition:persist"
  constant DATA_ASTRO_RELOAD (line 19) | DATA_ASTRO_RELOAD = "data-astro-reload"
  constant TRANSITION_PERSIST_PROPS (line 20) | TRANSITION_PERSIST_PROPS = "transition:persist-props"
  constant SERVER_DEFER (line 21) | SERVER_DEFER = "server:defer"
  type TransformOptions (line 23) | type TransformOptions struct
  function Transform (line 39) | func Transform(doc *astro.Node, opts TransformOptions, h *handler.Handle...
  function ExtractStyles (line 114) | func ExtractStyles(doc *astro.Node, opts *TransformOptions) {
  function removeNodeWithTrailingWhitespace (line 137) | func removeNodeWithTrailingWhitespace(n *astro.Node) {
  function NormalizeSetDirectives (line 163) | func NormalizeSetDirectives(doc *astro.Node, h *handler.Handler) {
  function TrimTrailingSpace (line 265) | func TrimTrailingSpace(doc *astro.Node) {
  function isRawElement (line 294) | func isRawElement(n *astro.Node) bool {
  function isWhitespaceInsensitiveElement (line 312) | func isWhitespaceInsensitiveElement(n *astro.Node) bool {
  function collapseWhitespace (line 316) | func collapseWhitespace(doc *astro.Node) {
  function WarnAboutMisplacedReload (line 385) | func WarnAboutMisplacedReload(n *astro.Node, h *handler.Handler) {
  function WarnAboutRerunOnExternalESMs (line 404) | func WarnAboutRerunOnExternalESMs(n *astro.Node, h *handler.Handler) {
  function ExtractScript (line 425) | func ExtractScript(doc *astro.Node, n *astro.Node, opts *TransformOption...
  function HintAboutImplicitInlineDirective (line 481) | func HintAboutImplicitInlineDirective(n *astro.Node, h *handler.Handler) {
  function AddComponentProps (line 494) | func AddComponentProps(doc *astro.Node, n *astro.Node, opts *TransformOp...
  type ImportMatch (line 589) | type ImportMatch struct
  function matchNodeToImportStatement (line 594) | func matchNodeToImportStatement(doc *astro.Node, n *astro.Node) *ImportM...
  function ResolveIdForMatch (line 614) | func ResolveIdForMatch(id string, opts *TransformOptions) string {
  function eachImportStatement (line 625) | func eachImportStatement(doc *astro.Node, cb func(stmt js_scanner.Import...
  function walk (line 638) | func walk(doc *astro.Node, cb func(*astro.Node)) {
  function mergeClassList (line 650) | func mergeClassList(doc *astro.Node, n *astro.Node, opts *TransformOptio...
  function remove (line 688) | func remove(slice []astro.Attribute, s int) []astro.Attribute {
  function getOrCreateTransitionScope (line 692) | func getOrCreateTransitionScope(n *astro.Node, opts *TransformOptions, i...

FILE: internal/transform/transform_test.go
  function transformScopingFixtures (line 13) | func transformScopingFixtures() []struct {
  function TestTransformScoping (line 175) | func TestTransformScoping(t *testing.T) {
  function FuzzTransformScoping (line 205) | func FuzzTransformScoping(f *testing.F) {
  function TestFullTransform (line 232) | func TestFullTransform(t *testing.T) {
  function TestTransformTransitionAndHeadPropagationFlags (line 317) | func TestTransformTransitionAndHeadPropagationFlags(t *testing.T) {
  function TestTransformTrailingSpace (line 365) | func TestTransformTrailingSpace(t *testing.T) {
  function TestCompactTransform (line 420) | func TestCompactTransform(t *testing.T) {
  function TestAnnotation (line 541) | func TestAnnotation(t *testing.T) {
  function TestClassAndClassListMerging (line 587) | func TestClassAndClassListMerging(t *testing.T) {

FILE: internal/transform/utils.go
  function hasTruthyAttr (line 8) | func hasTruthyAttr(n *astro.Node, key string) bool {
  function HasSetDirective (line 20) | func HasSetDirective(n *astro.Node) bool {
  function HasInlineDirective (line 24) | func HasInlineDirective(n *astro.Node) bool {
  function AttrIndex (line 28) | func AttrIndex(n *astro.Node, key string) int {
  function HasAttr (line 37) | func HasAttr(n *astro.Node, key string) bool {
  function GetAttr (line 41) | func GetAttr(n *astro.Node, key string) *astro.Attribute {
  function IsHoistable (line 50) | func IsHoistable(n *astro.Node, renderScript bool) bool {
  function IsImplicitNode (line 62) | func IsImplicitNode(n *astro.Node) bool {
  function IsImplicitNodeMarker (line 66) | func IsImplicitNodeMarker(attr astro.Attribute) bool {
  function IsTopLevel (line 70) | func IsTopLevel(n *astro.Node) bool {
  function GetQuotedAttr (line 87) | func GetQuotedAttr(n *astro.Node, key string) string {

FILE: internal/xxhash/xxhash.go
  constant prime1 (line 12) | prime1 uint64 = 11400714785074694791
  constant prime2 (line 13) | prime2 uint64 = 14029467366897019727
  constant prime3 (line 14) | prime3 uint64 = 1609587929392839161
  constant prime4 (line 15) | prime4 uint64 = 9650029242287828579
  constant prime5 (line 16) | prime5 uint64 = 2870177450012600261
  type Digest (line 34) | type Digest struct
    method Reset (line 52) | func (d *Digest) Reset() {
    method Size (line 62) | func (d *Digest) Size() int { return 8 }
    method BlockSize (line 65) | func (d *Digest) BlockSize() int { return 32 }
    method Write (line 68) | func (d *Digest) Write(b []byte) (n int, err error) {
    method Sum (line 104) | func (d *Digest) Sum(b []byte) []byte {
    method Sum64 (line 120) | func (d *Digest) Sum64() uint64 {
    method MarshalBinary (line 168) | func (d *Digest) MarshalBinary() ([]byte, error) {
    method UnmarshalBinary (line 182) | func (d *Digest) UnmarshalBinary(b []byte) error {
  function New (line 45) | func New() *Digest {
  constant magic (line 163) | magic         = "xxh\x06"
  constant marshaledSize (line 164) | marshaledSize = len(magic) + 8*5 + 32
  function appendUint64 (line 200) | func appendUint64(b []byte, x uint64) []byte {
  function consumeUint64 (line 206) | func consumeUint64(b []byte) ([]byte, uint64) {
  function u64 (line 211) | func u64(b []byte) uint64 { return binary.LittleEndian.Uint64(b) }
  function u32 (line 212) | func u32(b []byte) uint32 { return binary.LittleEndian.Uint32(b) }
  function round (line 214) | func round(acc, input uint64) uint64 {
  function mergeRound (line 221) | func mergeRound(acc, val uint64) uint64 {
  function rol1 (line 228) | func rol1(x uint64) uint64  { return bits.RotateLeft64(x, 1) }
  function rol7 (line 229) | func rol7(x uint64) uint64  { return bits.RotateLeft64(x, 7) }
  function rol11 (line 230) | func rol11(x uint64) uint64 { return bits.RotateLeft64(x, 11) }
  function rol12 (line 231) | func rol12(x uint64) uint64 { return bits.RotateLeft64(x, 12) }
  function rol18 (line 232) | func rol18(x uint64) uint64 { return bits.RotateLeft64(x, 18) }
  function rol23 (line 233) | func rol23(x uint64) uint64 { return bits.RotateLeft64(x, 23) }
  function rol27 (line 234) | func rol27(x uint64) uint64 { return bits.RotateLeft64(x, 27) }
  function rol31 (line 235) | func rol31(x uint64) uint64 { return bits.RotateLeft64(x, 31) }

FILE: internal/xxhash/xxhash_other.go
  function Sum64 (line 4) | func Sum64(b []byte) uint64 {
  function writeBlocks (line 62) | func writeBlocks(d *Digest, b []byte) int {

FILE: internal_wasm/utils/utils.go
  function Await (line 16) | func Await(awaitable js.Value) ([]js.Value, []js.Value) {
  function GetAttrs (line 47) | func GetAttrs(n *astro.Node) js.Value {
  type JSError (line 60) | type JSError struct
    method Value (line 65) | func (err *JSError) Value() js.Value {
  function ErrorToJSError (line 69) | func ErrorToJSError(h *handler.Handler, err error) js.Value {

FILE: lib/esbuild/ast/ast.go
  type ImportKind (line 9) | type ImportKind
    method StringForMetafile (line 37) | func (kind ImportKind) StringForMetafile() string {
    method IsFromCSS (line 58) | func (kind ImportKind) IsFromCSS() bool {
  constant ImportEntryPoint (line 13) | ImportEntryPoint ImportKind = iota
  constant ImportStmt (line 16) | ImportStmt
  constant ImportRequire (line 19) | ImportRequire
  constant ImportDynamic (line 22) | ImportDynamic
  constant ImportRequireResolve (line 25) | ImportRequireResolve
  constant ImportAt (line 28) | ImportAt
  constant ImportAtConditional (line 31) | ImportAtConditional
  constant ImportURL (line 34) | ImportURL
  type ImportRecordFlags (line 62) | type ImportRecordFlags
    method Has (line 115) | func (flags ImportRecordFlags) Has(flag ImportRecordFlags) bool {
  constant IsUnused (line 68) | IsUnused ImportRecordFlags = 1 << iota
  constant ContainsImportStar (line 73) | ContainsImportStar
  constant ContainsDefaultAlias (line 77) | ContainsDefaultAlias
  constant ContainsESModuleAlias (line 81) | ContainsESModuleAlias
  constant CallsRunTimeReExportFn (line 85) | CallsRunTimeReExportFn
  constant WrapWithToESM (line 88) | WrapWithToESM
  constant WrapWithToCJS (line 91) | WrapWithToCJS
  constant CallRuntimeRequire (line 94) | CallRuntimeRequire
  constant HandlesImportErrors (line 106) | HandlesImportErrors
  constant WasOriginallyBareImport (line 109) | WasOriginallyBareImport
  constant IsExternalWithoutSideEffects (line 112) | IsExternalWithoutSideEffects
  type ImportRecord (line 119) | type ImportRecord struct
  type AssertEntry (line 136) | type AssertEntry struct
  type Index32 (line 147) | type Index32 struct
    method IsValid (line 155) | func (i Index32) IsValid() bool {
    method GetIndex (line 159) | func (i Index32) GetIndex() uint32 {
  function MakeIndex32 (line 151) | func MakeIndex32(index uint32) Index32 {

FILE: lib/esbuild/compat/compat.go
  type v (line 3) | type v struct
  function compareVersions (line 12) | func compareVersions(a v, b []int) int {
  type versionRange (line 33) | type versionRange struct
  function isVersionSupported (line 38) | func isVersionSupported(ranges []versionRange, version []int) bool {

FILE: lib/esbuild/compat/css_table.go
  type CSSFeature (line 3) | type CSSFeature
    method Has (line 21) | func (features CSSFeature) Has(feature CSSFeature) bool {
  constant HexRGBA (line 6) | HexRGBA CSSFeature = 1 << iota
  constant RebeccaPurple (line 8) | RebeccaPurple
  constant Modern_RGB_HSL (line 15) | Modern_RGB_HSL
  constant InsetProperty (line 17) | InsetProperty
  constant Nesting (line 18) | Nesting
  function UnsupportedCSSFeatures (line 63) | func UnsupportedCSSFeatures(constraints map[Engine][]int) (unsupported C...

FILE: lib/esbuild/compat/js_table.go
  type Engine (line 5) | type Engine
    method String (line 19) | func (e Engine) String() string {
  constant Chrome (line 8) | Chrome Engine = iota
  constant Edge (line 9) | Edge
  constant ES (line 10) | ES
  constant Firefox (line 11) | Firefox
  constant IE (line 12) | IE
  constant IOS (line 13) | IOS
  constant Node (line 14) | Node
  constant Opera (line 15) | Opera
  constant Safari (line 16) | Safari
  type JSFeature (line 43) | type JSFeature
    method Has (line 94) | func (features JSFeature) Has(feature JSFeature) bool {
  constant ArbitraryModuleNamespaceNames (line 46) | ArbitraryModuleNamespaceNames JSFeature = 1 << iota
  constant ArraySpread (line 47) | ArraySpread
  constant Arrow (line 48) | Arrow
  constant AsyncAwait (line 49) | AsyncAwait
  constant AsyncGenerator (line 50) | AsyncGenerator
  constant BigInt (line 51) | BigInt
  constant Class (line 52) | Class
  constant ClassField (line 53) | ClassField
  constant ClassPrivateAccessor (line 54) | ClassPrivateAccessor
  constant ClassPrivateBrandCheck (line 55) | ClassPrivateBrandCheck
  constant ClassPrivateField (line 56) | ClassPrivateField
  constant ClassPrivateMethod (line 57) | ClassPrivateMethod
  constant ClassPrivateStaticAccessor (line 58) | ClassPrivateStaticAccessor
  constant ClassPrivateStaticField (line 59) | ClassPrivateStaticField
  constant ClassPrivateStaticMethod (line 60) | ClassPrivateStaticMethod
  constant ClassStaticBlocks (line 61) | ClassStaticBlocks
  constant ClassStaticField (line 62) | ClassStaticField
  constant Const (line 63) | Const
  constant DefaultArgument (line 64) | DefaultArgument
  constant Destructuring (line 65) | Destructuring
  constant DynamicImport (line 66) | DynamicImport
  constant ExponentOperator (line 67) | ExponentOperator
  constant ExportStarAs (line 68) | ExportStarAs
  constant ForAwait (line 69) | ForAwait
  constant ForOf (line 70) | ForOf
  constant Generator (line 71) | Generator
  constant Hashbang (line 72) | Hashbang
  constant ImportAssertions (line 73) | ImportAssertions
  constant ImportMeta (line 74) | ImportMeta
  constant Let (line 75) | Let
  constant LogicalAssignment (line 76) | LogicalAssignment
  constant NestedRestBinding (line 77) | NestedRestBinding
  constant NewTarget (line 78) | NewTarget
  constant NodeColonPrefixImport (line 79) | NodeColonPrefixImport
  constant NodeColonPrefixRequire (line 80) | NodeColonPrefixRequire
  constant NullishCoalescing (line 81) | NullishCoalescing
  constant ObjectAccessors (line 82) | ObjectAccessors
  constant ObjectExtensions (line 83) | ObjectExtensions
  constant ObjectRestSpread (line 84) | ObjectRestSpread
  constant OptionalCatchBinding (line 85) | OptionalCatchBinding
  constant OptionalChain (line 86) | OptionalChain
  constant RestArgument (line 87) | RestArgument
  constant TemplateLiteral (line 88) | TemplateLiteral
  constant TopLevelAwait (line 89) | TopLevelAwait
  constant TypeofExoticObjectIsObject (line 90) | TypeofExoticObjectIsObject
  constant UnicodeEscapes (line 91) | UnicodeEscapes
  function UnsupportedJSFeatures (line 525) | func UnsupportedJSFeatures(constraints map[Engine][]int) (unsupported JS...

FILE: lib/esbuild/config/config.go
  type JSXOptions (line 14) | type JSXOptions struct
  type JSXExpr (line 21) | type JSXExpr struct
  type TSOptions (line 25) | type TSOptions struct
  type Platform (line 30) | type Platform
  constant PlatformBrowser (line 33) | PlatformBrowser Platform = iota
  constant PlatformNode (line 34) | PlatformNode
  constant PlatformNeutral (line 35) | PlatformNeutral
  type SourceMap (line 38) | type SourceMap
  constant SourceMapNone (line 41) | SourceMapNone SourceMap = iota
  constant SourceMapInline (line 42) | SourceMapInline
  constant SourceMapLinkedWithComment (line 43) | SourceMapLinkedWithComment
  constant SourceMapExternalWithoutComment (line 44) | SourceMapExternalWithoutComment
  constant SourceMapInlineAndExternal (line 45) | SourceMapInlineAndExternal
  type LegalComments (line 48) | type LegalComments
    method HasExternalFile (line 58) | func (lc LegalComments) HasExternalFile() bool {
  constant LegalCommentsInline (line 51) | LegalCommentsInline LegalComments = iota
  constant LegalCommentsNone (line 52) | LegalCommentsNone
  constant LegalCommentsEndOfFile (line 53) | LegalCommentsEndOfFile
  constant LegalCommentsLinkedWithComment (line 54) | LegalCommentsLinkedWithComment
  constant LegalCommentsExternalWithoutComment (line 55) | LegalCommentsExternalWithoutComment
  type Loader (line 62) | type Loader
    method IsTypeScript (line 81) | func (loader Loader) IsTypeScript() bool {
    method CanHaveSourceMap (line 90) | func (loader Loader) CanHaveSourceMap() bool {
  constant LoaderNone (line 65) | LoaderNone Loader = iota
  constant LoaderJS (line 66) | LoaderJS
  constant LoaderJSX (line 67) | LoaderJSX
  constant LoaderTS (line 68) | LoaderTS
  constant LoaderTSNoAmbiguousLessThan (line 69) | LoaderTSNoAmbiguousLessThan
  constant LoaderTSX (line 70) | LoaderTSX
  constant LoaderJSON (line 71) | LoaderJSON
  constant LoaderText (line 72) | LoaderText
  constant LoaderBase64 (line 73) | LoaderBase64
  constant LoaderDataURL (line 74) | LoaderDataURL
  constant LoaderFile (line 75) | LoaderFile
  constant LoaderBinary (line 76) | LoaderBinary
  constant LoaderCSS (line 77) | LoaderCSS
  constant LoaderDefault (line 78) | LoaderDefault
  type Format (line 99) | type Format
    method KeepES6ImportExportSyntax (line 138) | func (f Format) KeepES6ImportExportSyntax() bool {
    method String (line 142) | func (f Format) String() string {
  constant FormatPreserve (line 105) | FormatPreserve Format = iota
  constant FormatIIFE (line 121) | FormatIIFE
  constant FormatCommonJS (line 128) | FormatCommonJS
  constant FormatESModule (line 135) | FormatESModule
  type StdinInfo (line 154) | type StdinInfo struct
  type WildcardPattern (line 161) | type WildcardPattern struct
  type ExternalMatchers (line 166) | type ExternalMatchers struct
    method HasMatchers (line 171) | func (matchers ExternalMatchers) HasMatchers() bool {
  type ExternalSettings (line 175) | type ExternalSettings struct
  type Mode (line 180) | type Mode
  constant ModePassThrough (line 183) | ModePassThrough Mode = iota
  constant ModeConvertFormat (line 184) | ModeConvertFormat
  constant ModeBundle (line 185) | ModeBundle
  type MaybeBool (line 188) | type MaybeBool
  constant Unspecified (line 191) | Unspecified MaybeBool = iota
  constant True (line 192) | True
  constant False (line 193) | False
  type Options (line 196) | type Options struct
  type TargetFromAPI (line 289) | type TargetFromAPI
  constant TargetWasUnconfigured (line 293) | TargetWasUnconfigured TargetFromAPI = iota
  constant TargetWasConfigured (line 296) | TargetWasConfigured
  constant TargetWasConfiguredIncludingESNext (line 299) | TargetWasConfiguredIncludingESNext
  type UnusedImportsTS (line 302) | type UnusedImportsTS
  constant UnusedImportsRemoveStmt (line 306) | UnusedImportsRemoveStmt UnusedImportsTS = iota
  constant UnusedImportsKeepStmtRemoveValues (line 309) | UnusedImportsKeepStmtRemoveValues
  constant UnusedImportsKeepValues (line 312) | UnusedImportsKeepValues
  function UnusedImportsFromTsconfigValues (line 315) | func UnusedImportsFromTsconfigValues(preserveImportsNotUsedAsValues bool...
  type TSTarget (line 325) | type TSTarget struct
  type PathPlaceholder (line 332) | type PathPlaceholder
  constant NoPlaceholder (line 335) | NoPlaceholder PathPlaceholder = iota
  constant DirPlaceholder (line 339) | DirPlaceholder
  constant NamePlaceholder (line 343) | NamePlaceholder
  constant HashPlaceholder (line 347) | HashPlaceholder
  constant ExtPlaceholder (line 351) | ExtPlaceholder
  type PathTemplate (line 354) | type PathTemplate struct
  type PathPlaceholders (line 359) | type PathPlaceholders struct
    method Get (line 366) | func (placeholders PathPlaceholders) Get(placeholder PathPlaceholder) ...
  function TemplateToString (line 380) | func TemplateToString(template []PathTemplate) string {
  function HasPlaceholder (line 402) | func HasPlaceholder(template []PathTemplate, placeholder PathPlaceholder...
  function SubstituteTemplate (line 411) | func SubstituteTemplate(template []PathTemplate, placeholders PathPlaceh...
  function ShouldCallRuntimeRequire (line 442) | func ShouldCallRuntimeRequire(mode Mode, outputFormat Format) bool {
  type InjectedDefine (line 446) | type InjectedDefine struct
  type InjectedFile (line 451) | type InjectedFile struct
  type InjectableExport (line 457) | type InjectableExport struct
  function compileFilter (line 465) | func compileFilter(filter string) (result *regexp.Regexp) {
  function CompileFilterForPlugin (line 500) | func CompileFilterForPlugin(pluginName string, kind string, filter strin...
  function PluginAppliesToPath (line 513) | func PluginAppliesToPath(path logger.Path, filter *regexp.Regexp, namesp...
  type Plugin (line 520) | type Plugin struct
  type OnStart (line 527) | type OnStart struct
  type OnStartResult (line 532) | type OnStartResult struct
  type OnResolve (line 537) | type OnResolve struct
  type OnResolveArgs (line 544) | type OnResolveArgs struct
  type OnResolveResult (line 552) | type OnResolveResult struct
  type OnLoad (line 567) | type OnLoad struct
  type OnLoadArgs (line 574) | type OnLoadArgs struct
  type OnLoadResult (line 579) | type OnLoadResult struct

FILE: lib/esbuild/config/globals.go
  type DefineData (line 822) | type DefineData struct
  function mergeDefineData (line 841) | func mergeDefineData(old DefineData, new DefineData) DefineData {
  type DotDefine (line 851) | type DotDefine struct
  function arePartsEqual (line 856) | func arePartsEqual(a []string, b []string) bool {

FILE: lib/esbuild/css_ast/css_ast.go
  type AST (line 26) | type AST struct
  type Token (line 37) | type Token struct
    method Equal (line 82) | func (a Token) Equal(b Token) bool {
    method EqualIgnoringWhitespace (line 122) | func (a Token) EqualIgnoringWhitespace(b Token) bool {
    method FractionForPercentage (line 160) | func (t Token) FractionForPercentage() (float64, bool) {
    method TurnLengthIntoNumberIfZero (line 178) | func (t *Token) TurnLengthIntoNumberIfZero() bool {
    method TurnLengthOrPercentageIntoNumberIfZero (line 187) | func (t *Token) TurnLengthOrPercentageIntoNumberIfZero() bool {
    method PercentageValue (line 196) | func (t Token) PercentageValue() string {
    method DimensionValue (line 200) | func (t Token) DimensionValue() string {
    method DimensionUnit (line 204) | func (t Token) DimensionUnit() string {
    method DimensionUnitIsSafeLength (line 208) | func (t Token) DimensionUnitIsSafeLength() bool {
    method IsZero (line 218) | func (t Token) IsZero() bool {
    method IsOne (line 222) | func (t Token) IsOne() bool {
    method IsAngle (line 226) | func (t Token) IsAngle() bool {
  type WhitespaceFlags (line 75) | type WhitespaceFlags
  constant WhitespaceBefore (line 78) | WhitespaceBefore WhitespaceFlags = 1 << iota
  constant WhitespaceAfter (line 79) | WhitespaceAfter
  function TokensEqual (line 96) | func TokensEqual(a []Token, b []Token) bool {
  function HashTokens (line 108) | func HashTokens(hash uint32, tokens []Token) uint32 {
  function TokensEqualIgnoringWhitespace (line 136) | func TokensEqualIgnoringWhitespace(a []Token, b []Token) bool {
  function TokensAreCommaSeparated (line 148) | func TokensAreCommaSeparated(tokens []Token) bool {
  function CloneTokensWithImportRecords (line 234) | func CloneTokensWithImportRecords(
  type Rule (line 259) | type Rule struct
  type R (line 264) | type R interface
  function RulesEqual (line 269) | func RulesEqual(a []Rule, b []Rule) bool {
  function HashRules (line 281) | func HashRules(hash uint32, rules []Rule) uint32 {
  type RAtCharset (line 293) | type RAtCharset struct
    method Equal (line 297) | func (a *RAtCharset) Equal(rule R) bool {
    method Hash (line 302) | func (r *RAtCharset) Hash() (uint32, bool) {
  type RAtImport (line 308) | type RAtImport struct
    method Equal (line 313) | func (*RAtImport) Equal(rule R) bool {
    method Hash (line 317) | func (r *RAtImport) Hash() (uint32, bool) {
  type RAtKeyframes (line 321) | type RAtKeyframes struct
    method Equal (line 332) | func (a *RAtKeyframes) Equal(rule R) bool {
    method Hash (line 353) | func (r *RAtKeyframes) Hash() (uint32, bool) {
  type KeyframeBlock (line 327) | type KeyframeBlock struct
  type RKnownAt (line 368) | type RKnownAt struct
    method Equal (line 374) | func (a *RKnownAt) Equal(rule R) bool {
    method Hash (line 379) | func (r *RKnownAt) Hash() (uint32, bool) {
  type RUnknownAt (line 387) | type RUnknownAt struct
    method Equal (line 393) | func (a *RUnknownAt) Equal(rule R) bool {
    method Hash (line 398) | func (r *RUnknownAt) Hash() (uint32, bool) {
  type RSelector (line 406) | type RSelector struct
    method Equal (line 412) | func (a *RSelector) Equal(rule R) bool {
    method Hash (line 426) | func (r *RSelector) Hash() (uint32, bool) {
  type RQualified (line 448) | type RQualified struct
    method Equal (line 453) | func (a *RQualified) Equal(rule R) bool {
    method Hash (line 458) | func (r *RQualified) Hash() (uint32, bool) {
  type RDeclaration (line 465) | type RDeclaration struct
    method Equal (line 473) | func (a *RDeclaration) Equal(rule R) bool {
    method Hash (line 478) | func (r *RDeclaration) Hash() (uint32, bool) {
  type RBadDeclaration (line 485) | type RBadDeclaration struct
    method Equal (line 489) | func (a *RBadDeclaration) Equal(rule R) bool {
    method Hash (line 494) | func (r *RBadDeclaration) Hash() (uint32, bool) {
  type RComment (line 500) | type RComment struct
    method Equal (line 504) | func (a *RComment) Equal(rule R) bool {
    method Hash (line 509) | func (r *RComment) Hash() (uint32, bool) {
  type RAtLayer (line 515) | type RAtLayer struct
    method Equal (line 520) | func (a *RAtLayer) Equal(rule R) bool {
    method Hash (line 540) | func (r *RAtLayer) Hash() (uint32, bool) {
  type ComplexSelector (line 553) | type ComplexSelector struct
    method Equal (line 557) | func (a ComplexSelector) Equal(b ComplexSelector) bool {
  type NestingSelector (line 587) | type NestingSelector
  constant NestingSelectorNone (line 590) | NestingSelectorNone                NestingSelector = iota
  constant NestingSelectorPrefix (line 591) | NestingSelectorPrefix
  constant NestingSelectorPresentButNotPrefix (line 592) | NestingSelectorPresentButNotPrefix
  type CompoundSelector (line 595) | type CompoundSelector struct
  type NameToken (line 602) | type NameToken struct
  type NamespacedName (line 607) | type NamespacedName struct
    method Equal (line 615) | func (a NamespacedName) Equal(b NamespacedName) bool {
  type SS (line 620) | type SS interface
  type SSHash (line 625) | type SSHash struct
    method Equal (line 629) | func (a *SSHash) Equal(ss SS) bool {
    method Hash (line 634) | func (ss *SSHash) Hash() uint32 {
  type SSClass (line 640) | type SSClass struct
    method Equal (line 644) | func (a *SSClass) Equal(ss SS) bool {
    method Hash (line 649) | func (ss *SSClass) Hash() uint32 {
  type SSAttribute (line 655) | type SSAttribute struct
    method Equal (line 662) | func (a *SSAttribute) Equal(ss SS) bool {
    method Hash (line 668) | func (ss *SSAttribute) Hash() uint32 {
  type SSPseudoClass (line 676) | type SSPseudoClass struct
    method Equal (line 682) | func (a *SSPseudoClass) Equal(ss SS) bool {
    method Hash (line 687) | func (ss *SSPseudoClass) Hash() uint32 {

FILE: lib/esbuild/css_ast/css_decl_table.go
  type D (line 10) | type D
  constant DUnknown (line 13) | DUnknown D = iota
  constant DAlignContent (line 14) | DAlignContent
  constant DAlignItems (line 15) | DAlignItems
  constant DAlignSelf (line 16) | DAlignSelf
  constant DAlignmentBaseline (line 17) | DAlignmentBaseline
  constant DAll (line 18) | DAll
  constant DAnimation (line 19) | DAnimation
  constant DAnimationDelay (line 20) | DAnimationDelay
  constant DAnimationDirection (line 21) | DAnimationDirection
  constant DAnimationDuration (line 22) | DAnimationDuration
  constant DAnimationFillMode (line 23) | DAnimationFillMode
  constant DAnimationIterationCount (line 24) | DAnimationIterationCount
  constant DAnimationName (line 25) | DAnimationName
  constant DAnimationPlayState (line 26) | DAnimationPlayState
  constant DAnimationTimingFunction (line 27) | DAnimationTimingFunction
  constant DBackfaceVisibility (line 28) | DBackfaceVisibility
  constant DBackground (line 29) | DBackground
  constant DBackgroundAttachment (line 30) | DBackgroundAttachment
  constant DBackgroundClip (line 31) | DBackgroundClip
  constant DBackgroundColor (line 32) | DBackgroundColor
  constant DBackgroundImage (line 33) | DBackgroundImage
  constant DBackgroundOrigin (line 34) | DBackgroundOrigin
  constant DBackgroundPosition (line 35) | DBackgroundPosition
  constant DBackgroundPositionX (line 36) | DBackgroundPositionX
  constant DBackgroundPositionY (line 37) | DBackgroundPositionY
  constant DBackgroundRepeat (line 38) | DBackgroundRepeat
  constant DBackgroundSize (line 39) | DBackgroundSize
  constant DBaselineShift (line 40) | DBaselineShift
  constant DBlockSize (line 41) | DBlockSize
  constant DBorder (line 42) | DBorder
  constant DBorderBlockEnd (line 43) | DBorderBlockEnd
  constant DBorderBlockEndColor (line 44) | DBorderBlockEndColor
  constant DBorderBlockEndStyle (line 45) | DBorderBlockEndStyle
  constant DBorderBlockEndWidth (line 46) | DBorderBlockEndWidth
  constant DBorderBlockStart (line 47) | DBorderBlockStart
  constant DBorderBlockStartColor (line 48) | DBorderBlockStartColor
  constant DBorderBlockStartStyle (line 49) | DBorderBlockStartStyle
  constant DBorderBlockStartWidth (line 50) | DBorderBlockStartWidth
  constant DBorderBottom (line 51) | DBorderBottom
  constant DBorderBottomColor (line 52) | DBorderBottomColor
  constant DBorderBottomLeftRadius (line 53) | DBorderBottomLeftRadius
  constant DBorderBottomRightRadius (line 54) | DBorderBottomRightRadius
  constant DBorderBottomStyle (line 55) | DBorderBottomStyle
  constant DBorderBottomWidth (line 56) | DBorderBottomWidth
  constant DBorderCollapse (line 57) | DBorderCollapse
  constant DBorderColor (line 58) | DBorderColor
  constant DBorderImage (line 59) | DBorderImage
  constant DBorderImageOutset (line 60) | DBorderImageOutset
  constant DBorderImageRepeat (line 61) | DBorderImageRepeat
  constant DBorderImageSlice (line 62) | DBorderImageSlice
  constant DBorderImageSource (line 63) | DBorderImageSource
  constant DBorderImageWidth (line 64) | DBorderImageWidth
  constant DBorderInlineEnd (line 65) | DBorderInlineEnd
  constant DBorderInlineEndColor (line 66) | DBorderInlineEndColor
  constant DBorderInlineEndStyle (line 67) | DBorderInlineEndStyle
  constant DBorderInlineEndWidth (line 68) | DBorderInlineEndWidth
  constant DBorderInlineStart (line 69) | DBorderInlineStart
  constant DBorderInlineStartColor (line 70) | DBorderInlineStartColor
  constant DBorderInlineStartStyle (line 71) | DBorderInlineStartStyle
  constant DBorderInlineStartWidth (line 72) | DBorderInlineStartWidth
  constant DBorderLeft (line 73) | DBorderLeft
  constant DBorderLeftColor (line 74) | DBorderLeftColor
  constant DBorderLeftStyle (line 75) | DBorderLeftStyle
  constant DBorderLeftWidth (line 76) | DBorderLeftWidth
  constant DBorderRadius (line 77) | DBorderRadius
  constant DBorderRight (line 78) | DBorderRight
  constant DBorderRightColor (line 79) | DBorderRightColor
  constant DBorderRightStyle (line 80) | DBorderRightStyle
  constant DBorderRightWidth (line 81) | DBorderRightWidth
  constant DBorderSpacing (line 82) | DBorderSpacing
  constant DBorderStyle (line 83) | DBorderStyle
  constant DBorderTop (line 84) | DBorderTop
  constant DBorderTopColor (line 85) | DBorderTopColor
  constant DBorderTopLeftRadius (line 86) | DBorderTopLeftRadius
  constant DBorderTopRightRadius (line 87) | DBorderTopRightRadius
  constant DBorderTopStyle (line 88) | DBorderTopStyle
  constant DBorderTopWidth (line 89) | DBorderTopWidth
  constant DBorderWidth (line 90) | DBorderWidth
  constant DBottom (line 91) | DBottom
  constant DBoxShadow (line 92) | DBoxShadow
  constant DBoxSizing (line 93) | DBoxSizing
  constant DBreakAfter (line 94) | DBreakAfter
  constant DBreakBefore (line 95) | DBreakBefore
  constant DBreakInside (line 96) | DBreakInside
  constant DCaptionSide (line 97) | DCaptionSide
  constant DCaretColor (line 98) | DCaretColor
  constant DClear (line 99) | DClear
  constant DClip (line 100) | DClip
  constant DClipPath (line 101) | DClipPath
  constant DClipRule (line 102) | DClipRule
  constant DColor (line 103) | DColor
  constant DColorInterpolation (line 104) | DColorInterpolation
  constant DColorInterpolationFilters (line 105) | DColorInterpolationFilters
  constant DColumnCount (line 106) | DColumnCount
  constant DColumnFill (line 107) | DColumnFill
  constant DColumnGap (line 108) | DColumnGap
  constant DColumnRule (line 109) | DColumnRule
  constant DColumnRuleColor (line 110) | DColumnRuleColor
  constant DColumnRuleStyle (line 111) | DColumnRuleStyle
  constant DColumnRuleWidth (line 112) | DColumnRuleWidth
  constant DColumnSpan (line 113) | DColumnSpan
  constant DColumnWidth (line 114) | DColumnWidth
  constant DColumns (line 115) | DColumns
  constant DContent (line 116) | DContent
  constant DCounterIncrement (line 117) | DCounterIncrement
  constant DCounterReset (line 118) | DCounterReset
  constant DCssFloat (line 119) | DCssFloat
  constant DCssText (line 120) | DCssText
  constant DCursor (line 121) | DCursor
  constant DDirection (line 122) | DDirection
  constant DDisplay (line 123) | DDisplay
  constant DDominantBaseline (line 124) | DDominantBaseline
  constant DEmptyCells (line 125) | DEmptyCells
  constant DFill (line 126) | DFill
  constant DFillOpacity (line 127) | DFillOpacity
  constant DFillRule (line 128) | DFillRule
  constant DFilter (line 129) | DFilter
  constant DFlex (line 130) | DFlex
  constant DFlexBasis (line 131) | DFlexBasis
  constant DFlexDirection (line 132) | DFlexDirection
  constant DFlexFlow (line 133) | DFlexFlow
  constant DFlexGrow (line 134) | DFlexGrow
  constant DFlexShrink (line 135) | DFlexShrink
  constant DFlexWrap (line 136) | DFlexWrap
  constant DFloat (line 137) | DFloat
  constant DFloodColor (line 138) | DFloodColor
  constant DFloodOpacity (line 139) | DFloodOpacity
  constant DFont (line 140) | DFont
  constant DFontFamily (line 141) | DFontFamily
  constant DFontFeatureSettings (line 142) | DFontFeatureSettings
  constant DFontKerning (line 143) | DFontKerning
  constant DFontSize (line 144) | DFontSize
  constant DFontSizeAdjust (line 145) | DFontSizeAdjust
  constant DFontStretch (line 146) | DFontStretch
  constant DFontStyle (line 147) | DFontStyle
  constant DFontSynthesis (line 148) | DFontSynthesis
  constant DFontVariant (line 149) | DFontVariant
  constant DFontVariantCaps (line 150) | DFontVariantCaps
  constant DFontVariantEastAsian (line 151) | DFontVariantEastAsian
  constant DFontVariantLigatures (line 152) | DFontVariantLigatures
  constant DFontVariantNumeric (line 153) | DFontVariantNumeric
  constant DFontVariantPosition (line 154) | DFontVariantPosition
  constant DFontWeight (line 155) | DFontWeight
  constant DGap (line 156) | DGap
  constant DGlyphOrientationVertical (line 157) | DGlyphOrientationVertical
  constant DGrid (line 158) | DGrid
  constant DGridArea (line 159) | DGridArea
  constant DGridAutoColumns (line 160) | DGridAutoColumns
  constant DGridAutoFlow (line 161) | DGridAutoFlow
  constant DGridAutoRows (line 162) | DGridAutoRows
  constant DGridColumn (line 163) | DGridColumn
  constant DGridColumnEnd (line 164) | DGridColumnEnd
  constant DGridColumnGap (line 165) | DGridColumnGap
  constant DGridColumnStart (line 166) | DGridColumnStart
  constant DGridGap (line 167) | DGridGap
  constant DGridRow (line 168) | DGridRow
  constant DGridRowEnd (line 169) | DGridRowEnd
  constant DGridRowGap (line 170) | DGridRowGap
  constant DGridRowStart (line 171) | DGridRowStart
  constant DGridTemplate (line 172) | DGridTemplate
  constant DGridTemplateAreas (line 173) | DGridTemplateAreas
  constant DGridTemplateColumns (line 174) | DGridTemplateColumns
  constant DGridTemplateRows (line 175) | DGridTemplateRows
  constant DHeight (line 176) | DHeight
  constant DHyphens (line 177) | DHyphens
  constant DImageOrientation (line 178) | DImageOrientation
  constant DImageRendering (line 179) | DImageRendering
  constant DInlineSize (line 180) | DInlineSize
  constant DInset (line 181) | DInset
  constant DJustifyContent (line 182) | DJustifyContent
  constant DJustifyItems (line 183) | DJustifyItems
  constant DJustifySelf (line 184) | DJustifySelf
  constant DLeft (line 185) | DLeft
  constant DLetterSpacing (line 186) | DLetterSpacing
  constant DLightingColor (line 187) | DLightingColor
  constant DLineBreak (line 188) | DLineBreak
  constant DLineHeight (line 189) | DLineHeight
  constant DListStyle (line 190) | DListStyle
  constant DListStyleImage (line 191) | DListStyleImage
  constant DListStylePosition (line 192) | DListStylePosition
  constant DListStyleType (line 193) | DListStyleType
  constant DMargin (line 194) | DMargin
  constant DMarginBlockEnd (line 195) | DMarginBlockEnd
  constant DMarginBlockStart (line 196) | DMarginBlockStart
  constant DMarginBottom (line 197) | DMarginBottom
  constant DMarginInlineEnd (line 198) | DMarginInlineEnd
  constant DMarginInlineStart (line 199) | DMarginInlineStart
  constant DMarginLeft (line 200) | DMarginLeft
  constant DMarginRight (line 201) | DMarginRight
  constant DMarginTop (line 202) | DMarginTop
  constant DMarker (line 203) | DMarker
  constant DMarkerEnd (line 204) | DMarkerEnd
  constant DMarkerMid (line 205) | DMarkerMid
  constant DMarkerStart (line 206) | DMarkerStart
  constant DMask (line 207) | DMask
  constant DMaskComposite (line 208) | DMaskComposite
  constant DMaskImage (line 209) | DMaskImage
  constant DMaskPosition (line 210) | DMaskPosition
  constant DMaskRepeat (line 211) | DMaskRepeat
  constant DMaskSize (line 212) | DMaskSize
  constant DMaskType (line 213) | DMaskType
  constant DMaxBlockSize (line 214) | DMaxBlockSize
  constant DMaxHeight (line 215) | DMaxHeight
  constant DMaxInlineSize (line 216) | DMaxInlineSize
  constant DMaxWidth (line 217) | DMaxWidth
  constant DMinBlockSize (line 218) | DMinBlockSize
  constant DMinHeight (line 219) | DMinHeight
  constant DMinInlineSize (line 220) | DMinInlineSize
  constant DMinWidth (line 221) | DMinWidth
  constant DObjectFit (line 222) | DObjectFit
  constant DObjectPosition (line 223) | DObjectPosition
  constant DOpacity (line 224) | DOpacity
  constant DOrder (line 225) | DOrder
  constant DOrphans (line 226) | DOrphans
  constant DOutline (line 227) | DOutline
  constant DOutlineColor (line 228) | DOutlineColor
  constant DOutlineOffset (line 229) | DOutlineOffset
  constant DOutlineStyle (line 230) | DOutlineStyle
  constant DOutlineWidth (line 231) | DOutlineWidth
  constant DOverflow (line 232) | DOverflow
  constant DOverflowAnchor (line 233) | DOverflowAnchor
  constant DOverflowWrap (line 234) | DOverflowWrap
  constant DOverflowX (line 235) | DOverflowX
  constant DOverflowY (line 236) | DOverflowY
  constant DOverscrollBehavior (line 237) | DOverscrollBehavior
  constant DOverscrollBehaviorBlock (line 238) | DOverscrollBehaviorBlock
  constant DOverscrollBehaviorInline (line 239) | DOverscrollBehaviorInline
  constant DOverscrollBehaviorX (line 240) | DOverscrollBehaviorX
  constant DOverscrollBehaviorY (line 241) | DOverscrollBehaviorY
  constant DPadding (line 242) | DPadding
  constant DPaddingBlockEnd (line 243) | DPaddingBlockEnd
  constant DPaddingBlockStart (line 244) | DPaddingBlockStart
  constant DPaddingBottom (line 245) | DPaddingBottom
  constant DPaddingInlineEnd (line 246) | DPaddingInlineEnd
  constant DPaddingInlineStart (line 247) | DPaddingInlineStart
  constant DPaddingLeft (line 248) | DPaddingLeft
  constant DPaddingRight (line 249) | DPaddingRight
  constant DPaddingTop (line 250) | DPaddingTop
  constant DPageBreakAfter (line 251) | DPageBreakAfter
  constant DPageBreakBefore (line 252) | DPageBreakBefore
  constant DPageBreakInside (line 253) | DPageBreakInside
  constant DPaintOrder (line 254) | DPaintOrder
  constant DPerspective (line 255) | DPerspective
  constant DPerspectiveOrigin (line 256) | DPerspectiveOrigin
  constant DPlaceContent (line 257) | DPlaceContent
  constant DPlaceItems (line 258) | DPlaceItems
  constant DPlaceSelf (line 259) | DPlaceSelf
  constant DPointerEvents (line 260) | DPointerEvents
  constant DPosition (line 261) | DPosition
  constant DQuotes (line 262) | DQuotes
  constant DResize (line 263) | DResize
  constant DRight (line 264) | DRight
  constant DRotate (line 265) | DRotate
  constant DRowGap (line 266) | DRowGap
  constant DRubyAlign (line 267) | DRubyAlign
  constant DRubyPosition (line 268) | DRubyPosition
  constant DScale (line 269) | DScale
  constant DScrollBehavior (line 270) | DScrollBehavior
  constant DShapeRendering (line 271) | DShapeRendering
  constant DStopColor (line 272) | DStopColor
  constant DStopOpacity (line 273) | DStopOpacity
  constant DStroke (line 274) | DStroke
  constant DStrokeDasharray (line 275) | DStrokeDasharray
  constant DStrokeDashoffset (line 276) | DStrokeDashoffset
  constant DStrokeLinecap (line 277) | DStrokeLinecap
  constant DStrokeLinejoin (line 278) | DStrokeLinejoin
  constant DStrokeMiterlimit (line 279) | DStrokeMiterlimit
  constant DStrokeOpacity (line 280) | DStrokeOpacity
  constant DStrokeWidth (line 281) | DStrokeWidth
  constant DTabSize (line 282) | DTabSize
  constant DTableLayout (line 283) | DTableLayout
  constant DTextAlign (line 284) | DTextAlign
  constant DTextAlignLast (line 285) | DTextAlignLast
  constant DTextAnchor (line 286) | DTextAnchor
  constant DTextCombineUpright (line 287) | DTextCombineUpright
  constant DTextDecoration (line 288) | DTextDecoration
  constant DTextDecorationColor (line 289) | DTextDecorationColor
  constant DTextDecorationLine (line 290) | DTextDecorationLine
  constant DTextDecorationStyle (line 291) | DTextDecorationStyle
  constant DTextEmphasis (line 292) | DTextEmphasis
  constant DTextEmphasisColor (line 293) | DTextEmphasisColor
  constant DTextEmphasisPosition (line 294) | DTextEmphasisPosition
  constant DTextEmphasisStyle (line 295) | DTextEmphasisStyle
  constant DTextIndent (line 296) | DTextIndent
  constant DTextJustify (line 297) | DTextJustify
  constant DTextOrientation (line 298) | DTextOrientation
  constant DTextOverflow (line 299) | DTextOverflow
  constant DTextRendering (line 300) | DTextRendering
  constant DTextShadow (line 301) | DTextShadow
  constant DTextTransform (line 302) | DTextTransform
  constant DTextUnderlinePosition (line 303) | DTextUnderlinePosition
  constant DTop (line 304) | DTop
  constant DTouchAction (line 305) | DTouchAction
  constant DTransform (line 306) | DTransform
  constant DTransformBox (line 307) | DTransformBox
  constant DTransformOrigin (line 308) | DTransformOrigin
  constant DTransformStyle (line 309) | DTransformStyle
  constant DTransition (line 310) | DTransition
  constant DTransitionDelay (line 311) | DTransitionDelay
  constant DTransitionDuration (line 312) | DTransitionDuration
  constant DTransitionProperty (line 313) | DTransitionProperty
  constant DTransitionTimingFunction (line 314) | DTransitionTimingFunction
  constant DTranslate (line 315) | DTranslate
  constant DUnicodeBidi (line 316) | DUnicodeBidi
  constant DUserSelect (line 317) | DUserSelect
  constant DVerticalAlign (line 318) | DVerticalAlign
  constant DVisibility (line 319) | DVisibility
  constant DWhiteSpace (line 320) | DWhiteSpace
  constant DWidows (line 321) | DWidows
  constant DWidth (line 322) | DWidth
  constant DWillChange (line 323) | DWillChange
  constant DWordBreak (line 324) | DWordBreak
  constant DWordSpacing (line 325) | DWordSpacing
  constant DWordWrap (line 326) | DWordWrap
  constant DWritingMode (line 327) | DWritingMode
  constant DZIndex (line 328) | DZIndex
  constant DZoom (line 329) | DZoom
  function MaybeCorrectDeclarationTypo (line 654) | func MaybeCorrectDeclarationTypo(text string) (string, bool) {

FILE: lib/esbuild/css_lexer/css_lexer.go
  type T (line 15) | type T
    method String (line 102) | func (t T) String() string {
    method IsNumeric (line 106) | func (t T) IsNumeric() bool {
  constant eof (line 17) | eof = -1
  constant TEndOfFile (line 20) | TEndOfFile T = iota
  constant TAtKeyword (line 22) | TAtKeyword
  constant TBadString (line 23) | TBadString
  constant TBadURL (line 24) | TBadURL
  constant TCDC (line 25) | TCDC
  constant TCDO (line 26) | TCDO
  constant TCloseBrace (line 27) | TCloseBrace
  constant TCloseBracket (line 28) | TCloseBracket
  constant TCloseParen (line 29) | TCloseParen
  constant TColon (line 30) | TColon
  constant TComma (line 31) | TComma
  constant TDelim (line 32) | TDelim
  constant TDelimAmpersand (line 33) | TDelimAmpersand
  constant TDelimAsterisk (line 34) | TDelimAsterisk
  constant TDelimBar (line 35) | TDelimBar
  constant TDelimCaret (line 36) | TDelimCaret
  constant TDelimDollar (line 37) | TDelimDollar
  constant TDelimDot (line 38) | TDelimDot
  constant TDelimEquals (line 39) | TDelimEquals
  constant TDelimExclamation (line 40) | TDelimExclamation
  constant TDelimGreaterThan (line 41) | TDelimGreaterThan
  constant TDelimMinus (line 42) | TDelimMinus
  constant TDelimPlus (line 43) | TDelimPlus
  constant TDelimSlash (line 44) | TDelimSlash
  constant TDelimTilde (line 45) | TDelimTilde
  constant TDimension (line 46) | TDimension
  constant TFunction (line 47) | TFunction
  constant THash (line 48) | THash
  constant TIdent (line 49) | TIdent
  constant TNumber (line 50) | TNumber
  constant TOpenBrace (line 51) | TOpenBrace
  constant TOpenBracket (line 52) | TOpenBracket
  constant TOpenParen (line 53) | TOpenParen
  constant TPercentage (line 54) | TPercentage
  constant TSemicolon (line 55) | TSemicolon
  constant TString (line 56) | TString
  constant TURL (line 57) | TURL
  constant TWhitespace (line 58) | TWhitespace
  type TokenFlags (line 110) | type TokenFlags
  constant IsID (line 113) | IsID TokenFlags = 1 << iota
  constant DidWarnAboutSingleLineComment (line 114) | DidWarnAboutSingleLineComment
  type Token (line 120) | type Token struct
    method DecodedText (line 127) | func (token Token) DecodedText(contents string) string {
  type lexer (line 161) | type lexer struct
    method step (line 234) | func (lexer *lexer) step() {
    method next (line 257) | func (lexer *lexer) next() {
    method consumeToEndOfMultiLineComment (line 471) | func (lexer *lexer) consumeToEndOfMultiLineComment(startRange logger.R...
    method isValidEscape (line 535) | func (lexer *lexer) isValidEscape() bool {
    method wouldStartIdentifier (line 543) | func (lexer *lexer) wouldStartIdentifier() bool {
    method wouldStartNumber (line 587) | func (lexer *lexer) wouldStartNumber() bool {
    method consumeName (line 613) | func (lexer *lexer) consumeName() string {
    method consumeEscape (line 640) | func (lexer *lexer) consumeEscape() rune {
    method consumeIdentLike (line 671) | func (lexer *lexer) consumeIdentLike() T {
    method consumeURL (line 693) | func (lexer *lexer) consumeURL() T {
    method consumeString (line 757) | func (lexer *lexer) consumeString() T {
    method consumeNumeric (line 797) | func (lexer *lexer) consumeNumeric() T {
  type Comment (line 174) | type Comment struct
  type TokenizeResult (line 180) | type TokenizeResult struct
  function Tokenize (line 187) | func Tokenize(log logger.Log, source logger.Source) TokenizeResult {
  function containsAtPreserveOrAtLicense (line 526) | func containsAtPreserveOrAtLicense(text string) bool {
  function WouldStartIdentifierWithoutEscapes (line 566) | func WouldStartIdentifierWithoutEscapes(text string) bool {
  function IsNameStart (line 853) | func IsNameStart(c rune) bool {
  function IsNameContinue (line 857) | func IsNameContinue(c rune) bool {
  function isNewline (line 861) | func isNewline(c rune) bool {
  function isWhitespace (line 869) | func isWhitespace(c rune) bool {
  function isHex (line 877) | func isHex(c rune) (int, bool) {
  function isNonPrintable (line 890) | func isNonPrintable(c rune) bool {
  function decodeEscapesInToken (line 894) | func decodeEscapesInToken(inner string) string {

FILE: lib/esbuild/css_lexer/css_lexer_test.go
  function lexToken (line 10) | func lexToken(contents string) (T, string) {
  function lexerError (line 20) | func lexerError(contents string) string {
  function TestTokens (line 30) | func TestTokens(t *testing.T) {
  function TestStringParsing (line 84) | func TestStringParsing(t *testing.T) {
  function TestURLParsing (line 106) | func TestURLParsing(t *testing.T) {
  function TestComment (line 124) | func TestComment(t *testing.T) {
  function TestString (line 131) | func TestString(t *testing.T) {
  function TestBOM (line 140) | func TestBOM(t *testing.T) {

FILE: lib/esbuild/css_parser/css_decls.go
  method commaToken (line 9) | func (p *parser) commaToken() css_ast.Token {
  function expandTokenQuad (line 20) | func expandTokenQuad(tokens []css_ast.Token, allowedIdent string) (resul...
  function compactTokenQuad (line 54) | func compactTokenQuad(a css_ast.Token, b css_ast.Token, c css_ast.Token,...
  method processDeclarations (line 80) | func (p *parser) processDeclarations(rules []css_ast.Rule) []css_ast.Rule {

FILE: lib/esbuild/css_parser/css_decls_border_radius.go
  constant borderRadiusTopLeft (line 10) | borderRadiusTopLeft = iota
  constant borderRadiusTopRight (line 11) | borderRadiusTopRight
  constant borderRadiusBottomRight (line 12) | borderRadiusBottomRight
  constant borderRadiusBottomLeft (line 13) | borderRadiusBottomLeft
  type borderRadiusCorner (line 16) | type borderRadiusCorner struct
  type borderRadiusTracker (line 24) | type borderRadiusTracker struct
    method updateCorner (line 29) | func (borderRadius *borderRadiusTracker) updateCorner(rules []css_ast....
    method mangleCorners (line 38) | func (borderRadius *borderRadiusTracker) mangleCorners(rules []css_ast...
    method mangleCorner (line 108) | func (borderRadius *borderRadiusTracker) mangleCorner(rules []css_ast....
    method compactRules (line 157) | func (borderRadius *borderRadiusTracker) compactRules(rules []css_ast....

FILE: lib/esbuild/css_parser/css_decls_box.go
  constant boxTop (line 10) | boxTop = iota
  constant boxRight (line 11) | boxRight
  constant boxBottom (line 12) | boxBottom
  constant boxLeft (line 13) | boxLeft
  type boxSide (line 16) | type boxSide struct
  type boxTracker (line 23) | type boxTracker struct
    method updateSide (line 86) | func (box *boxTracker) updateSide(rules []css_ast.Rule, side int, new ...
    method mangleSides (line 95) | func (box *boxTracker) mangleSides(rules []css_ast.Rule, decl *css_ast...
    method mangleSide (line 130) | func (box *boxTracker) mangleSide(rules []css_ast.Rule, decl *css_ast....
    method compactRules (line 160) | func (box *boxTracker) compactRules(rules []css_ast.Rule, keyRange log...
  type unitSafetyStatus (line 31) | type unitSafetyStatus
  constant unitSafe (line 34) | unitSafe         unitSafetyStatus = iota
  constant unitUnsafeSingle (line 35) | unitUnsafeSingle
  constant unitUnsafeMixed (line 36) | unitUnsafeMixed
  type unitSafetyTracker (line 52) | type unitSafetyTracker struct
    method isSafeWith (line 57) | func (a unitSafetyTracker) isSafeWith(b unitSafetyTracker) bool {
    method includeUnitOf (line 61) | func (t *unitSafetyTracker) includeUnitOf(token css_ast.Token) {

FILE: lib/esbuild/css_parser/css_decls_box_shadow.go
  method mangleBoxShadow (line 8) | func (p *parser) mangleBoxShadow(tokens []css_ast.Token) []css_ast.Token {
  method mangleBoxShadows (line 78) | func (p *parser) mangleBoxShadows(tokens []css_ast.Token) []css_ast.Token {

FILE: lib/esbuild/css_parser/css_decls_color.go
  function parseHex (line 200) | func parseHex(text string) (uint32, bool) {
  function compactHex (line 219) | func compactHex(v uint32) uint32 {
  function expandHex (line 224) | func expandHex(v uint32) uint32 {
  function hexR (line 228) | func hexR(v uint32) int { return int(v >> 24) }
  function hexG (line 229) | func hexG(v uint32) int { return int((v >> 16) & 255) }
  function hexB (line 230) | func hexB(v uint32) int { return int((v >> 8) & 255) }
  function hexA (line 231) | func hexA(v uint32) int { return int(v & 255) }
  function floatToStringForColor (line 233) | func floatToStringForColor(a float64) string {
  function degreesForAngle (line 244) | func degreesForAngle(token css_ast.Token) (float64, bool) {
  function lowerAlphaPercentageToNumber (line 268) | func lowerAlphaPercentageToNumber(token css_ast.Token) css_ast.Token {
  method lowerColor (line 279) | func (p *parser) lowerColor(token css_ast.Token) css_ast.Token {
  function parseColor (line 416) | func parseColor(token css_ast.Token) (uint32, bool) {
  function hueToRgb (line 548) | func hueToRgb(t1 float64, t2 float64, hue float64) uint32 {
  function parseAlphaByte (line 570) | func parseAlphaByte(token css_ast.Token) (uint32, bool) {
  function parseColorByte (line 577) | func parseColorByte(token css_ast.Token, scale float64) (uint32, bool) {
  method mangleColor (line 603) | func (p *parser) mangleColor(token css_ast.Token, hex uint32) css_ast.To...
  constant alphaFractionTable (line 653) | alphaFractionTable string = "" +

FILE: lib/esbuild/css_parser/css_decls_font.go
  method mangleFont (line 13) | func (p *parser) mangleFont(tokens []css_ast.Token) []css_ast.Token {
  function isFontSize (line 122) | func isFontSize(token css_ast.Token) bool {

FILE: lib/esbuild/css_parser/css_decls_font_family.go
  method mangleFontFamily (line 35) | func (p *parser) mangleFontFamily(tokens []css_ast.Token) ([]css_ast.Tok...
  method mangleFamilyNameOrGenericName (line 55) | func (p *parser) mangleFamilyNameOrGenericName(result []css_ast.Token, t...
  function isValidCustomIdent (line 115) | func isValidCustomIdent(text string, predefinedKeywords map[string]bool)...

FILE: lib/esbuild/css_parser/css_decls_font_weight.go
  method mangleFontWeight (line 10) | func (p *parser) mangleFontWeight(token css_ast.Token) css_ast.Token {

FILE: lib/esbuild/css_parser/css_decls_transform.go
  function turnPercentIntoNumberIfShorter (line 10) | func turnPercentIntoNumberIfShorter(t *css_ast.Token) {
  method mangleTransforms (line 21) | func (p *parser) mangleTransforms(tokens []css_ast.Token) []css_ast.Token {

FILE: lib/esbuild/css_parser/css_parser.go
  type parser (line 17) | type parser struct
    method advance (line 64) | func (p *parser) advance() {
    method at (line 70) | func (p *parser) at(index int) css_lexer.Token {
    method current (line 86) | func (p *parser) current() css_lexer.Token {
    method next (line 90) | func (p *parser) next() css_lexer.Token {
    method raw (line 94) | func (p *parser) raw() string {
    method decoded (line 99) | func (p *parser) decoded() string {
    method peek (line 103) | func (p *parser) peek(kind css_lexer.T) bool {
    method eat (line 107) | func (p *parser) eat(kind css_lexer.T) bool {
    method expect (line 115) | func (p *parser) expect(kind css_lexer.T) bool {
    method unexpected (line 157) | func (p *parser) unexpected() {
    method parseListOfRules (line 179) | func (p *parser) parseListOfRules(context ruleContext) []css_ast.Rule {
    method parseListOfDeclarations (line 286) | func (p *parser) parseListOfDeclarations() (list []css_ast.Rule) {
    method shouldParseNestedSelector (line 320) | func (p *parser) shouldParseNestedSelector() bool {
    method parseURLOrString (line 595) | func (p *parser) parseURLOrString() (string, logger.Range, bool) {
    method expectURLOrString (line 622) | func (p *parser) expectURLOrString() (url string, r logger.Range, ok b...
    method parseAtRule (line 722) | func (p *parser) parseAtRule(context atRuleContext) css_ast.Rule {
    method expectValidLayerNameIdent (line 1097) | func (p *parser) expectValidLayerNameIdent() (string, bool) {
    method convertTokens (line 1112) | func (p *parser) convertTokens(tokens []css_lexer.Token) []css_ast.Tok...
    method convertTokensHelper (line 1123) | func (p *parser) convertTokensHelper(tokens []css_lexer.Token, close c...
    method parseSelectorRuleFrom (line 1459) | func (p *parser) parseSelectorRuleFrom(preludeStart int, opts parseSel...
    method parseQualifiedRuleFrom (line 1492) | func (p *parser) parseQualifiedRuleFrom(preludeStart int, isAlreadyInv...
    method parseDeclaration (line 1520) | func (p *parser) parseDeclaration() css_ast.Rule {
    method parseComponentValue (line 1611) | func (p *parser) parseComponentValue() {
    method parseBlock (line 1633) | func (p *parser) parseBlock(open css_lexer.T, close css_lexer.T) {
  type Options (line 32) | type Options struct
  function Parse (line 39) | func Parse(log logger.Log, source logger.Source, options Options) css_as...
  type ruleContext (line 174) | type ruleContext struct
  function mangleRules (line 330) | func mangleRules(rules []css_ast.Rule) []css_ast.Rule {
  function isSafeSelectors (line 541) | func isSafeSelectors(complexSelectors []css_ast.ComplexSelector) bool {
  type atRuleKind (line 630) | type atRuleKind
  constant atRuleUnknown (line 633) | atRuleUnknown atRuleKind = iota
  constant atRuleDeclarations (line 634) | atRuleDeclarations
  constant atRuleInheritContext (line 635) | atRuleInheritContext
  constant atRuleQualifiedOrEmpty (line 636) | atRuleQualifiedOrEmpty
  constant atRuleEmpty (line 637) | atRuleEmpty
  type atRuleValidity (line 706) | type atRuleValidity
  constant atRuleInvalid (line 709) | atRuleInvalid atRuleValidity = iota
  constant atRuleValid (line 710) | atRuleValid
  constant atRuleInvalidAfter (line 711) | atRuleInvalidAfter
  type atRuleContext (line 714) | type atRuleContext struct
  type convertTokensOpts (line 1117) | type convertTokensOpts struct
  function shiftDot (line 1359) | func shiftDot(text string, dotOffset int) (string, bool) {
  function mangleDimension (line 1410) | func mangleDimension(value string, unit string) (string, string, bool) {
  function mangleNumber (line 1431) | func mangleNumber(t string) (string, bool) {

FILE: lib/esbuild/css_parser/css_parser_selector.go
  method parseSelectorList (line 12) | func (p *parser) parseSelectorList(opts parseSelectorOpts) (list []css_a...
  type parseSelectorOpts (line 51) | type parseSelectorOpts struct
  method parseComplexSelector (line 56) | func (p *parser) parseComplexSelector(opts parseSelectorOpts) (result cs...
  method nameToken (line 101) | func (p *parser) nameToken() css_ast.NameToken {
  method maybeWarnAboutNesting (line 108) | func (p *parser) maybeWarnAboutNesting(r logger.Range, opts parseSelecto...
  method parseCompoundSelector (line 120) | func (p *parser) parseCompoundSelector(opts parseSelectorOpts) (sel css_...
  method parseAttributeSelector (line 232) | func (p *parser) parseAttributeSelector() (attr css_ast.SSAttribute, ok ...
  method parsePseudoClassSelector (line 321) | func (p *parser) parsePseudoClassSelector() css_ast.SSPseudoClass {
  method parseAnyValue (line 340) | func (p *parser) parseAnyValue() []css_lexer.Token {
  method parseCombinator (line 381) | func (p *parser) parseCombinator() string {

FILE: lib/esbuild/css_parser/css_parser_test.go
  function expectParseError (line 14) | func expectParseError(t *testing.T, contents string, expected string) {
  function expectPrintedCommon (line 29) | func expectPrintedCommon(t *testing.T, name string, contents string, exp...
  function expectPrinted (line 54) | func expectPrinted(t *testing.T, contents string, expected string) {
  function expectPrintedLower (line 59) | func expectPrintedLower(t *testing.T, contents string, expected string) {
  function expectPrintedMinify (line 66) | func expectPrintedMinify(t *testing.T, contents string, expected string) {
  function expectPrintedMangle (line 73) | func expectPrintedMangle(t *testing.T, contents string, expected string) {
  function expectPrintedLowerMangle (line 80) | func expectPrintedLowerMangle(t *testing.T, contents string, expected st...
  function expectPrintedMangleMinify (line 88) | func expectPrintedMangleMinify(t *testing.T, contents string, expected s...
  function TestSingleLineComment (line 96) | func TestSingleLineComment(t *testing.T) {
  function TestEscapes (line 107) | func TestEscapes(t *testing.T) {
  function TestString (line 266) | func TestString(t *testing.T) {
  function TestNumber (line 298) | func TestNumber(t *testing.T) {
  function TestHexColor (line 344) | func TestHexColor(t *testing.T) {
  function TestColorNames (line 470) | func TestColorNames(t *testing.T) {
  function TestColorRGBA (line 493) | func TestColorRGBA(t *testing.T) {
  function TestColorHSLA (line 509) | func TestColorHSLA(t *testing.T) {
  function TestLowerColor (line 528) | func TestLowerColor(t *testing.T) {
  function TestDeclaration (line 563) | func TestDeclaration(t *testing.T) {
  function TestSelector (line 581) | func TestSelector(t *testing.T) {
  function TestNestedSelector (line 691) | func TestNestedSelector(t *testing.T) {
  function TestBadQualifiedRules (line 748) | func TestBadQualifiedRules(t *testing.T) {
  function TestAtRule (line 758) | func TestAtRule(t *testing.T) {
  function TestAtCharset (line 855) | func TestAtCharset(t *testing.T) {
  function TestAtImport (line 903) | func TestAtImport(t *testing.T) {
  function TestLegalComment (line 932) | func TestLegalComment(t *testing.T) {
  function TestAtKeyframes (line 955) | func TestAtKeyframes(t *testing.T) {
  function TestAtRuleValidation (line 1007) | func TestAtRuleValidation(t *testing.T) {
  function TestAtLayer (line 1017) | func TestAtLayer(t *testing.T) {
  function TestEmptyRule (line 1077) | func TestEmptyRule(t *testing.T) {
  function TestMarginAndPaddingAndInset (line 1104) | func TestMarginAndPaddingAndInset(t *testing.T) {
  function TestBorderRadius (line 1225) | func TestBorderRadius(t *testing.T) {
  function TestBoxShadow (line 1299) | func TestBoxShadow(t *testing.T) {
  function TestDeduplicateRules (line 1318) | func TestDeduplicateRules(t *testing.T) {
  function TestMangleTime (line 1347) | func TestMangleTime(t *testing.T) {
  function TestCalc (line 1385) | func TestCalc(t *testing.T) {
  function TestMinifyCalc (line 1412) | func TestMinifyCalc(t *testing.T) {
  function TestMangleCalc (line 1419) | func TestMangleCalc(t *testing.T) {
  function TestTransform (line 1504) | func TestTransform(t *testing.T) {
  function TestMangleAlpha (line 1671) | func TestMangleAlpha(t *testing.T) {
  function TestMangleDuplicateSelectorRules (line 1699) | func TestMangleDuplicateSelectorRules(t *testing.T) {
  function TestFontWeight (line 1735) | func TestFontWeight(t *testing.T) {
  function TestFontFamily (line 1745) | func TestFontFamily(t *testing.T) {
  function TestFont (line 1767) | func TestFont(t *testing.T) {
  function TestWarningUnexpectedCloseBrace (line 1787) | func TestWarningUnexpectedCloseBrace(t *testing.T) {
  function TestPropertyTypoWarning (line 1804) | func TestPropertyTypoWarning(t *testing.T) {

FILE: lib/esbuild/css_parser/css_reduce_calc.go
  method tryToReduceCalcExpression (line 13) | func (p *parser) tryToReduceCalcExpression(token css_ast.Token) css_ast....
  type calcTerm (line 32) | type calcTerm interface
  type calcSum (line 37) | type calcSum struct
    method convertToToken (line 91) | func (c *calcSum) convertToToken(whitespace css_ast.WhitespaceFlags) (...
    method partiallySimplify (line 278) | func (c *calcSum) partiallySimplify() calcTerm {
  type calcProduct (line 41) | type calcProduct struct
    method convertToToken (line 171) | func (c *calcProduct) convertToToken(whitespace css_ast.WhitespaceFlag...
    method partiallySimplify (line 323) | func (c *calcProduct) partiallySimplify() calcTerm {
  type calcNegate (line 45) | type calcNegate struct
    method convertToToken (line 214) | func (c *calcNegate) convertToToken(whitespace css_ast.WhitespaceFlags...
    method partiallySimplify (line 401) | func (c *calcNegate) partiallySimplify() calcTerm {
  type calcInvert (line 49) | type calcInvert struct
    method convertToToken (line 231) | func (c *calcInvert) convertToToken(whitespace css_ast.WhitespaceFlags...
    method partiallySimplify (line 420) | func (c *calcInvert) partiallySimplify() calcTerm {
  type calcNumeric (line 53) | type calcNumeric struct
    method convertToToken (line 248) | func (c *calcNumeric) convertToToken(whitespace css_ast.WhitespaceFlag...
    method partiallySimplify (line 439) | func (c *calcNumeric) partiallySimplify() calcTerm {
  type calcValue (line 58) | type calcValue struct
    method convertToToken (line 272) | func (c *calcValue) convertToToken(whitespace css_ast.WhitespaceFlags)...
    method partiallySimplify (line 443) | func (c *calcValue) partiallySimplify() calcTerm {
  function floatToStringForCalc (line 63) | func floatToStringForCalc(a float64) (string, bool) {
  function tryToParseCalcTerm (line 447) | func tryToParseCalcTerm(tokens []css_ast.Token) calcTerm {

FILE: lib/esbuild/css_printer/astro_features.go
  method printScopedSelector (line 10) | func (p *printer) printScopedSelector() bool {
  method printCompoundSelector (line 23) | func (p *printer) printCompoundSelector(sel css_ast.CompoundSelector, is...
  method printPseudoClassSelector (line 169) | func (p *printer) printPseudoClassSelector(pseudo css_ast.SSPseudoClass,...

FILE: lib/esbuild/css_printer/css_printer.go
  constant quoteForURL (line 16) | quoteForURL byte = 0
  type printer (line 18) | type printer struct
    method printRule (line 74) | func (p *printer) printRule(rule css_ast.Rule, indent int32, omitTrail...
    method printIndentedComment (line 279) | func (p *printer) printIndentedComment(indent int32, text string) {
    method printRuleBlock (line 298) | func (p *printer) printRuleBlock(rules []css_ast.Rule, indent int32) {
    method printComplexSelectors (line 316) | func (p *printer) printComplexSelectors(selectors []css_ast.ComplexSel...
    method printNamespacedName (line 346) | func (p *printer) printNamespacedName(nsName css_ast.NamespacedName, w...
    method print (line 372) | func (p *printer) print(text string) {
    method printQuoted (line 414) | func (p *printer) printQuoted(text string) {
    method printWithEscape (line 426) | func (p *printer) printWithEscape(c rune, escape escapeKind, remaining...
    method printQuotedWithQuote (line 465) | func (p *printer) printQuotedWithQuote(text string, quote byte) {
    method printIdent (line 522) | func (p *printer) printIdent(text string, mode identMode, whitespace t...
    method printIndent (line 572) | func (p *printer) printIndent(indent int32) {
    method printTokens (line 583) | func (p *printer) printTokens(tokens []css_ast.Token, opts printTokens...
  type ScopeStrategy (line 27) | type ScopeStrategy
  constant ScopeStrategyWhere (line 30) | ScopeStrategyWhere ScopeStrategy = iota
  constant ScopeStrategyClass (line 31) | ScopeStrategyClass
  constant ScopeStrategyAttribute (line 32) | ScopeStrategyAttribute ScopeStrategy = iota
  type Options (line 35) | type Options struct
  type PrintResult (line 52) | type PrintResult struct
  function Print (line 58) | func Print(tree css_ast.AST, options Options) PrintResult {
  function bestQuoteCharForString (line 376) | func bestQuoteCharForString(text string, forURL bool) byte {
  type escapeKind (line 418) | type escapeKind
  constant escapeNone (line 421) | escapeNone escapeKind = iota
  constant escapeBackslash (line 422) | escapeBackslash
  constant escapeHex (line 423) | escapeHex
  type identMode (line 507) | type identMode
  constant identNormal (line 510) | identNormal identMode = iota
  constant identHash (line 511) | identHash
  constant identDimensionUnit (line 512) | identDimensionUnit
  type trailingWhitespace (line 515) | type trailingWhitespace
  constant mayNeedWhitespaceAfter (line 518) | mayNeedWhitespaceAfter trailingWhitespace = iota
  constant canDiscardWhitespaceAfter (line 519) | canDiscardWhitespaceAfter
  type printTokensOpts (line 578) | type printTokensOpts struct

FILE: lib/esbuild/css_printer/css_printer_test.go
  function assertEqual (line 11) | func assertEqual(t *testing.T, a interface{}, b interface{}) {
  function expectPrintedCommon (line 18) | func expectPrintedCommon(t *testing.T, name string, contents string, exp...
  function expectPrinted (line 39) | func expectPrinted(t *testing.T, contents string, expected string) {
  function expectPrintedMinify (line 44) | func expectPrintedMinify(t *testing.T, contents string, expected string) {
  function expectPrintedASCII (line 51) | func expectPrintedASCII(t *testing.T, contents string, expected string) {
  function expectPrintedString (line 58) | func expectPrintedString(t *testing.T, stringValue string, expected stri...
  function TestStringQuote (line 68) | func TestStringQuote(t *testing.T) {
  function TestURLQuote (line 100) | func TestURLQuote(t *testing.T) {
  function TestImportant (line 110) | func TestImportant(t *testing.T) {
  function TestSelector (line 122) | func TestSelector(t *testing.T) {
  function TestNestedSelector (line 140) | func TestNestedSelector(t *testing.T) {
  function TestBadQualifiedRules (line 147) | func TestBadQualifiedRules(t *testing.T) {
  function TestDeclaration (line 166) | func TestDeclaration(t *testing.T) {
  function TestVerbatimWhitespace (line 193) | func TestVerbatimWhitespace(t *testing.T) {
  function TestAtRule (line 293) | func TestAtRule(t *testing.T) {
  function TestAtCharset (line 312) | func TestAtCharset(t *testing.T) {
  function TestAtImport (line 317) | func TestAtImport(t *testing.T) {
  function TestAtKeyframes (line 331) | func TestAtKeyframes(t *testing.T) {
  function TestAtMedia (line 338) | func TestAtMedia(t *testing.T) {
  function TestAtFontFace (line 345) | func TestAtFontFace(t *testing.T) {
  function TestAtPage (line 352) | func TestAtPage(t *testing.T) {
  function TestAtStartingStyle (line 359) | func TestAtStartingStyle(t *testing.T) {
  function TestMsGridColumnsWhitespace (line 366) | func TestMsGridColumnsWhitespace(t *testing.T) {
  function TestASCII (line 374) | func TestASCII(t *testing.T) {

FILE: lib/esbuild/helpers/bitset.go
  type BitSet (line 5) | type BitSet struct
    method HasBit (line 13) | func (bs BitSet) HasBit(bit uint) bool {
    method SetBit (line 17) | func (bs BitSet) SetBit(bit uint) {
    method Equals (line 21) | func (bs BitSet) Equals(other BitSet) bool {
    method String (line 25) | func (bs BitSet) String() string {
  function NewBitSet (line 9) | func NewBitSet(bitCount uint) BitSet {

FILE: lib/esbuild/helpers/comment.go
  function RemoveMultiLineCommentIndent (line 8) | func RemoveMultiLineCommentIndent(prefix string, text string) string {
  function EscapeClosingTag (line 70) | func EscapeClosingTag(text string, slashTag string) string {

FILE: lib/esbuild/helpers/hash.go
  function HashCombine (line 4) | func HashCombine(seed uint32, hash uint32) uint32 {
  function HashCombineString (line 8) | func HashCombineString(seed uint32, text string) uint32 {

FILE: lib/esbuild/helpers/joiner.go
  type Joiner (line 12) | type Joiner struct
    method AddString (line 29) | func (j *Joiner) AddString(data string) {
    method AddBytes (line 37) | func (j *Joiner) AddBytes(data []byte) {
    method LastByte (line 45) | func (j *Joiner) LastByte() byte {
    method Length (line 49) | func (j *Joiner) Length() uint32 {
    method EnsureNewlineAtEnd (line 53) | func (j *Joiner) EnsureNewlineAtEnd() {
    method Done (line 59) | func (j *Joiner) Done() []byte {
    method Contains (line 74) | func (j *Joiner) Contains(s string, b []byte) bool {
  type joinerString (line 19) | type joinerString struct
  type joinerBytes (line 24) | type joinerBytes struct

FILE: lib/esbuild/helpers/mime.go
  function MimeTypeByExtension (line 25) | func MimeTypeByExtension(ext string) string {

FILE: lib/esbuild/helpers/path.go
  function IsInsideNodeModules (line 5) | func IsInsideNodeModules(path string) bool {

FILE: lib/esbuild/helpers/serializer.go
  type Serializer (line 6) | type Serializer struct
    method Enter (line 18) | func (s *Serializer) Enter(i int) {
    method Leave (line 24) | func (s *Serializer) Leave(i int) {
  function MakeSerializer (line 10) | func MakeSerializer(count int) Serializer {

FILE: lib/esbuild/helpers/stack.go
  function PrettyPrintedStack (line 8) | func PrettyPrintedStack() string {

FILE: lib/esbuild/helpers/timer.go
  type Timer (line 12) | type Timer struct
    method Begin (line 23) | func (t *Timer) Begin(name string) {
    method End (line 32) | func (t *Timer) End(name string) {
    method Fork (line 42) | func (t *Timer) Fork() *Timer {
    method Join (line 49) | func (t *Timer) Join(other *Timer) {
    method Log (line 57) | func (t *Timer) Log(log logger.Log) {
  type timerData (line 17) | type timerData struct

FILE: lib/esbuild/helpers/typos.go
  type TypoDetector (line 5) | type TypoDetector struct
    method MaybeCorrectTypo (line 24) | func (detector TypoDetector) MaybeCorrectTypo(typo string) (string, bo...
  function MakeTypoDetector (line 9) | func MakeTypoDetector(valid []string) TypoDetector {

FILE: lib/esbuild/helpers/utf.go
  function ContainsNonBMPCodePoint (line 8) | func ContainsNonBMPCodePoint(text string) bool {
  function ContainsNonBMPCodePointUTF16 (line 18) | func ContainsNonBMPCodePointUTF16(text []uint16) bool {
  function StringToUTF16 (line 33) | func StringToUTF16(text string) []uint16 {
  function UTF16ToString (line 46) | func UTF16ToString(text []uint16) string {
  function UTF16ToStringWithValidation (line 64) | func UTF16ToStringWithValidation(text []uint16) (string, uint16, bool) {
  function UTF16EqualsString (line 91) | func UTF16EqualsString(text []uint16, str string) bool {
  function UTF16EqualsUTF16 (line 121) | func UTF16EqualsUTF16(a []uint16, b []uint16) bool {
  function encodeWTF8Rune (line 135) | func encodeWTF8Rune(p []byte, r rune) int {
  function DecodeWTF8Rune (line 168) | func DecodeWTF8Rune(s string) (rune, int) {

FILE: lib/esbuild/logger/logger.go
  constant defaultTerminalWidth (line 19) | defaultTerminalWidth = 80
  type Log (line 21) | type Log struct
    method Add (line 1601) | func (log Log) Add(kind MsgKind, tracker *LineColumnTracker, r Range, ...
    method AddWithNotes (line 1608) | func (log Log) AddWithNotes(kind MsgKind, tracker *LineColumnTracker, ...
  type LogLevel (line 35) | type LogLevel
  constant LevelNone (line 38) | LevelNone LogLevel = iota
  constant LevelVerbose (line 39) | LevelVerbose
  constant LevelDebug (line 40) | LevelDebug
  constant LevelInfo (line 41) | LevelInfo
  constant LevelWarning (line 42) | LevelWarning
  constant LevelError (line 43) | LevelError
  constant LevelSilent (line 44) | LevelSilent
  type MsgKind (line 47) | type MsgKind
    method String (line 58) | func (kind MsgKind) String() string {
    method Icon (line 77) | func (kind MsgKind) Icon() string {
  constant Error (line 50) | Error MsgKind = iota
  constant Warning (line 51) | Warning
  constant Info (line 52) | Info
  constant Note (line 53) | Note
  constant Debug (line 54) | Debug
  constant Verbose (line 55) | Verbose
  function isProbablyWindowsCommandPrompt (line 122) | func isProbablyWindowsCommandPrompt() bool {
  type Msg (line 147) | type Msg struct
    method String (line 988) | func (msg Msg) String(options OutputOptions, terminalInfo TerminalInfo...
  type MsgData (line 154) | type MsgData struct
  type MsgLocation (line 164) | type MsgLocation struct
  type Loc (line 174) | type Loc struct
  type Range (line 179) | type Range struct
    method End (line 184) | func (r Range) End() int32 {
  type Span (line 188) | type Span struct
  type SortableMsgs (line 194) | type SortableMsgs
    method Len (line 196) | func (a SortableMsgs) Len() int          { return len(a) }
    method Swap (line 197) | func (a SortableMsgs) Swap(i int, j int) { a[i], a[j] = a[j], a[i] }
    method Less (line 199) | func (a SortableMsgs) Less(i int, j int) bool {
  type Path (line 226) | type Path struct
    method IsDisabled (line 246) | func (p Path) IsDisabled() bool {
    method ComesBeforeInSortedOrder (line 250) | func (a Path) ComesBeforeInSortedOrder(b Path) bool {
  type PathFlags (line 239) | type PathFlags
  constant PathDisabled (line 243) | PathDisabled PathFlags = 1 << iota
  function hasNoColorEnvironmentVariable (line 260) | func hasNoColorEnvironmentVariable() bool {
  function PlatformIndependentPathDirBaseExt (line 276) | func PlatformIndependentPathDirBaseExt(path string) (dir string, base st...
  type Source (line 304) | type Source struct
    method TextForRange (line 337) | func (s *Source) TextForRange(r Range) string {
    method LocBeforeWhitespace (line 341) | func (s *Source) LocBeforeWhitespace(loc Loc) Loc {
    method RangeOfOperatorBefore (line 352) | func (s *Source) RangeOfOperatorBefore(loc Loc, op string) Range {
    method RangeOfOperatorAfter (line 361) | func (s *Source) RangeOfOperatorAfter(loc Loc, op string) Range {
    method RangeOfString (line 370) | func (s *Source) RangeOfString(loc Loc) Range {
    method RangeOfNumber (line 392) | func (s *Source) RangeOfNumber(loc Loc) (r Range) {
    method RangeOfLegacyOctalEscape (line 411) | func (s *Source) RangeOfLegacyOctalEscape(loc Loc) (r Range) {
  function plural (line 428) | func plural(prefix string, count int, shown int, someAreMissing bool) st...
  function errorAndWarningSummary (line 443) | func errorAndWarningSummary(errors int, warnings int, shownErrors int, s...
  type APIKind (line 457) | type APIKind
  constant GoAPI (line 460) | GoAPI APIKind = iota
  constant CLIAPI (line 461) | CLIAPI
  constant JSAPI (line 462) | JSAPI
  type TerminalInfo (line 468) | type TerminalInfo struct
  function NewStderrLog (line 475) | func NewStderrLog(options OutputOptions) Log {
  function PrintErrorToStderr (line 612) | func PrintErrorToStderr(osArgs []string, text string) {
  function OutputOptionsForArgs (line 616) | func OutputOptionsForArgs(osArgs []string) OutputOptions {
  function PrintMessageToStderr (line 641) | func PrintMessageToStderr(osArgs []string, msg Msg) {
  type Colors (line 647) | type Colors struct
  function PrintText (line 705) | func PrintText(file *os.File, level LogLevel, osArgs []string, callback ...
  function PrintTextWithColor (line 716) | func PrintTextWithColor(file *os.File, useColor UseColor, callback func(...
  type SummaryTableEntry (line 734) | type SummaryTableEntry struct
  type SummaryTable (line 743) | type SummaryTable
    method Len (line 745) | func (t SummaryTable) Len() int          { return len(t) }
    method Swap (line 746) | func (t SummaryTable) Swap(i int, j int) { t[i], t[j] = t[j], t[i] }
    method Less (line 748) | func (t SummaryTable) Less(i int, j int) bool {
  constant sizeWarningThreshold (line 781) | sizeWarningThreshold = 1024 * 1024
  function PrintSummary (line 783) | func PrintSummary(useColor UseColor, table SummaryTable, start *time.Tim...
  type DeferLogKind (line 928) | type DeferLogKind
  constant DeferLogAll (line 931) | DeferLogAll DeferLogKind = iota
  constant DeferLogNoVerboseOrDebug (line 932) | DeferLogNoVerboseOrDebug
  function NewDeferLog (line 935) | func NewDeferLog(kind DeferLogKind) Log {
  type UseColor (line 973) | type UseColor
  constant ColorIfTerminal (line 976) | ColorIfTerminal UseColor = iota
  constant ColorNever (line 977) | ColorNever
  constant ColorAlways (line 978) | ColorAlways
  type OutputOptions (line 981) | type OutputOptions struct
  constant extraMarginChars (line 1010) | extraMarginChars = 9
  function marginWithLineText (line 1012) | func marginWithLineText(maxMargin int, line int) string {
  function emptyMarginText (line 1017) | func emptyMarginText(maxMargin int, isLast bool) string {
  function msgString (line 1025) | func msgString(includeSource bool, terminalInfo TerminalInfo, kind MsgKi...
  function linkifyText (line 1132) | func linkifyText(text string, underline string, reset string) string {
  function wrapWordsInString (line 1175) | func wrapWordsInString(text string, width int) []string {
  type MsgDetail (line 1232) | type MsgDetail struct
  type LineColumnTracker (line 1265) | type LineColumnTracker struct
    method MsgData (line 1292) | func (tracker *LineColumnTracker) MsgData(r Range, text string) MsgData {
    method scanTo (line 1299) | func (t *LineColumnTracker) scanTo(offset int32) {
    method computeLineAndColumn (line 1362) | func (t *LineColumnTracker) computeLineAndColumn(offset int) (lineCoun...
    method MsgLocationOrNil (line 1399) | func (tracker *LineColumnTracker) MsgLocationOrNil(r Range) *MsgLocati...
  function MakeLineColumnTracker (line 1277) | func MakeLineColumnTracker(source *Source) LineColumnTracker {
  function detailStruct (line 1416) | func detailStruct(data MsgData, terminalInfo TerminalInfo, maxMargin int...
  function estimateWidthInTerminal (line 1561) | func estimateWidthInTerminal(text string) int {
  function renderTabStops (line 1577) | func renderTabStops(withTabs string, spacesPerTab int) string {

FILE: lib/esbuild/logger/logger_darwin.go
  constant SupportsColorEscapes (line 12) | SupportsColorEscapes = true
  function GetTerminalInfo (line 14) | func GetTerminalInfo(file *os.File) (info TerminalInfo) {
  function writeStringWithColor (line 32) | func writeStringWithColor(file *os.File, text string) {

FILE: lib/esbuild/logger/logger_linux.go
  constant SupportsColorEscapes (line 12) | SupportsColorEscapes = true
  function GetTerminalInfo (line 14) | func GetTerminalInfo(file *os.File) (info TerminalInfo) {
  function writeStringWithColor (line 32) | func writeStringWithColor(file *os.File, text string) {

FILE: lib/esbuild/logger/logger_other.go
  constant SupportsColorEscapes (line 8) | SupportsColorEscapes = false
  function GetTerminalInfo (line 10) | func GetTerminalInfo(*os.File) TerminalInfo {
  function writeStringWithColor (line 14) | func writeStringWithColor(file *os.File, text string) {

FILE: lib/esbuild/logger/logger_windows.go
  constant SupportsColorEscapes (line 13) | SupportsColorEscapes = true
  type consoleScreenBufferInfo (line 20) | type consoleScreenBufferInfo struct
  function GetTerminalInfo (line 34) | func GetTerminalInfo(file *os.File) TerminalInfo {
  constant FOREGROUND_BLUE (line 54) | FOREGROUND_BLUE uint8 = 1 << iota
  constant FOREGROUND_GREEN (line 55) | FOREGROUND_GREEN
  constant FOREGROUND_RED (line 56) | FOREGROUND_RED
  constant FOREGROUND_INTENSITY (line 57) | FOREGROUND_INTENSITY
  constant BACKGROUND_BLUE (line 58) | BACKGROUND_BLUE
  constant BACKGROUND_GREEN (line 59) | BACKGROUND_GREEN
  constant BACKGROUND_RED (line 60) | BACKGROUND_RED
  constant BACKGROUND_INTENSITY (line 61) | BACKGROUND_INTENSITY
  function writeStringWithColor (line 95) | func writeStringWithColor(file *os.File, text string) {

FILE: lib/esbuild/sourcemap/sourcemap.go
  type Mapping (line 11) | type Mapping struct
  type SourceMap (line 20) | type SourceMap struct
    method Find (line 38) | func (sm *SourceMap) Find(line int32, column int32) *Mapping {
  type SourceContent (line 26) | type SourceContent struct
  function EncodeVLQ (line 82) | func EncodeVLQ(value int) []byte {
  function DecodeVLQ (line 117) | func DecodeVLQ(encoded []byte, start int) (int, int) {
  function DecodeVLQUTF16 (line 147) | func DecodeVLQUTF16(encoded []uint16) (int, int, bool) {
  type LineColumnOffset (line 185) | type LineColumnOffset struct
    method ComesBefore (line 190) | func (a LineColumnOffset) ComesBefore(b LineColumnOffset) bool {
    method Add (line 194) | func (a *LineColumnOffset) Add(b LineColumnOffset) {
    method AdvanceBytes (line 203) | func (offset *LineColumnOffset) AdvanceBytes(bytes []byte) {
    method AdvanceString (line 231) | func (offset *LineColumnOffset) AdvanceString(text string) {
  type SourceMapPieces (line 257) | type SourceMapPieces struct
    method HasContent (line 263) | func (pieces SourceMapPieces) HasContent() bool {
    method Finalize (line 272) | func (pieces SourceMapPieces) Finalize(shifts []SourceMapShift) []byte {
  type SourceMapShift (line 267) | type SourceMapShift struct
  type SourceMapState (line 371) | type SourceMapState struct
  function AppendSourceMapChunk (line 391) | func AppendSourceMapChunk(j *helpers.Joiner, prevEndState SourceMapState...
  function appendMappingToBuffer (line 432) | func appendMappingToBuffer(buffer []byte, lastByte byte, prevState Sourc...
  type LineOffsetTable (line 457) | type LineOffsetTable struct
  function GenerateLineOffsetTables (line 474) | func GenerateLineOffsetTables(contents string, approximateLineCount int3...
  type Chunk (line 552) | type Chunk struct
  type ChunkBuilder (line 567) | type ChunkBuilder struct
    method AddSourceMapping (line 610) | func (b *ChunkBuilder) AddSourceMapping(loc logger.Loc, output []byte) {
    method GenerateChunk (line 664) | func (b *ChunkBuilder) GenerateChunk(output []byte) Chunk {
    method updateGeneratedLineAndColumn (line 683) | func (b *ChunkBuilder) updateGeneratedLineAndColumn(output []byte) {
    method appendMapping (line 728) | func (b *ChunkBuilder) appendMapping(currentState SourceMapState) {
    method appendMappingWithoutRemapping (line 748) | func (b *ChunkBuilder) appendMappingWithoutRemapping(currentState Sour...
  function MakeChunkBuilder (line 589) | func MakeChunkBuilder(inputSourceMap *SourceMap, lineOffsetTables []Line...

FILE: lib/esbuild/test/diff.go
  function diff (line 10) | func diff(old string, new string, color bool) string {
  function diffRec (line 15) | func diffRec(result []string, old []string, new []string, color bool) []...
  function lcSubstr (line 51) | func lcSubstr(S []string, T []string) (int, int, int) {

FILE: lib/esbuild/test/util.go
  function AssertEqual (line 10) | func AssertEqual(t *testing.T, observed interface{}, expected interface{...
  function AssertEqualWithDiff (line 17) | func AssertEqualWithDiff(t *testing.T, observed interface{}, expected in...
  function SourceForTest (line 27) | func SourceForTest(contents string) logger.Source {

FILE: packages/compiler/src/browser/index.ts
  type Service (line 16) | interface Service {

FILE: packages/compiler/src/browser/utils.ts
  type Visitor (line 18) | type Visitor = (node: Node, parent?: ParentNode, index?: number) => void...
  function guard (line 20) | function guard<Type extends Node>(type: string) {
  method parent (line 25) | parent(node: Node): node is ParentNode {
  method literal (line 28) | literal(node: Node): node is LiteralNode {
  method tag (line 31) | tag(node: Node): node is TagLikeNode {
  method whitespace (line 39) | whitespace(node: Node): node is TextNode {
  class Walker (line 54) | class Walker {
    method constructor (line 55) | constructor(private callback: Visitor) {}
    method visit (line 56) | async visit(node: Node, parent?: ParentNode, index?: number): Promise<...
  function walk (line 69) | function walk(node: ParentNode, callback: Visitor): void {
  function walkAsync (line 74) | function walkAsync(node: ParentNode, callback: Visitor): Promise<void> {
  function serializeAttributes (line 79) | function serializeAttributes(node: TagLikeNode): string {
  type SerializeOptions (line 113) | interface SerializeOptions {
  type SerializeOtions (line 117) | type SerializeOtions = SerializeOptions;
  function serialize (line 119) | function serialize(root: Node, opts: SerializeOptions = { selfClose: tru...

FILE: packages/compiler/src/browser/wasm_exec.ts
  method writeSync (line 25) | writeSync(fd, buf) {
  method write (line 34) | write(fd, buf, offset, length, position, callback) {
  method chmod (line 42) | chmod(path, mode, callback) {
  method chown (line 45) | chown(path, uid, gid, callback) {
  method close (line 48) | close(fd, callback) {
  method fchmod (line 51) | fchmod(fd, mode, callback) {
  method fchown (line 54) | fchown(fd, uid, gid, callback) {
  method fstat (line 57) | fstat(fd, callback) {
  method fsync (line 60) | fsync(fd, callback) {
  method ftruncate (line 63) | ftruncate(fd, length, callback) {
  method lchown (line 66) | lchown(path, uid, gid, callback) {
  method link (line 69) | link(path, link, callback) {
  method lstat (line 72) | lstat(path, callback) {
  method mkdir (line 75) | mkdir(path, perm, callback) {
  method open (line 78) | open(path, flags, mode, callback) {
  method read (line 81) | read(fd, buffer, offset, length, position, callback) {
  method readdir (line 84) | readdir(path, callback) {
  method readlink (line 87) | readlink(path, callback) {
  method rename (line 90) | rename(from, to, callback) {
  method rmdir (line 93) | rmdir(path, callback) {
  method stat (line 96) | stat(path, callback) {
  method symlink (line 99) | symlink(path, link, callback) {
  method truncate (line 102) | truncate(path, length, callback) {
  method unlink (line 105) | unlink(path, callback) {
  method utimes (line 108) | utimes(path, atime, mtime, callback) {
  method getuid (line 113) | getuid() {
  method getgid (line 116) | getgid() {
  method geteuid (line 119) | geteuid() {
  method getegid (line 122) | getegid() {
  method getgroups (line 125) | getgroups() {
  method umask (line 130) | umask() {
  method cwd (line 133) | cwd() {
  method chdir (line 136) | chdir() {
  class Go (line 156) | class Go {
    method constructor (line 158) | constructor() {
    method run (line 523) | async run(instance) {
    method _resume (line 594) | private _resume() {
    method _makeFuncWrapper (line 604) | private _makeFuncWrapper(id) {

FILE: packages/compiler/src/node/index.ts
  type Service (line 33) | interface Service {

FILE: packages/compiler/src/node/sync.ts
  type UnwrappedPromise (line 6) | type UnwrappedPromise<T> = T extends (...params: any) => Promise<infer R...
  type Service (line 10) | interface Service {
  function getService (line 16) | function getService(): Service {
  function startRunningService (line 36) | function startRunningService(): Service {
  function instantiateWASM (line 75) | function instantiateWASM(wasmURL: string, importObject: Record<string, a...

FILE: packages/compiler/src/node/utils.ts
  type Visitor (line 18) | type Visitor = (node: Node, parent?: ParentNode, index?: number) => void...
  function guard (line 20) | function guard<Type extends Node>(type: string) {
  method parent (line 25) | parent(node: Node): node is ParentNode {
  method literal (line 28) | literal(node: Node): node is LiteralNode {
  method tag (line 31) | tag(node: Node): node is TagLikeNode {
  method whitespace (line 39) | whitespace(node: Node): node is TextNode {
  class Walker (line 54) | class Walker {
    method constructor (line 55) | constructor(private callback: Visitor) {}
    method visit (line 56) | async visit(node: Node, parent?: ParentNode, index?: number): Promise<...
  function walk (line 69) | function walk(node: ParentNode, callback: Visitor): void {
  function walkAsync (line 74) | function walkAsync(node: ParentNode, callback: Visitor): Promise<void> {
  function serializeAttributes (line 79) | function serializeAttributes(node: TagLikeNode): string {
  type SerializeOptions (line 113) | interface SerializeOptions {
  type SerializeOtions (line 117) | type SerializeOtions = SerializeOptions;
  function serialize (line 119) | function serialize(root: Node, opts: SerializeOptions = { selfClose: tru...

FILE: packages/compiler/src/node/wasm_exec.ts
  method getRandomValues (line 29) | getRandomValues(b) {
  method now (line 39) | now() {
  class Go (line 52) | class Go {
    method constructor (line 54) | constructor() {
    method run (line 419) | async run(instance) {
    method _resume (line 490) | private _resume() {
    method _makeFuncWrapper (line 500) | private _makeFuncWrapper(id) {

FILE: packages/compiler/src/shared/ast.ts
  type ParentNode (line 1) | type ParentNode =
  type LiteralNode (line 8) | type LiteralNode = TextNode | DoctypeNode | CommentNode | FrontmatterNode;
  type Node (line 10) | type Node =
  type Position (line 22) | interface Position {
  type Point (line 26) | interface Point {
  type BaseNode (line 34) | interface BaseNode {
  type ParentLikeNode (line 39) | interface ParentLikeNode extends BaseNode {
  type ValueNode (line 44) | interface ValueNode extends BaseNode {
  type RootNode (line 48) | interface RootNode extends ParentLikeNode {
  type AttributeNode (line 52) | interface AttributeNode extends BaseNode {
  type TextNode (line 60) | interface TextNode extends ValueNode {
  type ElementNode (line 64) | interface ElementNode extends ParentLikeNode {
  type FragmentNode (line 70) | interface FragmentNode extends ParentLikeNode {
  type ComponentNode (line 76) | interface ComponentNode extends ParentLikeNode {
  type CustomElementNode (line 82) | interface CustomElementNode extends ParentLikeNode {
  type TagLikeNode (line 88) | type TagLikeNode = ElementNode | FragmentNode | ComponentNode | CustomEl...
  type DoctypeNode (line 90) | interface DoctypeNode extends ValueNode {
  type CommentNode (line 94) | interface CommentNode extends ValueNode {
  type FrontmatterNode (line 98) | interface FrontmatterNode extends ValueNode {
  type ExpressionNode (line 102) | interface ExpressionNode extends ParentLikeNode {

FILE: packages/compiler/src/shared/diagnostics.ts
  type DiagnosticCode (line 1) | enum DiagnosticCode {

FILE: packages/compiler/src/shared/types.ts
  type PreprocessorResult (line 5) | interface PreprocessorResult {
  type PreprocessorError (line 10) | interface PreprocessorError {
  type ParseOptions (line 14) | interface ParseOptions {
  type DiagnosticSeverity (line 18) | enum DiagnosticSeverity {
  type DiagnosticMessage (line 25) | interface DiagnosticMessage {
  type DiagnosticLocation (line 33) | interface DiagnosticLocation {
  type TransformOptions (line 42) | interface TransformOptions {
  type ConvertToTSXOptions (line 64) | type ConvertToTSXOptions = Pick<
  type HoistedScript (line 78) | type HoistedScript = { type: string } & (
  type HydratedComponent (line 90) | interface HydratedComponent {
  type TransformResult (line 97) | interface TransformResult {
  type SourceMap (line 112) | interface SourceMap {
  type TSXLocation (line 125) | interface TSXLocation {
  type TSXExtractedTag (line 130) | interface TSXExtractedTag {
  type TSXExtractedScript (line 135) | interface TSXExtractedScript extends TSXExtractedTag {
  type TSXExtractedStyle (line 139) | interface TSXExtractedStyle extends TSXExtractedTag {
  type TSXResult (line 154) | interface TSXResult {
  type ParseResult (line 166) | interface ParseResult {
  type InitializeOptions (line 210) | interface InitializeOptions {

FILE: packages/compiler/test/bad-styles/sass.ts
  constant FIXTURE (line 5) | const FIXTURE = `
  method preprocessStyle (line 21) | async preprocessStyle() {

FILE: packages/compiler/test/basic/body-after-head-component.ts
  constant FIXTURE (line 5) | const FIXTURE = `---

FILE: packages/compiler/test/basic/body-expression.ts
  constant FIXTURE (line 5) | const FIXTURE = `

FILE: packages/compiler/test/basic/comment.ts
  constant FIXTURE (line 5) | const FIXTURE = `---

FILE: packages/compiler/test/basic/component-metadata/index.ts
  constant FIXTURE (line 5) | const FIXTURE = `

FILE: packages/compiler/test/basic/component-name.ts
  constant FIXTURE (line 5) | const FIXTURE = '<div>Hello world!</div>';

FILE: packages/compiler/test/basic/expression-then-node.ts
  constant FIXTURE (line 5) | const FIXTURE = `

FILE: packages/compiler/test/basic/fragment.ts
  constant FIXTURE (line 5) | const FIXTURE = `

FILE: packages/compiler/test/basic/head-injection.ts
  constant FIXTURE (line 5) | const FIXTURE = '<html><head><title>Ah</title></head></html>';

FILE: packages/compiler/test/basic/lt-gt-text.ts
  constant FIXTURE (line 5) | const FIXTURE = `---

FILE: packages/compiler/test/basic/null-chars.ts
  constant FIXTURE (line 5) | const FIXTURE = `

FILE: packages/compiler/test/basic/props-interface.ts
  constant FIXTURE (line 5) | const FIXTURE = `---

FILE: packages/compiler/test/basic/script-before-html.ts
  constant FIXTURE (line 5) | const FIXTURE = `

FILE: packages/compiler/test/basic/script-fragment.ts
  constant FIXTURE (line 5) | const FIXTURE = `<script src={Astro.resolve("../scripts/no_hoist_nonmodu...

FILE: packages/compiler/test/basic/top-level-expressions.ts
  constant FIXTURE (line 5) | const FIXTURE = `

FILE: packages/compiler/test/basic/trailing-newline.ts
  constant FIXTURE (line 5) | const FIXTURE = `{

FILE: packages/compiler/test/basic/trailing-space.ts
  constant FIXTURE (line 5) | const FIXTURE = `---

FILE: packages/compiler/test/basic/trailing-spaces-ii.ts
  constant FIXTURE (line 5) | const FIXTURE = `---

FILE: packages/compiler/test/client-directive/special-characters.ts
  constant FIXTURE (line 5) | const FIXTURE = `

FILE: packages/compiler/test/client-directive/warn.ts
  constant FIXTURE (line 5) | const FIXTURE = `

FILE: packages/compiler/test/compact/minify.ts
  function minify (line 5) | async function minify(input: string) {

FILE: packages/compiler/test/css-order/astro-styles.ts
  constant FIXTURE (line 5) | const FIXTURE = `

FILE: packages/compiler/test/css-order/imported-styles.ts
  constant FIXTURE (line 5) | const FIXTURE = `

FILE: packages/compiler/test/errors/client-only-unfound.ts
  constant FIXTURE (line 5) | const FIXTURE = `---

FILE: packages/compiler/test/errors/fragment-shorthand.ts
  constant FIXTURE (line 5) | const FIXTURE = `<html>

FILE: packages/compiler/test/errors/html-comment.ts
  constant FIXTURE (line 5) | const FIXTURE = `<html>

FILE: packages/compiler/test/errors/jsx-comment.ts
  constant FIXTURE (line 5) | const FIXTURE = `<html>

FILE: packages/compiler/test/errors/missing-frontmatter-fence.ts
  constant FIXTURE (line 6) | const FIXTURE = `import BaseLayout from '@/layouts/BaseLayout.astro';

FILE: packages/compiler/test/head-metadata/with-head.ts
  constant FIXTURE (line 5) | const FIXTURE = `

FILE: packages/compiler/test/head-metadata/without-head.ts
  constant FIXTURE (line 5) | const FIXTURE = `

FILE: packages/compiler/test/parse/ast.ts
  constant FIXTURE (line 6) | const FIXTURE = `

FILE: packages/compiler/test/parse/client-component-unfound.ts
  constant FIXTURE (line 5) | const FIXTURE = `{

FILE: packages/compiler/test/parse/escaping.ts
  constant STYLE (line 5) | const STYLE = 'div { & span { color: red; }}';
  constant FIXTURE (line 6) | const FIXTURE = `<style>${STYLE}</style>`;

FILE: packages/compiler/test/parse/fragment.ts
  constant FIXTURE (line 6) | const FIXTURE = '<>Hello</><Fragment>World</Fragment>';

FILE: packages/compiler/test/parse/multibyte-characters.ts
  constant FIXTURE (line 5) | const FIXTURE = '{foo},';

FILE: packages/compiler/test/parse/orphan-head.ts
  constant FIXTURE (line 5) | const FIXTURE = `

FILE: packages/compiler/test/parse/orphan-slot.ts
  constant FIXTURE (line 5) | const FIXTURE = `

FILE: packages/compiler/test/parse/serialize.ts
  constant FIXTURE (line 6) | const FIXTURE = `---

FILE: packages/compiler/test/resolve-path/preserve.ts
  constant FIXTURE (line 5) | const FIXTURE = `

FILE: packages/compiler/test/scope/same-source.ts
  constant FIXTURE (line 5) | const FIXTURE = `
  function grabAstroScope (line 20) | function grabAstroScope(code: string) {

FILE: packages/compiler/test/server-islands/meta.ts
  constant FIXTURE (line 6) | const FIXTURE = `

FILE: packages/compiler/test/slot-result/result.ts
  constant FIXTURE (line 5) | const FIXTURE = `

FILE: packages/compiler/test/static-extraction/css.ts
  constant FIXTURE (line 5) | const FIXTURE = `

FILE: packages/compiler/test/static-extraction/hoist-expression.ts
  constant FIXTURE (line 5) | const FIXTURE = `

FILE: packages/compiler/test/stress/index.ts
  function run (line 3) | async function run() {
  constant MAX_CONCURRENT_RENDERS (line 197) | const MAX_CONCURRENT_RENDERS = 25;
  constant MAX_RENDERS (line 198) | const MAX_RENDERS = 1e4;
  function test (line 200) | async function test() {

FILE: packages/compiler/test/styles/emit-scope.ts
  constant FIXTURE (line 5) | const FIXTURE = `

FILE: packages/compiler/test/styles/empty-style.ts
  constant FIXTURE (line 6) | const FIXTURE = `

FILE: packages/compiler/test/styles/hash.ts
  constant FIXTURE_A (line 5) | const FIXTURE_A = `
  constant FIXTURE_B (line 12) | const FIXTURE_B = `
  constant FIXTURE_C (line 19) | const FIXTURE_C = `
  constant FIXTURE_D (line 26) | const FIXTURE_D = `

FILE: packages/compiler/test/styles/sass.ts
  constant FIXTURE (line 6) | const FIXTURE = `

FILE: packages/compiler/test/teardown/parse.ts
  constant FIXTURE (line 5) | const FIXTURE = '<div>hello</div>';

FILE: packages/compiler/test/transition/data-astro.ts
  constant FIXTURE (line 5) | const FIXTURE = `

FILE: packages/compiler/test/transition/meta.ts
  constant FIXTURE (line 5) | const FIXTURE = `

FILE: packages/compiler/test/tsx-errors/eof.ts
  constant FIXTURE (line 6) | const FIXTURE = `<html>

FILE: packages/compiler/test/tsx-errors/fragment-shorthand.ts
  constant FIXTURE (line 6) | const FIXTURE = `<html>

FILE: packages/compiler/test/tsx-errors/unfinished-component.ts
  constant FIXTURE (line 6) | const FIXTURE = '<div class={';

FILE: packages/compiler/test/tsx/props-and-getStaticPaths.ts
  function getPrefix (line 6) | function getPrefix({
  function getSuffix (line 23) | function getSuffix() {

FILE: packages/compiler/test/utils.ts
  function preprocessStyle (line 5) | async function preprocessStyle(value: any, attrs: any): Promise<any> {
  function transformSass (line 15) | function transformSass(value: string) {
  function getPositionFor (line 28) | function getPositionFor(input: string, snippet: string) {
  function testTSXSourcemap (line 46) | async function testTSXSourcemap(input: string, snippet: string) {
  function testJSSourcemap (line 70) | async function testJSSourcemap(input: string, snippet: string) {
Condensed preview — 584 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,150K chars).
[
  {
    "path": ".changeset/README.md",
    "chars": 510,
    "preview": "# Changesets\n\nHello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that wo"
  },
  {
    "path": ".changeset/config.json",
    "chars": 256,
    "preview": "{\n  \"$schema\": \"https://unpkg.com/@changesets/config@1.6.1/schema.json\",\n  \"changelog\": \"@changesets/cli/changelog\",\n  \""
  },
  {
    "path": ".devcontainer/Dockerfile",
    "chars": 1081,
    "preview": "# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.195.0/containers/go/.devcontai"
  },
  {
    "path": ".devcontainer/devcontainer.json",
    "chars": 953,
    "preview": "// For format details, see https://aka.ms/vscode-remote/devcontainer.json or this file's README at:\n// https://github.co"
  },
  {
    "path": ".editorconfig",
    "chars": 87,
    "preview": "root = true\n\n[*.go]\nindent_style = tab\nindent_size = 2\ntrim_trailing_whitespace = true\n"
  },
  {
    "path": ".git-blame-ignore-revs",
    "chars": 76,
    "preview": "# chore: format everything (#1020)\n402060270f50fe273d5e7387241d7eb36f99ca11\n"
  },
  {
    "path": ".gitattributes",
    "chars": 115,
    "preview": "# Files with the language manually specified, sorted alphabetically.\n/internal/**/*.snap linguist-language=Markdown"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/---01-bug-report.yml",
    "chars": 1406,
    "preview": "name: \"\\U0001F41B Bug Report\"\ndescription: Report an issue or possible bug\ntitle: \"\\U0001F41B BUG:\"\nlabels: []\nassignees"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "chars": 475,
    "preview": "blank_issues_enabled: false\ncontact_links:\n  - name: 🏡 Main Astro Repo\n    url: https://github.com/withastro/astro\n    a"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 395,
    "preview": "## Changes\n\n- What does this change?\n- Be short and concise. Bullet points can help!\n- Before/after screenshots can be h"
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 2337,
    "preview": "name: Test\n\non:\n  workflow_dispatch:\n  push:\n    branches: ['main', 'next']\n  pull_request:\n    branches: ['main', 'next"
  },
  {
    "path": ".github/workflows/congrats.yml",
    "chars": 342,
    "preview": "name: Congratsbot\n\non:\n  push:\n    branches: [main]\n\njobs:\n  congrats:\n    if: ${{ github.repository_owner == 'withastro"
  },
  {
    "path": ".github/workflows/issue-labeled.yml",
    "chars": 200,
    "preview": "name: Issue Labeled\n\non:\n  issues:\n    types: [labeled]\n\njobs:\n  reply_labelled:\n    if: github.repository_owner == 'wit"
  },
  {
    "path": ".github/workflows/issue-needs-repro.yml",
    "chars": 453,
    "preview": "name: Close Issues (needs repro)\n\non:\n  schedule:\n    - cron: \"0 0 * * *\"\n\njobs:\n  close-issues:\n    if: github.reposito"
  },
  {
    "path": ".github/workflows/issue-opened.yml",
    "chars": 217,
    "preview": "name: Label issues\non:\n  issues:\n    types:\n      - reopened\n      - opened\n\njobs:\n  label_issues:\n    if: github.reposi"
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 5857,
    "preview": "name: Release\npermissions: {}\n\non:\n  # We trigger the release job when a commit is pushed to these branches\n  push:\n    "
  },
  {
    "path": ".gitignore",
    "chars": 104,
    "preview": ".DS_Store\n.pnpm-store\nnode_modules\n*.wasm\n/astro\ndebug.test\n__debug_bin\npackages/compiler/sourcemap.mjs\n"
  },
  {
    "path": ".gitpod.yml",
    "chars": 359,
    "preview": "# This configuration file was automatically generated by Gitpod.\n# Please adjust to your needs (see https://www.gitpod.i"
  },
  {
    "path": ".golangci.yml",
    "chars": 254,
    "preview": "issues:\n  exclude-dirs:\n    - lib\n  exclude-files:\n    - xxhash.go\n  exclude-rules:\n    - path: token.go\n      linters:\n"
  },
  {
    "path": ".prettierignore",
    "chars": 23,
    "preview": "**/dist\npnpm-lock.yaml\n"
  },
  {
    "path": ".vscode/settings.json",
    "chars": 112,
    "preview": "{\n  \"go.toolsEnvVars\": {\n    \"GOOS\": \"js\",\n    \"GOARCH\": \"wasm\"\n  },\n  \"editor.unusualLineTerminators\": \"off\"\n}\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 3966,
    "preview": "# Contributing\n\nContributions are welcome to the Go compiler!\n\n## Setup\n\n### Go\n\n[Go][go] `1.20+` is needed to work with"
  },
  {
    "path": "LICENSE",
    "chars": 2770,
    "preview": "MIT License\n\nCopyright (c) 2021 [Astro contributors](https://github.com/withastro/compiler/graphs/contributors)\n\nPermiss"
  },
  {
    "path": "Makefile",
    "chars": 380,
    "preview": "GO_FLAGS += \"-ldflags=-s -w\"\n\n# Avoid embedding the build path in the executable for more reproducible builds\nGO_FLAGS +"
  },
  {
    "path": "SYNTAX_SPEC.md",
    "chars": 9445,
    "preview": "# The `.astro` File Format - Syntax Specification\n\n**Version:** 1.0\n**Status:** Draft\n**Date:** 2026-02-03\n\n---\n\n## Tabl"
  },
  {
    "path": "biome.json",
    "chars": 1389,
    "preview": "{\n  \"$schema\": \"https://biomejs.dev/schemas/1.8.1/schema.json\",\n  \"files\": {\n    \"ignore\": [\"**/dist/**\", \"**/pnpm-lock."
  },
  {
    "path": "cmd/astro-wasm/astro-wasm.go",
    "chars": 17253,
    "preview": "//go:build js && wasm\n\npackage main\n\nimport (\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"strings\"\n\t\"sync\"\n\t\"syscall/js"
  },
  {
    "path": "go.mod",
    "chars": 886,
    "preview": "module github.com/withastro/compiler\n\ngo 1.21\n\nrequire (\n\tgithub.com/gkampitakis/go-snaps v0.5.2\n\tgithub.com/google/go-c"
  },
  {
    "path": "go.sum",
    "chars": 3837,
    "preview": "github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=\ngithub.com/gkampitakis/ciinfo v0.3.0"
  },
  {
    "path": "internal/const.go",
    "chars": 3126,
    "preview": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license "
  },
  {
    "path": "internal/doc.go",
    "chars": 253,
    "preview": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license "
  },
  {
    "path": "internal/doctype.go",
    "chars": 4926,
    "preview": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license "
  },
  {
    "path": "internal/entity.go",
    "chars": 114595,
    "preview": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license "
  },
  {
    "path": "internal/escape.go",
    "chars": 5940,
    "preview": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license "
  },
  {
    "path": "internal/foreign.go",
    "chars": 6363,
    "preview": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license "
  },
  {
    "path": "internal/handler/handler.go",
    "chars": 2729,
    "preview": "package handler\n\nimport (\n\t\"errors\"\n\t\"strings\"\n\n\t\"github.com/withastro/compiler/internal/loc\"\n\t\"github.com/withastro/com"
  },
  {
    "path": "internal/hash.go",
    "chars": 296,
    "preview": "package astro\n\nimport (\n\t\"encoding/base32\"\n\t\"strings\"\n\n\t\"github.com/withastro/compiler/internal/xxhash\"\n)\n\nfunc HashStri"
  },
  {
    "path": "internal/helpers/joiner.go",
    "chars": 1802,
    "preview": "package helpers\n\nimport (\n\t\"bytes\"\n\t\"strings\"\n)\n\n// This provides an efficient way to join lots of big string and byte s"
  },
  {
    "path": "internal/helpers/js_comment_utils.go",
    "chars": 893,
    "preview": "package helpers\n\nimport (\n\t\"strings\"\n)\n\nfunc peekIs(input string, cur int, assert byte) bool {\n\treturn cur+1 < len(input"
  },
  {
    "path": "internal/js_scanner/js_scanner.go",
    "chars": 25925,
    "preview": "package js_scanner\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n\n\t\"github.com/iancoleman/strcase\"\n\t\"github.com/tdewolff/pa"
  },
  {
    "path": "internal/js_scanner/js_scanner_test.go",
    "chars": 24851,
    "preview": "package js_scanner\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"strings\"\n\t\"testing\"\n\t\"unicode/utf8\"\n\n\t\"github.com/withas"
  },
  {
    "path": "internal/js_scanner/testdata/fuzz/FuzzHoistImport/ec55358ab2929fbf4deab52587664e42682f0a6ea201a325c5c33f9d18c50456",
    "chars": 49,
    "preview": "go test fuzz v1\nstring(\"import\\\"\\nimport \\\"\\\";\")\n"
  },
  {
    "path": "internal/loc/diagnostics.go",
    "chars": 1188,
    "preview": "package loc\n\ntype DiagnosticCode int\n\nconst (\n\tERROR                             DiagnosticCode = 1000\n\tERROR_UNTERMINAT"
  },
  {
    "path": "internal/loc/loc.go",
    "chars": 1440,
    "preview": "package loc\n\ntype Loc struct {\n\t// This is the 0-based index of this location from the start of the file, in bytes\n\tStar"
  },
  {
    "path": "internal/node.go",
    "chars": 7775,
    "preview": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license "
  },
  {
    "path": "internal/parser.go",
    "chars": 78193,
    "preview": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license "
  },
  {
    "path": "internal/parser_test.go",
    "chars": 2442,
    "preview": "package astro\n\nimport (\n\t\"reflect\"\n\t\"strings\"\n\t\"testing\"\n\n\t\"github.com/withastro/compiler/internal/loc\"\n\t\"github.com/wit"
  },
  {
    "path": "internal/print-to-source.go",
    "chars": 2003,
    "preview": "package astro\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n)\n\nfunc PrintToSource(buf *strings.Builder, node *Node) {\n\tswitch node.Type {\n"
  },
  {
    "path": "internal/printer/__printer_css__/scopedStyleStrategy___attribute_.snap",
    "chars": 473,
    "preview": "\n[TestPrinterCSS/scopedStyleStrategy:_'attribute' - 1]\n## Input\n\n```\n<style>\n          .title {\n            font-family:"
  },
  {
    "path": "internal/printer/__printer_css__/scopedStyleStrategy___class_.snap",
    "chars": 449,
    "preview": "\n[TestPrinterCSS/scopedStyleStrategy:_'class' - 1]\n## Input\n\n```\n<style>\n          .title {\n            font-family: fan"
  },
  {
    "path": "internal/printer/__printer_css__/styles__no_frontmatter_.snap",
    "chars": 460,
    "preview": "\n[TestPrinterCSS/styles_(no_frontmatter) - 1]\n## Input\n\n```\n<style>\n          .title {\n            font-family: fantasy;"
  },
  {
    "path": "internal/printer/__printer_js__/All_components.snap",
    "chars": 1730,
    "preview": "\n[TestPrinter/All_components - 1]\n## Input\n\n```\n/-/-/-/\nimport { Container, Col, Row } from 'react-bootstrap';\n/-/-/-/\n<"
  },
  {
    "path": "internal/printer/__printer_js__/Component_is_raw.snap",
    "chars": 1225,
    "preview": "\n[TestPrinter/Component_is:raw - 1]\n## Input\n\n```\n<Component is:raw>{<% awesome %>}</Component>\n```\n\n## Output\n\n```js\nim"
  },
  {
    "path": "internal/printer/__printer_js__/Component_names_A-Z.snap",
    "chars": 1804,
    "preview": "\n[TestPrinter/Component_names_A-Z - 1]\n## Input\n\n```\n/-/-/-/\nimport AComponent from '../components/AComponent.jsx';\nimpo"
  },
  {
    "path": "internal/printer/__printer_js__/Component_siblings_are_siblings.snap",
    "chars": 1204,
    "preview": "\n[TestPrinter/Component_siblings_are_siblings - 1]\n## Input\n\n```\n<BaseHead></BaseHead><link href=\"test\">\n```\n\n## Output\n"
  },
  {
    "path": "internal/printer/__printer_js__/Component_with_await.snap",
    "chars": 1335,
    "preview": "\n[TestPrinter/Component_with_await - 1]\n## Input\n\n```\n<body><Component> { await Promise.resolve(\"Awaited\") } </Component"
  },
  {
    "path": "internal/printer/__printer_js__/Empty_attribute_expression.snap",
    "chars": 1188,
    "preview": "\n[TestPrinter/Empty_attribute_expression - 1]\n## Input\n\n```\n<body attr={}></body>\n```\n\n## Output\n\n```js\nimport {\n  Fragm"
  },
  {
    "path": "internal/printer/__printer_js__/Empty_expression.snap",
    "chars": 1152,
    "preview": "\n[TestPrinter/Empty_expression - 1]\n## Input\n\n```\n<body>({})</body>\n```\n\n## Output\n\n```js\nimport {\n  Fragment,\n  render "
  },
  {
    "path": "internal/printer/__printer_js__/Empty_expression_with_whitespace.snap",
    "chars": 1174,
    "preview": "\n[TestPrinter/Empty_expression_with_whitespace - 1]\n## Input\n\n```\n<body>({   })</body>\n```\n\n## Output\n\n```js\nimport {\n  "
  },
  {
    "path": "internal/printer/__printer_js__/Empty_script.snap",
    "chars": 1162,
    "preview": "\n[TestPrinter/Empty_script - 1]\n## Input\n\n```\n<script hoist></script>\n```\n\n## Output\n\n```js\nimport {\n  Fragment,\n  rende"
  },
  {
    "path": "internal/printer/__printer_js__/Empty_style.snap",
    "chars": 1193,
    "preview": "\n[TestPrinter/Empty_style - 1]\n## Input\n\n```\n<style define:vars={{ color: \"Gainsboro\" }}></style>\n```\n\n## Output\n\n```js\n"
  },
  {
    "path": "internal/printer/__printer_js__/Expression_in_form_followed_by_other_sibling_forms.snap",
    "chars": 1919,
    "preview": "\n[TestPrinter/Expression_in_form_followed_by_other_sibling_forms - 1]\n## Input\n\n```\n<form><p>No expression here. So the "
  },
  {
    "path": "internal/printer/__printer_js__/Fragment.snap",
    "chars": 1300,
    "preview": "\n[TestPrinter/Fragment - 1]\n## Input\n\n```\n<body><Fragment><div>Default</div><div>Named</div></Fragment></body>\n```\n\n## O"
  },
  {
    "path": "internal/printer/__printer_js__/Fragment_literal_only.snap",
    "chars": 1199,
    "preview": "\n[TestPrinter/Fragment_literal_only - 1]\n## Input\n\n```\n<Fragment>world</Fragment>\n```\n\n## Output\n\n```js\nimport {\n  Fragm"
  },
  {
    "path": "internal/printer/__printer_js__/Fragment_shorthand.snap",
    "chars": 1294,
    "preview": "\n[TestPrinter/Fragment_shorthand - 1]\n## Input\n\n```\n<body><><div>Default</div><div>Named</div></></body>\n```\n\n## Output\n"
  },
  {
    "path": "internal/printer/__printer_js__/Fragment_shorthand_only.snap",
    "chars": 1185,
    "preview": "\n[TestPrinter/Fragment_shorthand_only - 1]\n## Input\n\n```\n<>Hello</>\n```\n\n## Output\n\n```js\nimport {\n  Fragment,\n  render "
  },
  {
    "path": "internal/printer/__printer_js__/Fragment_shorthand_with_await.snap",
    "chars": 1324,
    "preview": "\n[TestPrinter/Fragment_shorthand_with_await - 1]\n## Input\n\n```\n<body><> { await Promise.resolve(\"Awaited\") } </></body>\n"
  },
  {
    "path": "internal/printer/__printer_js__/Fragment_slotted.snap",
    "chars": 1401,
    "preview": "\n[TestPrinter/Fragment_slotted - 1]\n## Input\n\n```\n<body><Component><><div>Default</div><div>Named</div></></Component></"
  },
  {
    "path": "internal/printer/__printer_js__/Fragment_slotted_with_name.snap",
    "chars": 1450,
    "preview": "\n[TestPrinter/Fragment_slotted_with_name - 1]\n## Input\n\n```\n<body><Component><Fragment slot=named><div>Default</div><div"
  },
  {
    "path": "internal/printer/__printer_js__/Fragment_with_await.snap",
    "chars": 1330,
    "preview": "\n[TestPrinter/Fragment_with_await - 1]\n## Input\n\n```\n<body><Fragment> { await Promise.resolve(\"Awaited\") } </Fragment></"
  },
  {
    "path": "internal/printer/__printer_js__/Fragment_wrapping_link_with_awaited_href.snap",
    "chars": 1492,
    "preview": "\n[TestPrinter/Fragment_wrapping_link_with_awaited_href - 1]\n## Input\n\n```\n<head><Fragment><link rel=\"preload\" href={(awa"
  },
  {
    "path": "internal/printer/__printer_js__/HTML_comment_in_component_inside_expression_I.snap",
    "chars": 1229,
    "preview": "\n[TestPrinter/HTML_comment_in_component_inside_expression_I - 1]\n## Input\n\n```\n{(() => <Component><!--Hi--></Component>)"
  },
  {
    "path": "internal/printer/__printer_js__/HTML_comment_in_component_inside_expression_II.snap",
    "chars": 1246,
    "preview": "\n[TestPrinter/HTML_comment_in_component_inside_expression_II - 1]\n## Input\n\n```\n{list.map(() => <Component><!--Hi--></Co"
  },
  {
    "path": "internal/printer/__printer_js__/Mixed_style_siblings.snap",
    "chars": 1318,
    "preview": "\n[TestPrinter/Mixed_style_siblings - 1]\n## Input\n\n```\n<head>\n    <style is:global>div { color: red }</style>\n    <style "
  },
  {
    "path": "internal/printer/__printer_js__/Nested_HTML_in_expressions,_wrapped_in_parens.snap",
    "chars": 1477,
    "preview": "\n[TestPrinter/Nested_HTML_in_expressions,_wrapped_in_parens - 1]\n## Input\n\n```\n/-/-/-/\nconst image = './penguin.png';\nco"
  },
  {
    "path": "internal/printer/__printer_js__/No_extra_script_tag.snap",
    "chars": 4019,
    "preview": "\n[TestPrinter/No_extra_script_tag - 1]\n## Input\n\n```\n<!-- Global Metadata -->\n<meta charset=\"utf-8\">\n<meta name=\"viewpor"
  },
  {
    "path": "internal/printer/__printer_js__/Parser_can_handle_files___4096_chars.snap",
    "chars": 9124,
    "preview": "\n[TestPrinter/Parser_can_handle_files_>_4096_chars - 1]\n## Input\n\n```\n<html><body>abcdefghijklmnopqrstuvwxyzABCDEFGHIJKL"
  },
  {
    "path": "internal/printer/__printer_js__/Preserve_namespaces.snap",
    "chars": 1343,
    "preview": "\n[TestPrinter/Preserve_namespaces - 1]\n## Input\n\n```\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3."
  },
  {
    "path": "internal/printer/__printer_js__/Preserve_namespaces_for_components.snap",
    "chars": 1204,
    "preview": "\n[TestPrinter/Preserve_namespaces_for_components - 1]\n## Input\n\n```\n<Component some:thing=\"foobar\">\n```\n\n## Output\n\n```j"
  },
  {
    "path": "internal/printer/__printer_js__/Preserve_namespaces_in_expressions.snap",
    "chars": 1396,
    "preview": "\n[TestPrinter/Preserve_namespaces_in_expressions - 1]\n## Input\n\n```\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink="
  },
  {
    "path": "internal/printer/__printer_js__/Preserve_slot_attribute_at_root_level_in_expression.snap",
    "chars": 1404,
    "preview": "\n[TestPrinter/Preserve_slot_attribute_at_root_level_in_expression - 1]\n## Input\n\n```\n{!href ? <button slot={slotName}>Bu"
  },
  {
    "path": "internal/printer/__printer_js__/Preserve_slot_attribute_in_conditional_expression_for_custom_element.snap",
    "chars": 1399,
    "preview": "\n[TestPrinter/Preserve_slot_attribute_in_conditional_expression_for_custom_element - 1]\n## Input\n\n```\n<body><my-element>"
  },
  {
    "path": "internal/printer/__printer_js__/Preserve_slot_attribute_in_expression_for_custom_element.snap",
    "chars": 1550,
    "preview": "\n[TestPrinter/Preserve_slot_attribute_in_expression_for_custom_element - 1]\n## Input\n\n```\n<body><my-element>{!href ? <bu"
  },
  {
    "path": "internal/printer/__printer_js__/Preserve_slot_whitespace.snap",
    "chars": 1312,
    "preview": "\n[TestPrinter/Preserve_slot_whitespace - 1]\n## Input\n\n```\n<Component>\n  <p>Paragraph 1</p>\n  <p>Paragraph 2</p>\n</Compon"
  },
  {
    "path": "internal/printer/__printer_js__/Preserve_slots_inside_custom-element.snap",
    "chars": 1358,
    "preview": "\n[TestPrinter/Preserve_slots_inside_custom-element - 1]\n## Input\n\n```\n<body><my-element><div slot=name>Name</div><div>De"
  },
  {
    "path": "internal/printer/__printer_js__/React_framework_example.snap",
    "chars": 3229,
    "preview": "\n[TestPrinter/React_framework_example - 1]\n## Input\n\n```\n/-/-/-/\n// Component Imports\nimport Counter from '../components"
  },
  {
    "path": "internal/printer/__printer_js__/SVG_styles.snap",
    "chars": 1193,
    "preview": "\n[TestPrinter/SVG_styles - 1]\n## Input\n\n```\n<svg><style>path { fill: red; }</style></svg>\n```\n\n## Output\n\n```js\nimport {"
  },
  {
    "path": "internal/printer/__printer_js__/Self-closing_components_in_head_can_have_siblings.snap",
    "chars": 1289,
    "preview": "\n[TestPrinter/Self-closing_components_in_head_can_have_siblings - 1]\n## Input\n\n```\n<html><head><BaseHead /><link href=\"t"
  },
  {
    "path": "internal/printer/__printer_js__/Self-closing_components_siblings_are_siblings.snap",
    "chars": 1209,
    "preview": "\n[TestPrinter/Self-closing_components_siblings_are_siblings - 1]\n## Input\n\n```\n<BaseHead /><link href=\"test\">\n```\n\n## Ou"
  },
  {
    "path": "internal/printer/__printer_js__/Self-closing_formatting_elements.snap",
    "chars": 1266,
    "preview": "\n[TestPrinter/Self-closing_formatting_elements - 1]\n## Input\n\n```\n<div id=\"1\"><div id=\"2\"><div id=\"3\"><i/><i/><i/></div>"
  },
  {
    "path": "internal/printer/__printer_js__/Self-closing_formatting_elements_2.snap",
    "chars": 1575,
    "preview": "\n[TestPrinter/Self-closing_formatting_elements_2 - 1]\n## Input\n\n```\n<body>\n  <div id=\"1\"><div id=\"2\"><div id=\"3\"><i id=\""
  },
  {
    "path": "internal/printer/__printer_js__/Self-closing_script_in_head_works.snap",
    "chars": 1209,
    "preview": "\n[TestPrinter/Self-closing_script_in_head_works - 1]\n## Input\n\n```\n<html><head><script is:inline /></head><html>\n```\n\n##"
  },
  {
    "path": "internal/printer/__printer_js__/Self-closing_title.snap",
    "chars": 1105,
    "preview": "\n[TestPrinter/Self-closing_title - 1]\n## Input\n\n```\n<title />\n```\n\n## Output\n\n```js\nimport {\n  Fragment,\n  render as $$r"
  },
  {
    "path": "internal/printer/__printer_js__/Self-closing_title_II.snap",
    "chars": 1211,
    "preview": "\n[TestPrinter/Self-closing_title_II - 1]\n## Input\n\n```\n<html><head><title /></head><body></body></html>\n```\n\n## Output\n\n"
  },
  {
    "path": "internal/printer/__printer_js__/Use_of_interfaces_within_frontmatter.snap",
    "chars": 1663,
    "preview": "\n[TestPrinter/Use_of_interfaces_within_frontmatter - 1]\n## Input\n\n```\n/-/-/-/\ninterface MarkdownFrontmatter {\n    date: "
  },
  {
    "path": "internal/printer/__printer_js__/XElement.snap",
    "chars": 1291,
    "preview": "\n[TestPrinter/XElement - 1]\n## Input\n\n```\n<XElement {...attrs}></XElement>{onLoadString ? <script data-something></scrip"
  },
  {
    "path": "internal/printer/__printer_js__/_955_ternary_slot_with_elements.snap",
    "chars": 1352,
    "preview": "\n[TestPrinter/#955_ternary_slot_with_elements - 1]\n## Input\n\n```\n<Component><div>{isLeaf ? <p>Leaf</p> : <p>Branch</p>}<"
  },
  {
    "path": "internal/printer/__printer_js__/_955_ternary_slot_with_text.snap",
    "chars": 1346,
    "preview": "\n[TestPrinter/#955_ternary_slot_with_text - 1]\n## Input\n\n```\n<Component>Hello{isLeaf ? <p>Leaf</p> : <p>Branch</p>}world"
  },
  {
    "path": "internal/printer/__printer_js__/advanced_svg_expression.snap",
    "chars": 1289,
    "preview": "\n[TestPrinter/advanced_svg_expression - 1]\n## Input\n\n```\n/-/-/-/\nconst title = 'icon';\n/-/-/-/\n<svg>{title ? <title>{tit"
  },
  {
    "path": "internal/printer/__printer_js__/anchor_content.snap",
    "chars": 1210,
    "preview": "\n[TestPrinter/anchor_content - 1]\n## Input\n\n```\n<a><div><h3></h3><ul><li>{expr}</li></ul></div></a>\n```\n\n## Output\n\n```j"
  },
  {
    "path": "internal/printer/__printer_js__/anchor_expressions.snap",
    "chars": 1138,
    "preview": "\n[TestPrinter/anchor_expressions - 1]\n## Input\n\n```\n<a>{expr}</a>\n```\n\n## Output\n\n```js\nimport {\n  Fragment,\n  render as"
  },
  {
    "path": "internal/printer/__printer_js__/anchor_inside_expression.snap",
    "chars": 1170,
    "preview": "\n[TestPrinter/anchor_inside_expression - 1]\n## Input\n\n```\n{true && <a>expr</a>}\n```\n\n## Output\n\n```js\nimport {\n  Fragmen"
  },
  {
    "path": "internal/printer/__printer_js__/attribute_with_template_literal.snap",
    "chars": 1180,
    "preview": "\n[TestPrinter/attribute_with_template_literal - 1]\n## Input\n\n```\n<a :href=\"`/home`\">Home</a>\n```\n\n## Output\n\n```js\nimpor"
  },
  {
    "path": "internal/printer/__printer_js__/attribute_with_template_literal_interpolation.snap",
    "chars": 1199,
    "preview": "\n[TestPrinter/attribute_with_template_literal_interpolation - 1]\n## Input\n\n```\n<a :href=\"`/${url}`\">Home</a>\n```\n\n## Out"
  },
  {
    "path": "internal/printer/__printer_js__/backtick_in_HTML_comment.snap",
    "chars": 1201,
    "preview": "\n[TestPrinter/backtick_in_HTML_comment - 1]\n## Input\n\n```\n<body><!-- `npm install astro` --></body>\n```\n\n## Output\n\n```j"
  },
  {
    "path": "internal/printer/__printer_js__/basic__frontmatter_.snap",
    "chars": 1242,
    "preview": "\n[TestPrinter/basic_(frontmatter) - 1]\n## Input\n\n```\n/-/-/-/\nconst href = '/about';\n/-/-/-/\n<a href={href}>About</a>\n```"
  },
  {
    "path": "internal/printer/__printer_js__/basic__no_frontmatter_.snap",
    "chars": 1159,
    "preview": "\n[TestPrinter/basic_(no_frontmatter) - 1]\n## Input\n\n```\n<button>Click</button>\n```\n\n## Output\n\n```js\nimport {\n  Fragment"
  },
  {
    "path": "internal/printer/__printer_js__/basic_renderHead.snap",
    "chars": 1190,
    "preview": "\n[TestPrinter/basic_renderHead - 1]\n## Input\n\n```\n<html><head><title>Ah</title></head></html>\n```\n\n## Output\n\n```js\nimpo"
  },
  {
    "path": "internal/printer/__printer_js__/caption_only.snap",
    "chars": 1167,
    "preview": "\n[TestPrinter/caption_only - 1]\n## Input\n\n```\n<caption>Hello world!</caption>\n```\n\n## Output\n\n```js\nimport {\n  Fragment,"
  },
  {
    "path": "internal/printer/__printer_js__/class_and_class_list_object.snap",
    "chars": 1312,
    "preview": "\n[TestPrinter/class_and_class_list_object - 1]\n## Input\n\n```\n<div class=\"two three\" class:list={['hello goodbye', { hell"
  },
  {
    "path": "internal/printer/__printer_js__/class_and_class_list_set.snap",
    "chars": 1297,
    "preview": "\n[TestPrinter/class_and_class_list_set - 1]\n## Input\n\n```\n<div class=\"two three\" class:list={[ new Set([{hello: true, wo"
  },
  {
    "path": "internal/printer/__printer_js__/class_and_class_list_simple_array.snap",
    "chars": 1250,
    "preview": "\n[TestPrinter/class_and_class_list_simple_array - 1]\n## Input\n\n```\n<div class=\"two\" class:list={['one', 'variable']} />\n"
  },
  {
    "path": "internal/printer/__printer_js__/class_list.snap",
    "chars": 1206,
    "preview": "\n[TestPrinter/class_list - 1]\n## Input\n\n```\n<div class:list={['one', 'variable']} />\n```\n\n## Output\n\n```js\nimport {\n  Fr"
  },
  {
    "path": "internal/printer/__printer_js__/class_list_with_spread.snap",
    "chars": 1387,
    "preview": "\n[TestPrinter/class:list_with_spread - 1]\n## Input\n\n```\n<div class:list=\"something\" {...Astro.props} />\n```\n\n## Output\n\n"
  },
  {
    "path": "internal/printer/__printer_js__/class_with_spread.snap",
    "chars": 1372,
    "preview": "\n[TestPrinter/class_with_spread - 1]\n## Input\n\n```\n<div class=\"something\" {...Astro.props} />\n```\n\n## Output\n\n```js\nimpo"
  },
  {
    "path": "internal/printer/__printer_js__/client_only_component__default_.snap",
    "chars": 1640,
    "preview": "\n[TestPrinter/client:only_component_(default) - 1]\n## Input\n\n```\n/-/-/-/\nimport Component from '../components';\n/-/-/-/\n"
  },
  {
    "path": "internal/printer/__printer_js__/client_only_component__multiple_.snap",
    "chars": 2183,
    "preview": "\n[TestPrinter/client:only_component_(multiple) - 1]\n## Input\n\n```\n/-/-/-/\nimport Component from '../components';\n/-/-/-/"
  },
  {
    "path": "internal/printer/__printer_js__/client_only_component__named_.snap",
    "chars": 1648,
    "preview": "\n[TestPrinter/client:only_component_(named) - 1]\n## Input\n\n```\n/-/-/-/\nimport { Component } from '../components';\n/-/-/-"
  },
  {
    "path": "internal/printer/__printer_js__/client_only_component__namespace_.snap",
    "chars": 1654,
    "preview": "\n[TestPrinter/client:only_component_(namespace) - 1]\n## Input\n\n```\n/-/-/-/\nimport * as components from '../components';\n"
  },
  {
    "path": "internal/printer/__printer_js__/client_only_component__namespaced_default_.snap",
    "chars": 1714,
    "preview": "\n[TestPrinter/client:only_component_(namespaced_default) - 1]\n## Input\n\n```\n/-/-/-/\nimport defaultImport from '../compon"
  },
  {
    "path": "internal/printer/__printer_js__/client_only_component__namespaced_named_.snap",
    "chars": 1716,
    "preview": "\n[TestPrinter/client:only_component_(namespaced_named) - 1]\n## Input\n\n```\n/-/-/-/\nimport { namedImport } from '../compon"
  },
  {
    "path": "internal/printer/__printer_js__/comment_only_expressions_are_removed_I.snap",
    "chars": 1196,
    "preview": "\n[TestPrinter/comment_only_expressions_are_removed_I - 1]\n## Input\n\n```\n{/* a comment 1 */}<h1>{/* a comment 2*/}Hello</"
  },
  {
    "path": "internal/printer/__printer_js__/comment_only_expressions_are_removed_II.snap",
    "chars": 1338,
    "preview": "\n[TestPrinter/comment_only_expressions_are_removed_II - 1]\n## Input\n\n```\n{\n    list.map((i) => (\n        <Component>\n   "
  },
  {
    "path": "internal/printer/__printer_js__/comment_only_expressions_are_removed_III.snap",
    "chars": 1342,
    "preview": "\n[TestPrinter/comment_only_expressions_are_removed_III - 1]\n## Input\n\n```\n{\n    list.map((i) => (\n        <Component>\n  "
  },
  {
    "path": "internal/printer/__printer_js__/comments_removed_from_attribute_list.snap",
    "chars": 1361,
    "preview": "\n[TestPrinter/comments_removed_from_attribute_list - 1]\n## Input\n\n```\n<div><h1 {/* comment 1 */} value=\"1\" {/* comment 2"
  },
  {
    "path": "internal/printer/__printer_js__/complex_nested_template_literal_expression.snap",
    "chars": 1292,
    "preview": "\n[TestPrinter/complex_nested_template_literal_expression - 1]\n## Input\n\n```\n<div value={`${attr ? `a/b ${`c ${`d ${cool}"
  },
  {
    "path": "internal/printer/__printer_js__/complex_recursive_component.snap",
    "chars": 2017,
    "preview": "\n[TestPrinter/complex_recursive_component - 1]\n## Input\n\n```\n{(<Fragment><Fragment set:html={`<${Node.tag} ${stringifyAt"
  },
  {
    "path": "internal/printer/__printer_js__/complex_table.snap",
    "chars": 4220,
    "preview": "\n[TestPrinter/complex_table - 1]\n## Input\n\n```\n<html lang=\"en\">\n    <head>\n        <meta charset=\"UTF-8\" />\n        <met"
  },
  {
    "path": "internal/printer/__printer_js__/component.snap",
    "chars": 1587,
    "preview": "\n[TestPrinter/component - 1]\n## Input\n\n```\n/-/-/-/\nimport VueComponent from '../components/Vue.vue';\n/-/-/-/\n<html>\n  <h"
  },
  {
    "path": "internal/printer/__printer_js__/component_in_expression_with_its_child_expression_before_its_child_element.snap",
    "chars": 1358,
    "preview": "\n[TestPrinter/component_in_expression_with_its_child_expression_before_its_child_element - 1]\n## Input\n\n```\n{list.map(()"
  },
  {
    "path": "internal/printer/__printer_js__/component_with_only_a_script.snap",
    "chars": 1255,
    "preview": "\n[TestPrinter/component_with_only_a_script - 1]\n## Input\n\n```\n<script>console.log('hello world');</script>\n```\n\n## Outpu"
  },
  {
    "path": "internal/printer/__printer_js__/component_with_quoted_attributes.snap",
    "chars": 1190,
    "preview": "\n[TestPrinter/component_with_quoted_attributes - 1]\n## Input\n\n```\n<Component is='\"cool\"' />\n```\n\n## Output\n\n```js\nimport"
  },
  {
    "path": "internal/printer/__printer_js__/condition_expressions_at_the_top-level.snap",
    "chars": 1253,
    "preview": "\n[TestPrinter/condition_expressions_at_the_top-level - 1]\n## Input\n\n```\n{cond && <span></span>}{cond && <strong></strong"
  },
  {
    "path": "internal/printer/__printer_js__/condition_expressions_at_the_top-level_with_head_content.snap",
    "chars": 1267,
    "preview": "\n[TestPrinter/condition_expressions_at_the_top-level_with_head_content - 1]\n## Input\n\n```\n{cond && <meta charset=utf8>}{"
  },
  {
    "path": "internal/printer/__printer_js__/conditional_iframe.snap",
    "chars": 1222,
    "preview": "\n[TestPrinter/conditional_iframe - 1]\n## Input\n\n```\n{bool && <iframe src=\"something\">content</iframe>}\n```\n\n## Output\n\n`"
  },
  {
    "path": "internal/printer/__printer_js__/conditional_noscript.snap",
    "chars": 1230,
    "preview": "\n[TestPrinter/conditional_noscript - 1]\n## Input\n\n```\n{mode === \"production\" && <noscript>Hello</noscript>}\n```\n\n## Outp"
  },
  {
    "path": "internal/printer/__printer_js__/conditional_render.snap",
    "chars": 1236,
    "preview": "\n[TestPrinter/conditional_render - 1]\n## Input\n\n```\n<body>{false ? <div>#f</div> : <div>#t</div>}</body>\n```\n\n## Output\n"
  },
  {
    "path": "internal/printer/__printer_js__/conditional_rendering_of_title_containing_expression.snap",
    "chars": 1622,
    "preview": "\n[TestPrinter/conditional_rendering_of_title_containing_expression - 1]\n## Input\n\n```\n{\n  props.title && (\n    <>\n      "
  },
  {
    "path": "internal/printer/__printer_js__/conditional_slot.snap",
    "chars": 1288,
    "preview": "\n[TestPrinter/conditional_slot - 1]\n## Input\n\n```\n<Component>{value && <div slot=\"test\">foo</div>}</Component>\n```\n\n## O"
  },
  {
    "path": "internal/printer/__printer_js__/css_comment_doesn’t_produce_semicolon.snap",
    "chars": 1283,
    "preview": "\n[TestPrinter/css_comment_doesn’t_produce_semicolon - 1]\n## Input\n\n```\n<style>/* comment */.container {\n    padding: 2re"
  },
  {
    "path": "internal/printer/__printer_js__/css_imports_are_not_included_in_module_metadata.snap",
    "chars": 1191,
    "preview": "\n[TestPrinter/css_imports_are_not_included_in_module_metadata - 1]\n## Input\n\n```\n/-/-/-/\n            import './styles.cs"
  },
  {
    "path": "internal/printer/__printer_js__/custom-element.snap",
    "chars": 1228,
    "preview": "\n[TestPrinter/custom-element - 1]\n## Input\n\n```\n{show && <client-only-element></client-only-element>}\n```\n\n## Output\n\n``"
  },
  {
    "path": "internal/printer/__printer_js__/custom_elements.snap",
    "chars": 1296,
    "preview": "\n[TestPrinter/custom_elements - 1]\n## Input\n\n```\n/-/-/-/\nimport 'test';\n/-/-/-/\n<my-element></my-element>\n```\n\n## Output"
  },
  {
    "path": "internal/printer/__printer_js__/define_vars_on_a_module_script_with_imports.snap",
    "chars": 1291,
    "preview": "\n[TestPrinter/define:vars_on_a_module_script_with_imports - 1]\n## Input\n\n```\n<script type=\"module\" define:vars={{foo:'ba"
  },
  {
    "path": "internal/printer/__printer_js__/define_vars_on_non-root_elements.snap",
    "chars": 1473,
    "preview": "\n[TestPrinter/define:vars_on_non-root_elements - 1]\n## Input\n\n```\n<style define:vars={{color:'green'}}>h1{color:var(--co"
  },
  {
    "path": "internal/printer/__printer_js__/define_vars_on_script_with_StaticExpression_turned_on.snap",
    "chars": 1628,
    "preview": "\n[TestPrinter/define:vars_on_script_with_StaticExpression_turned_on - 1]\n## Input\n\n```\n<script is:inline>var one = 'one'"
  },
  {
    "path": "internal/printer/__printer_js__/define_vars_on_style.snap",
    "chars": 1367,
    "preview": "\n[TestPrinter/define:vars_on_style - 1]\n## Input\n\n```\n<style>h1{color:green;}</style><style define:vars={{color:'green'}"
  },
  {
    "path": "internal/printer/__printer_js__/define_vars_on_style_tag_with_style_empty_attribute_on_element.snap",
    "chars": 1384,
    "preview": "\n[TestPrinter/define:vars_on_style_tag_with_style_empty_attribute_on_element - 1]\n## Input\n\n```\n<style define:vars={{col"
  },
  {
    "path": "internal/printer/__printer_js__/define_vars_on_style_tag_with_style_expression_attribute_on_element.snap",
    "chars": 1418,
    "preview": "\n[TestPrinter/define:vars_on_style_tag_with_style_expression_attribute_on_element - 1]\n## Input\n\n```\n<style define:vars="
  },
  {
    "path": "internal/printer/__printer_js__/define_vars_on_style_tag_with_style_quoted_attribute_on_element.snap",
    "chars": 1428,
    "preview": "\n[TestPrinter/define:vars_on_style_tag_with_style_quoted_attribute_on_element - 1]\n## Input\n\n```\n<style define:vars={{co"
  },
  {
    "path": "internal/printer/__printer_js__/define_vars_on_style_tag_with_style_shorthand_attribute_on_element.snap",
    "chars": 1405,
    "preview": "\n[TestPrinter/define:vars_on_style_tag_with_style_shorthand_attribute_on_element - 1]\n## Input\n\n```\n<style define:vars={"
  },
  {
    "path": "internal/printer/__printer_js__/define_vars_on_style_tag_with_style_template_literal_attribute_on_element.snap",
    "chars": 1442,
    "preview": "\n[TestPrinter/define:vars_on_style_tag_with_style_template_literal_attribute_on_element - 1]\n## Input\n\n```\n<style define"
  },
  {
    "path": "internal/printer/__printer_js__/division_inside_expression.snap",
    "chars": 1158,
    "preview": "\n[TestPrinter/division_inside_expression - 1]\n## Input\n\n```\n<div>{16 / 4}</div>\n```\n\n## Output\n\n```js\nimport {\n  Fragmen"
  },
  {
    "path": "internal/printer/__printer_js__/doctype.snap",
    "chars": 1132,
    "preview": "\n[TestPrinter/doctype - 1]\n## Input\n\n```\n<!DOCTYPE html><div/>\n```\n\n## Output\n\n```js\nimport {\n  Fragment,\n  render as $$"
  },
  {
    "path": "internal/printer/__printer_js__/dot_component.snap",
    "chars": 1549,
    "preview": "\n[TestPrinter/dot_component - 1]\n## Input\n\n```\n/-/-/-/\nimport * as ns from '../components';\n/-/-/-/\n<html>\n  <head>\n    "
  },
  {
    "path": "internal/printer/__printer_js__/dynamic_import.snap",
    "chars": 1535,
    "preview": "\n[TestPrinter/dynamic_import - 1]\n## Input\n\n```\n/-/-/-/\nconst markdownDocs = await Astro.glob('../markdown/*.md')\nconst "
  },
  {
    "path": "internal/printer/__printer_js__/escaped_entity.snap",
    "chars": 1197,
    "preview": "\n[TestPrinter/escaped_entity - 1]\n## Input\n\n```\n<img alt=\"A person saying &#x22;hello&#x22;\">\n```\n\n## Output\n\n```js\nimpo"
  },
  {
    "path": "internal/printer/__printer_js__/export_comments_I.snap",
    "chars": 1165,
    "preview": "\n[TestPrinter/export_comments_I - 1]\n## Input\n\n```\n/-/-/-/\n// hmm\nexport const foo = 0\n/*\n*/\n/-/-/-/\n```\n\n## Output\n\n```"
  },
  {
    "path": "internal/printer/__printer_js__/export_comments_II.snap",
    "chars": 1168,
    "preview": "\n[TestPrinter/export_comments_II - 1]\n## Input\n\n```\n/-/-/-/\n// hmm\nexport const foo = 0;\n/*\n*/\n/-/-/-/\n```\n\n## Output\n\n`"
  },
  {
    "path": "internal/printer/__printer_js__/export_member_does_not_panic.snap",
    "chars": 1184,
    "preview": "\n[TestPrinter/export_member_does_not_panic - 1]\n## Input\n\n```\n/-/-/-/\nmod.export();\n/-/-/-/\n<div />\n```\n\n## Output\n\n```j"
  },
  {
    "path": "internal/printer/__printer_js__/expression_returning_multiple_elements.snap",
    "chars": 2713,
    "preview": "\n[TestPrinter/expression_returning_multiple_elements - 1]\n## Input\n\n```\n<Layout title=\"Welcome to Astro.\">\n    <main>\n  "
  },
  {
    "path": "internal/printer/__printer_js__/expression_slot.snap",
    "chars": 1363,
    "preview": "\n[TestPrinter/expression_slot - 1]\n## Input\n\n```\n<Component>{true && <div slot=\"a\">A</div>}{false && <div slot=\"b\">B</di"
  },
  {
    "path": "internal/printer/__printer_js__/expression_with_leading_whitespace.snap",
    "chars": 1548,
    "preview": "\n[TestPrinter/expression_with_leading_whitespace - 1]\n## Input\n\n```\n<section>\n<ul class=\"font-mono text-sm flex flex-col"
  },
  {
    "path": "internal/printer/__printer_js__/expressions_with_JS_comments.snap",
    "chars": 1630,
    "preview": "\n[TestPrinter/expressions_with_JS_comments - 1]\n## Input\n\n```\n/-/-/-/\nconst items = ['red', 'yellow', 'blue'];\n/-/-/-/\n<"
  },
  {
    "path": "internal/printer/__printer_js__/expressions_with_multiple_curly_braces.snap",
    "chars": 1528,
    "preview": "\n[TestPrinter/expressions_with_multiple_curly_braces - 1]\n## Input\n\n```\n<div>\n{\n    () => {\n        let generate = (inpu"
  },
  {
    "path": "internal/printer/__printer_js__/function_expression_slots_I.snap",
    "chars": 1552,
    "preview": "\n[TestPrinter/function_expression_slots_I - 1]\n## Input\n\n```\n<Component>\n{() => { switch (value) {\ncase 'a': return <div"
  },
  {
    "path": "internal/printer/__printer_js__/function_expression_slots_II___959_.snap",
    "chars": 2234,
    "preview": "\n[TestPrinter/function_expression_slots_II_(#959) - 1]\n## Input\n\n```\n<Layout title=\"Welcome to Astro.\">\n    <main>\n     "
  },
  {
    "path": "internal/printer/__printer_js__/getStaticPaths__basic_.snap",
    "chars": 1295,
    "preview": "\n[TestPrinter/getStaticPaths_(basic) - 1]\n## Input\n\n```\n/-/-/-/\nexport const getStaticPaths = async () => {\n    return {"
  },
  {
    "path": "internal/printer/__printer_js__/getStaticPaths__hoisted_.snap",
    "chars": 1324,
    "preview": "\n[TestPrinter/getStaticPaths_(hoisted) - 1]\n## Input\n\n```\n/-/-/-/\nconst a = 0;\nexport const getStaticPaths = async () =>"
  },
  {
    "path": "internal/printer/__printer_js__/getStaticPaths__hoisted_II_.snap",
    "chars": 1348,
    "preview": "\n[TestPrinter/getStaticPaths_(hoisted_II) - 1]\n## Input\n\n```\n/-/-/-/\nconst a = 0;\nexport async function getStaticPaths()"
  },
  {
    "path": "internal/printer/__printer_js__/gets_all_potential_hydrated_components.snap",
    "chars": 2129,
    "preview": "\n[TestPrinter/gets_all_potential_hydrated_components - 1]\n## Input\n\n```\n/-/-/-/\nimport One from 'one';\nimport Two from '"
  },
  {
    "path": "internal/printer/__printer_js__/head_content_with_component_first.snap",
    "chars": 1577,
    "preview": "\n[TestPrinter/head_content_with_component_first - 1]\n## Input\n\n```\n/-/-/-/\nimport Analytics from '../components/Analytic"
  },
  {
    "path": "internal/printer/__printer_js__/head_expression.snap",
    "chars": 1364,
    "preview": "\n[TestPrinter/head_expression - 1]\n## Input\n\n```\n/-/-/-/\nconst name = \"world\";\n/-/-/-/\n<html>\n  <head>\n    <title>Hello "
  },
  {
    "path": "internal/printer/__printer_js__/head_expression_and_conditional_rendering_of_fragment.snap",
    "chars": 1756,
    "preview": "\n[TestPrinter/head_expression_and_conditional_rendering_of_fragment - 1]\n## Input\n\n```\n/-/-/-/\nconst testBool = true;\n/-"
  },
  {
    "path": "internal/printer/__printer_js__/head_inside_slot.snap",
    "chars": 1224,
    "preview": "\n[TestPrinter/head_inside_slot - 1]\n## Input\n\n```\n<html><slot><head></head></slot></html>\n```\n\n## Output\n\n```js\nimport {"
  },
  {
    "path": "internal/printer/__printer_js__/head_slot.snap",
    "chars": 1194,
    "preview": "\n[TestPrinter/head_slot - 1]\n## Input\n\n```\n<html><head><slot /></html>\n```\n\n## Output\n\n```js\nimport {\n  Fragment,\n  rend"
  },
  {
    "path": "internal/printer/__printer_js__/head_slot_II.snap",
    "chars": 1250,
    "preview": "\n[TestPrinter/head_slot_II - 1]\n## Input\n\n```\n<html><head><slot /></head><body class=\"a\"></body></html>\n```\n\n## Output\n\n"
  },
  {
    "path": "internal/printer/__printer_js__/head_slot_III.snap",
    "chars": 1328,
    "preview": "\n[TestPrinter/head_slot_III - 1]\n## Input\n\n```\n<html><head><slot name=\"baseHeadExtension\"><meta property=\"test2\" content"
  },
  {
    "path": "internal/printer/__printer_js__/html5_boilerplate.snap",
    "chars": 3012,
    "preview": "\n[TestPrinter/html5_boilerplate - 1]\n## Input\n\n```\n<!doctype html>\n\n<html lang=\"en\">\n<head>\n  <meta charset=\"utf-8\">\n  <"
  },
  {
    "path": "internal/printer/__printer_js__/iframe.snap",
    "chars": 1158,
    "preview": "\n[TestPrinter/iframe - 1]\n## Input\n\n```\n<iframe src=\"something\" />\n```\n\n## Output\n\n```js\nimport {\n  Fragment,\n  render a"
  },
  {
    "path": "internal/printer/__printer_js__/import.meta.env.snap",
    "chars": 4247,
    "preview": "\n[TestPrinter/import.meta.env - 1]\n## Input\n\n```\n/-/-/-/\nimport Header from '../../components/Header.jsx'\nimport Footer "
  },
  {
    "path": "internal/printer/__printer_js__/import.meta.snap",
    "chars": 1264,
    "preview": "\n[TestPrinter/import.meta - 1]\n## Input\n\n```\n/-/-/-/\nconst components = import.meta.glob(\"../components/*.astro\", {\n  im"
  },
  {
    "path": "internal/printer/__printer_js__/import_assertions.snap",
    "chars": 1313,
    "preview": "\n[TestPrinter/import_assertions - 1]\n## Input\n\n```\n/-/-/-/\nimport data from \"test\" assert { type: 'json' };\n/-/-/-/\n```\n"
  },
  {
    "path": "internal/printer/__printer_js__/import_order.snap",
    "chars": 1362,
    "preview": "\n[TestPrinter/import_order - 1]\n## Input\n\n```\n/-/-/-/\nlet testWord = \"Test\"\n// comment\nimport data from \"test\";\n/-/-/-/\n"
  },
  {
    "path": "internal/printer/__printer_js__/import_to_identifier_named_assert.snap",
    "chars": 1253,
    "preview": "\n[TestPrinter/import_to_identifier_named_assert - 1]\n## Input\n\n```\n/-/-/-/\nimport assert from 'test';\n/-/-/-/\n```\n\n## Ou"
  },
  {
    "path": "internal/printer/__printer_js__/includes_comments_for_expression_attribute.snap",
    "chars": 1488,
    "preview": "\n[TestPrinter/includes_comments_for_expression_attribute - 1]\n## Input\n\n```\n<div><h1 attr={/* comment 1 */ isTrue ? 1 : "
  },
  {
    "path": "internal/printer/__printer_js__/includes_comments_for_shorthand_attribute.snap",
    "chars": 1425,
    "preview": "\n[TestPrinter/includes_comments_for_shorthand_attribute - 1]\n## Input\n\n```\n<div><h1 {/* comment 1 */ id /* comment 2 */}"
  },
  {
    "path": "internal/printer/__printer_js__/is_raw.snap",
    "chars": 1170,
    "preview": "\n[TestPrinter/is:raw - 1]\n## Input\n\n```\n<article is:raw><% awesome %></article>\n```\n\n## Output\n\n```js\nimport {\n  Fragmen"
  },
  {
    "path": "internal/printer/__printer_js__/jsx_comment_between_doctype_and_html.snap",
    "chars": 1311,
    "preview": "\n[TestPrinter/jsx_comment_between_doctype_and_html - 1]\n## Input\n\n```\n<!doctype html>\n{/* Comment */}\n<html lang=\"en\">\n "
  },
  {
    "path": "internal/printer/__printer_js__/map_basic.snap",
    "chars": 1331,
    "preview": "\n[TestPrinter/map_basic - 1]\n## Input\n\n```\n/-/-/-/\nconst items = [0, 1, 2];\n/-/-/-/\n<ul>\n    {items.map(item => {\n      "
  },
  {
    "path": "internal/printer/__printer_js__/map_nested.snap",
    "chars": 1561,
    "preview": "\n[TestPrinter/map_nested - 1]\n## Input\n\n```\n/-/-/-/\nconst groups = [[0, 1, 2], [3, 4, 5]];\n/-/-/-/\n<div>\n    {groups.map"
  },
  {
    "path": "internal/printer/__printer_js__/map_with_component.snap",
    "chars": 1369,
    "preview": "\n[TestPrinter/map_with_component - 1]\n## Input\n\n```\n<header><nav>{menu.map((item) => <a href={item.href}>{item.title}</a"
  },
  {
    "path": "internal/printer/__printer_js__/map_without_component.snap",
    "chars": 1317,
    "preview": "\n[TestPrinter/map_without_component - 1]\n## Input\n\n```\n<header><nav>{menu.map((item) => <a href={item.href}>{item.title}"
  },
  {
    "path": "internal/printer/__printer_js__/maybeRenderHead_not_printed_for_hoisted_scripts.snap",
    "chars": 1329,
    "preview": "\n[TestPrinter/maybeRenderHead_not_printed_for_hoisted_scripts - 1]\n## Input\n\n```\n<script></script><Layout></Layout>\n```\n"
  },
  {
    "path": "internal/printer/__printer_js__/multibyte_character___script.snap",
    "chars": 1309,
    "preview": "\n[TestPrinter/multibyte_character_+_script - 1]\n## Input\n\n```\n<script>console.log('foo')</script><a class=\"test\">ツ</a>\n`"
  },
  {
    "path": "internal/printer/__printer_js__/multibyte_character___style.snap",
    "chars": 1214,
    "preview": "\n[TestPrinter/multibyte_character_+_style - 1]\n## Input\n\n```\n<style>a { font-size: 16px; }</style><a class=\"test\">ツ</a>\n"
  },
  {
    "path": "internal/printer/__printer_js__/multibyte_characters.snap",
    "chars": 1157,
    "preview": "\n[TestPrinter/multibyte_characters - 1]\n## Input\n\n```\n/-/-/-/\n/-/-/-/\n<h1>こんにちは</h1>\n```\n\n## Output\n\n```js\nimport {\n  Fr"
  },
  {
    "path": "internal/printer/__printer_js__/multiline_class_attribute_on_component.snap",
    "chars": 1325,
    "preview": "\n[TestPrinter/multiline_class_attribute_on_component - 1]\n## Input\n\n```\n<Component class=\"some-class\n  another-class\n  t"
  },
  {
    "path": "internal/printer/__printer_js__/multiple_define_vars_on_style.snap",
    "chars": 1504,
    "preview": "\n[TestPrinter/multiple_define:vars_on_style - 1]\n## Input\n\n```\n<style define:vars={{color:'green'}}>h1{color:var(--color"
  },
  {
    "path": "internal/printer/__printer_js__/namespace_is_preserved_when_inside_an_expression.snap",
    "chars": 1202,
    "preview": "\n[TestPrinter/namespace_is_preserved_when_inside_an_expression - 1]\n## Input\n\n```\n<svg>{<image />}</svg>\n```\n\n## Output\n"
  }
]

// ... and 384 more files (download for full content)

About this extraction

This page contains the full source code of the withastro/compiler GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 584 files (1.8 MB), approximately 572.2k tokens, and a symbol index with 1884 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!