svelte-effect-runtime 4.0.0 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/.dist/chunks/client-BrZka6DW.js +530 -0
  2. package/.dist/chunks/client-BrZka6DW.js.map +1 -0
  3. package/.dist/chunks/compiler-COVzgLYo.js +412 -0
  4. package/.dist/chunks/compiler-COVzgLYo.js.map +1 -0
  5. package/.dist/chunks/descriptors-B4otDlm1.js +216 -0
  6. package/.dist/chunks/descriptors-B4otDlm1.js.map +1 -0
  7. package/.dist/chunks/diagnostics-BDrky-Di.js +359 -0
  8. package/.dist/chunks/diagnostics-BDrky-Di.js.map +1 -0
  9. package/.dist/chunks/dispatcher-BA0PLQhA.js +16 -0
  10. package/.dist/chunks/dispatcher-BA0PLQhA.js.map +1 -0
  11. package/.dist/chunks/{dispatcher-DOx8iC6r.js → dispatcher-_x0MQZBS.js} +84 -258
  12. package/.dist/chunks/dispatcher-_x0MQZBS.js.map +1 -0
  13. package/.dist/chunks/{errors-IJjsUwrE.js → errors-CLsbGjIa.js} +39 -44
  14. package/.dist/chunks/errors-CLsbGjIa.js.map +1 -0
  15. package/.dist/chunks/live-BundLSoY.js +146 -0
  16. package/.dist/chunks/live-BundLSoY.js.map +1 -0
  17. package/.dist/chunks/live-CHK0RrZu.js +10 -0
  18. package/.dist/chunks/live-CHK0RrZu.js.map +1 -0
  19. package/.dist/chunks/{remote-client-CVI4t66c.js → remote-client-mkQAfP1G.js} +29 -23
  20. package/.dist/chunks/remote-client-mkQAfP1G.js.map +1 -0
  21. package/.dist/chunks/{runtime-GBQz32DZ.js → runtime-HDTlEnzp.js} +3 -27
  22. package/.dist/chunks/runtime-HDTlEnzp.js.map +1 -0
  23. package/.dist/chunks/{server-D1LcDnZE.js → server-BNrA1I-u.js} +15 -84
  24. package/.dist/chunks/server-BNrA1I-u.js.map +1 -0
  25. package/.dist/chunks/source-scan-9pZxnfct.js +1059 -0
  26. package/.dist/chunks/source-scan-9pZxnfct.js.map +1 -0
  27. package/.dist/chunks/{transform-jNUr65K9.js → transform-BXyYUAez.js} +184 -358
  28. package/.dist/chunks/transform-BXyYUAez.js.map +1 -0
  29. package/.dist/compiler/markup-identifiers.d.ts +2 -0
  30. package/.dist/compiler/remote-client.d.ts +1 -19
  31. package/.dist/compiler/source-scan.d.ts +11 -108
  32. package/.dist/compiler/sveltekit-remote-bridge.d.ts +3 -0
  33. package/.dist/compiler.d.ts +6 -0
  34. package/.dist/compiler.js +1 -1
  35. package/.dist/detect.d.ts +0 -31
  36. package/.dist/detect.js +0 -39
  37. package/.dist/detect.js.map +1 -1
  38. package/.dist/diagnostics.d.ts +0 -16
  39. package/.dist/dispatcher/deps.d.ts +3 -14
  40. package/.dist/dispatcher/fibers.d.ts +5 -46
  41. package/.dist/dispatcher/index.d.ts +1 -143
  42. package/.dist/dispatcher/types.d.ts +0 -151
  43. package/.dist/dispatcher.js +1 -1
  44. package/.dist/errors.d.ts +30 -42
  45. package/.dist/generated/dispatcher.d.ts +0 -50
  46. package/.dist/generators.d.ts +1 -12
  47. package/.dist/internal/descriptors.d.ts +0 -16
  48. package/.dist/internal/generators.js +13 -8
  49. package/.dist/internal/generators.js.map +1 -1
  50. package/.dist/internal/live.d.ts +9 -0
  51. package/.dist/internal/remote-client.js +2 -2
  52. package/.dist/internal/remote-server.js +2 -2
  53. package/.dist/internal/schema.d.ts +0 -54
  54. package/.dist/live.d.ts +9 -26
  55. package/.dist/markup/event-attributes.d.ts +0 -32
  56. package/.dist/markup/promise.d.ts +1 -23
  57. package/.dist/markup/promise.js +2 -18
  58. package/.dist/markup/promise.js.map +1 -1
  59. package/.dist/markup/run.d.ts +1 -10
  60. package/.dist/markup/run.js +2 -11
  61. package/.dist/markup/run.js.map +1 -1
  62. package/.dist/markup/transform/apply.d.ts +4 -4
  63. package/.dist/markup/transform/classify.d.ts +2 -11
  64. package/.dist/markup/transform/constants.d.ts +1 -1
  65. package/.dist/markup/transform/effect-bindings.d.ts +2 -26
  66. package/.dist/markup/transform/effect-callbacks.d.ts +0 -20
  67. package/.dist/markup/transform/emit.d.ts +2 -11
  68. package/.dist/markup/transform/expressions.d.ts +0 -35
  69. package/.dist/markup/transform/scan.d.ts +3 -22
  70. package/.dist/markup/transform/types.d.ts +1 -129
  71. package/.dist/markup/transform.js +1 -1
  72. package/.dist/markup/value.d.ts +1 -18
  73. package/.dist/markup/value.js +2 -19
  74. package/.dist/markup/value.js.map +1 -1
  75. package/.dist/mod.d.ts +3 -8
  76. package/.dist/mod.js +5 -5
  77. package/.dist/mod.js.map +1 -1
  78. package/.dist/remote/cause-codec.d.ts +3 -37
  79. package/.dist/remote/client/command.d.ts +3 -17
  80. package/.dist/remote/client/form-data.d.ts +0 -7
  81. package/.dist/remote/client/form-enhance.d.ts +0 -7
  82. package/.dist/remote/client/form-transport.d.ts +14 -20
  83. package/.dist/remote/client/form.d.ts +4 -24
  84. package/.dist/remote/client/index.d.ts +2 -1
  85. package/.dist/remote/client/prerender.d.ts +6 -0
  86. package/.dist/remote/client/query-result.d.ts +2 -14
  87. package/.dist/remote/client/query.d.ts +8 -48
  88. package/.dist/remote/client/responses.d.ts +3 -27
  89. package/.dist/remote/client/types.d.ts +16 -110
  90. package/.dist/remote/client/utils.d.ts +0 -8
  91. package/.dist/remote/client.d.ts +2 -2
  92. package/.dist/remote/client.js +2 -2
  93. package/.dist/remote/effect.d.ts +6 -0
  94. package/.dist/remote/failures.d.ts +4 -0
  95. package/.dist/remote/query-update.d.ts +2 -0
  96. package/.dist/remote/resource.d.ts +25 -0
  97. package/.dist/remote/server.d.ts +5 -50
  98. package/.dist/remote/server.js +2 -2
  99. package/.dist/remote/shared.d.ts +6 -145
  100. package/.dist/remote/shared.js +6 -127
  101. package/.dist/remote/shared.js.map +1 -1
  102. package/.dist/runtime/transform.js +5 -22
  103. package/.dist/runtime/transform.js.map +1 -1
  104. package/.dist/script-transform/ast.d.ts +0 -46
  105. package/.dist/script-transform/imports.d.ts +0 -38
  106. package/.dist/script-transform/lower.d.ts +0 -9
  107. package/.dist/script-transform/runes.d.ts +0 -10
  108. package/.dist/script-transform/runtime-block.d.ts +0 -17
  109. package/.dist/script-transform/source.d.ts +0 -24
  110. package/.dist/script-transform/types.d.ts +1 -126
  111. package/.dist/server/effects.d.ts +4 -53
  112. package/.dist/server/factories.d.ts +7 -7
  113. package/.dist/server/index.d.ts +1 -1
  114. package/.dist/server/invalid.d.ts +0 -7
  115. package/.dist/server/live-snapshot.d.ts +5 -0
  116. package/.dist/server/remote-handler-context.d.ts +5 -0
  117. package/.dist/server/runtime.d.ts +6 -24
  118. package/.dist/server/schema.d.ts +0 -14
  119. package/.dist/server/transport.d.ts +2 -0
  120. package/.dist/server/types.d.ts +49 -26
  121. package/.dist/server/wrappers.d.ts +3 -40
  122. package/.dist/server.d.ts +1 -1
  123. package/.dist/server.js +200 -215
  124. package/.dist/server.js.map +1 -1
  125. package/.dist/yieldable.d.ts +1 -35
  126. package/package.json +2 -2
  127. package/.dist/chunks/client-DcZUV4rR.js +0 -653
  128. package/.dist/chunks/client-DcZUV4rR.js.map +0 -1
  129. package/.dist/chunks/compiler-BBPNyXmQ.js +0 -460
  130. package/.dist/chunks/compiler-BBPNyXmQ.js.map +0 -1
  131. package/.dist/chunks/dispatcher-DOx8iC6r.js.map +0 -1
  132. package/.dist/chunks/dispatcher-H-Ia0Os4.js +0 -47
  133. package/.dist/chunks/dispatcher-H-Ia0Os4.js.map +0 -1
  134. package/.dist/chunks/errors-IJjsUwrE.js.map +0 -1
  135. package/.dist/chunks/live-BXAKre_4.js +0 -104
  136. package/.dist/chunks/live-BXAKre_4.js.map +0 -1
  137. package/.dist/chunks/remote-client-CVI4t66c.js.map +0 -1
  138. package/.dist/chunks/runtime-GBQz32DZ.js.map +0 -1
  139. package/.dist/chunks/schema-D9pct6Y5.js +0 -89
  140. package/.dist/chunks/schema-D9pct6Y5.js.map +0 -1
  141. package/.dist/chunks/server-D1LcDnZE.js.map +0 -1
  142. package/.dist/chunks/source-scan-C4PsggID.js +0 -341
  143. package/.dist/chunks/source-scan-C4PsggID.js.map +0 -1
  144. package/.dist/chunks/transform-jNUr65K9.js.map +0 -1
  145. package/.dist/remote/client/effect.d.ts +0 -29
  146. package/.dist/remote/client/failures.d.ts +0 -42
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-scan-9pZxnfct.js","names":[],"sources":["../../../modules/svelte-effect-runtime/src/compiler/source-scan.ts"],"sourcesContent":["import { type AST, parse } from \"svelte/compiler\";\n\nimport ts from \"typescript\";\n\nexport interface SourceRange {\n\t/** Inclusive start offset. */\n\tstart: number;\n\t/** Exclusive end offset. */\n\tend: number;\n}\n\nexport interface SourceAttribute extends SourceRange {\n\t/** Attribute name exactly as written in source. */\n\tname: string;\n\t/** Inclusive offset where the attribute name starts. */\n\tname_start: number;\n\t/** Exclusive offset where the attribute name ends. */\n\tname_end: number;\n\t/** Parsed string value when the attribute has one. */\n\tvalue?: string | undefined;\n}\n\nexport interface ScriptRegion extends SourceRange {\n\t/** Offset where the opening `<script` tag starts. */\n\topening_tag_start: number;\n\t/** Offset immediately after the opening tag's `>` character. */\n\topening_tag_end: number;\n\t/** Offset immediately after the `script` tag name. */\n\ttag_name_end: number;\n\t/** Offset where script content starts. */\n\tcontent_start: number;\n\t/** Offset where script content ends. */\n\tcontent_end: number;\n\t/** Offset where the closing `</script>` tag starts. */\n\tclosing_tag_start: number;\n\t/** Offset immediately after the closing `</script>` tag. */\n\tclosing_tag_end: number;\n\t/** Raw attribute text between `script` and `>`. */\n\tattributes_text: string;\n\t/** Parsed opening tag attributes. */\n\tattributes: readonly SourceAttribute[];\n\t/** Script content between the opening and closing tags. */\n\ttext: string;\n\t/** Whether this is a module script. */\n\tis_module: boolean;\n\t/** Whether the script has a `lang` attribute. */\n\thas_lang: boolean;\n\t/** Parsed `lang` value when present. */\n\tlang?: string | undefined;\n\t/** Whether this script should be parsed as TypeScript. */\n\tis_typescript: boolean;\n\t/** Whether this script has SER's `effect` attribute. */\n\thas_effect: boolean;\n\t/** Range of the `effect` attribute, including leading whitespace. */\n\teffect_attribute?: SourceRange | undefined;\n}\n\nexport interface MarkupBraceExpression {\n\t/** Offset of the opening `{`. */\n\topen: number;\n\t/** Offset of the closing `}`. */\n\tclose: number;\n\t/** Offset where the expression body starts. */\n\tinner_start: number;\n\t/** Offset where the expression body ends. */\n\tinner_end: number;\n\t/** Raw expression body between braces. */\n\tinner: string;\n\t/** Trimmed expression body. */\n\texpression_text: string;\n\t/** Attribute name when the expression is an attribute value. */\n\tattribute_name?: string | undefined;\n}\n\nexport interface BareConstDeclarationTag {\n\t/** Offset of the opening `{`. */\n\topen: number;\n\t/** Offset after `{` where `@` should be inserted. */\n\tinsert_position: number;\n\t/** Brace expression that contains the bare declaration. */\n\texpression: MarkupBraceExpression;\n}\n\nexport interface SvelteEffectSourceScan {\n\t/** Source filename used for diagnostics and debugging. */\n\tfilename: string;\n\t/** Full component source that was scanned. */\n\tsource: string;\n\t/** Complete root-level script regions in source order. */\n\tscripts: readonly ScriptRegion[];\n\t/** Complete root-level style tag ranges in source order. */\n\tstyles: readonly SourceRange[];\n\t/** HTML comment ranges in source order. */\n\tcomments: readonly SourceRange[];\n\t/** Merged ranges where markup brace scanning should not enter. */\n\texcluded_ranges: readonly SourceRange[];\n\t/** Markup brace expressions outside excluded ranges. */\n\tmarkup_expressions: readonly MarkupBraceExpression[];\n\t/** Lexical binding names introduced by markup blocks and directives. */\n\tmarkup_binding_names: readonly string[];\n\t/** Bare `{const ...}` tags outside excluded ranges. */\n\tbare_const_tags: readonly BareConstDeclarationTag[];\n\t/** First non-module script, if present. */\n\tinstance_script?: ScriptRegion | undefined;\n\t/** First non-module script with SER's `effect` attribute, if present. */\n\teffect_script?: ScriptRegion | undefined;\n}\n\ninterface SourceRegions {\n\tscripts: ScriptRegion[];\n\tstyles: SourceRange[];\n\tcomments: SourceRange[];\n\topaque_ranges: SourceRange[];\n\tattribute_names: ReadonlyMap<number, string>;\n\tmarkup_binding_names: ReadonlySet<string>;\n}\n\ninterface ParserDiagnostic {\n\tcode?: unknown;\n\tposition?: unknown;\n}\n\ninterface ParsedSourceFile extends ts.SourceFile {\n\tparseDiagnostics?: readonly ts.Diagnostic[];\n}\n\ntype MarkupBindingPattern = NonNullable<AST.EachBlock[\"context\"]>;\n\ninterface LocatedRawTag extends SourceRange {\n\tname: \"script\" | \"style\";\n\tcontent_start: number;\n\tcontent_end: number;\n}\n\nlet latest_scan: SvelteEffectSourceScan | undefined;\n\nfunction parse_svelte_source(source: string): AST.Root | undefined {\n\tlet parse_source = source;\n\tconst yield_count = source.match(/\\byield\\s*\\*/g)?.length ?? 0;\n\tconst max_attempts = yield_count + 1;\n\n\tfor (let attempt = 0; attempt < max_attempts; attempt += 1) {\n\t\ttry {\n\t\t\treturn parse(parse_source, { modern: true, loose: true });\n\t\t} catch (error) {\n\t\t\tconst normalized = normalize_parser_error(parse_source, error);\n\n\t\t\tif (!normalized || normalized === parse_source) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tparse_source = normalized;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nfunction normalize_parser_error(source: string, error: unknown): string | undefined {\n\tif (!is_parser_diagnostic(error) || !is_parser_position(error.position)) {\n\t\treturn undefined;\n\t}\n\n\tconst [start, end] = error.position;\n\n\tif (error.code === \"js_parse_error\") {\n\t\tconst match = source.slice(start).match(/^yield\\s*\\*/);\n\n\t\tif (!match) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn replace_range(source, start, start + match[0].length, blank_source(match[0]));\n\t}\n\n\tif (error.code !== \"render_tag_invalid_expression\") {\n\t\treturn undefined;\n\t}\n\n\tconst expression = source.slice(start, end);\n\tconst yield_index = expression.search(/\\byield\\s*\\*/);\n\n\tif (yield_index === -1) {\n\t\treturn undefined;\n\t}\n\n\treturn normalize_render_yield_expressions(source);\n}\n\nfunction normalize_render_yield_expressions(source: string): string {\n\tconst replacements: Array<SourceRange & { text: string }> = [];\n\tlet cursor = 0;\n\n\twhile (cursor < source.length) {\n\t\tconst open = source.indexOf(\"{@render\", cursor);\n\n\t\tif (open === -1) {\n\t\t\tbreak;\n\t\t}\n\n\t\tconst close = find_closing_brace(source, open);\n\n\t\tif (close === -1) {\n\t\t\tcursor = open + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst tag = source.slice(open + 1, close);\n\t\tconst prefix = tag.match(/^@render\\b\\s*/)?.[0];\n\t\tconst expression_start = prefix ? open + 1 + prefix.length : -1;\n\t\tconst expression = expression_start === -1 ? \"\" : source.slice(expression_start, close);\n\n\t\tif (/\\byield\\s*\\*/.test(expression)) {\n\t\t\tconst blanked = blank_source(expression);\n\n\t\t\treplacements.push({\n\t\t\t\tstart: expression_start,\n\t\t\t\tend: close,\n\t\t\t\ttext: \"x()\" + blanked.slice(3),\n\t\t\t});\n\t\t}\n\n\t\tcursor = close + 1;\n\t}\n\n\tif (replacements.length === 0) {\n\t\treturn source;\n\t}\n\n\tconst parts: string[] = [];\n\tlet source_cursor = 0;\n\n\tfor (const replacement of replacements) {\n\t\tparts.push(source.slice(source_cursor, replacement.start), replacement.text);\n\t\tsource_cursor = replacement.end;\n\t}\n\n\tparts.push(source.slice(source_cursor));\n\n\treturn parts.join(\"\");\n}\n\nfunction is_parser_diagnostic(error: unknown): error is ParserDiagnostic {\n\treturn typeof error === \"object\" && error !== null;\n}\n\nfunction is_parser_position(position: unknown): position is [number, number] {\n\treturn (\n\t\tArray.isArray(position) &&\n\t\tposition.length === 2 &&\n\t\tposition.every((offset) => typeof offset === \"number\")\n\t);\n}\n\nfunction replace_range(source: string, start: number, end: number, replacement: string): string {\n\treturn source.slice(0, start) + replacement + source.slice(end);\n}\n\nfunction blank_source(source: string): string {\n\treturn source.replace(/[^\\r\\n]/g, \" \");\n}\n\nexport function scan_svelte_effect_source(\n\tsource: string,\n\tfilename = \"unknown.svelte\",\n): SvelteEffectSourceScan {\n\tif (latest_scan?.source === source && latest_scan.filename === filename) {\n\t\treturn latest_scan;\n\t}\n\n\tconst scan = scan_svelte_effect_source_uncached(source, filename);\n\n\tlatest_scan = scan;\n\n\treturn scan;\n}\n\nfunction scan_svelte_effect_source_uncached(\n\tsource: string,\n\tfilename: string,\n): SvelteEffectSourceScan {\n\tconst fast_regions = collect_fast_source_regions(source);\n\n\tif (fast_regions) {\n\t\treturn make_source_scan(source, filename, fast_regions);\n\t}\n\n\tconst parse_source = make_svelte_parse_shadow(source);\n\tconst ast = parse_svelte_source(parse_source);\n\n\tif (!ast) {\n\t\treturn make_opaque_scan(source, filename);\n\t}\n\n\tconst regions = collect_source_regions(source, ast);\n\n\treturn make_source_scan(source, filename, regions);\n}\n\nfunction make_source_scan(\n\tsource: string,\n\tfilename: string,\n\tregions: SourceRegions,\n): SvelteEffectSourceScan {\n\tconst scripts = regions.scripts;\n\tconst styles = regions.styles;\n\tconst comments = regions.comments;\n\tconst excluded_ranges = merge_ranges([...comments, ...regions.opaque_ranges]);\n\tconst markup_expressions = collect_scanned_markup_expressions(\n\t\tsource,\n\t\texcluded_ranges,\n\t\tregions.attribute_names,\n\t);\n\tconst bare_const_tags = markup_expressions.flatMap((expression) =>\n\t\tmake_bare_const_tag(expression),\n\t);\n\tconst instance_script = scripts.find((script) => !script.is_module);\n\tconst effect_script = scripts.find((script) => !script.is_module && script.has_effect);\n\n\treturn {\n\t\tfilename,\n\t\tsource,\n\t\tscripts,\n\t\tstyles,\n\t\tcomments,\n\t\texcluded_ranges,\n\t\tmarkup_expressions,\n\t\tmarkup_binding_names: [...regions.markup_binding_names],\n\t\tbare_const_tags,\n\t\tinstance_script,\n\t\teffect_script,\n\t};\n}\n\nfunction make_opaque_scan(source: string, filename: string): SvelteEffectSourceScan {\n\treturn {\n\t\tfilename,\n\t\tsource,\n\t\tscripts: [],\n\t\tstyles: [],\n\t\tcomments: [],\n\t\texcluded_ranges: source.length === 0 ? [] : [{ start: 0, end: source.length }],\n\t\tmarkup_expressions: [],\n\t\tmarkup_binding_names: [],\n\t\tbare_const_tags: [],\n\t\tinstance_script: undefined,\n\t\teffect_script: undefined,\n\t};\n}\n\n/** Reuses scan offsets after bare-const normalization inserts characters. */\nexport function shift_scan_after_at_insertions(\n\tscan: SvelteEffectSourceScan,\n\tnormalized_source: string,\n\tinsert_positions: readonly number[],\n): SvelteEffectSourceScan {\n\tconst inserts = [...insert_positions].sort((left, right) => left - right);\n\tconst shift = (offset: number) => offset + count_insertions_at_or_before(inserts, offset);\n\n\tconst shift_range = <T extends SourceRange>(range: T): T => ({\n\t\t...range,\n\t\tstart: shift(range.start),\n\t\tend: shift(range.end),\n\t});\n\n\tconst shift_attribute = (attribute: SourceAttribute): SourceAttribute => ({\n\t\t...shift_range(attribute),\n\t\tname: attribute.name,\n\t\tname_start: shift(attribute.name_start),\n\t\tname_end: shift(attribute.name_end),\n\t\tvalue: attribute.value,\n\t});\n\n\tconst shift_script = (script: ScriptRegion): ScriptRegion => {\n\t\tconst shifted = {\n\t\t\t...shift_range(script),\n\t\t\topening_tag_start: shift(script.opening_tag_start),\n\t\t\topening_tag_end: shift(script.opening_tag_end),\n\t\t\ttag_name_end: shift(script.tag_name_end),\n\t\t\tcontent_start: shift(script.content_start),\n\t\t\tcontent_end: shift(script.content_end),\n\t\t\tclosing_tag_start: shift(script.closing_tag_start),\n\t\t\tclosing_tag_end: shift(script.closing_tag_end),\n\t\t\tattributes_text: normalized_source.slice(\n\t\t\t\tshift(script.tag_name_end),\n\t\t\t\tshift(script.opening_tag_end) - 1,\n\t\t\t),\n\t\t\tattributes: script.attributes.map(shift_attribute),\n\t\t\ttext: normalized_source.slice(shift(script.content_start), shift(script.content_end)),\n\t\t\tis_module: script.is_module,\n\t\t\thas_lang: script.has_lang,\n\t\t\tlang: script.lang,\n\t\t\tis_typescript: script.is_typescript,\n\t\t\thas_effect: script.has_effect,\n\t\t\teffect_attribute: script.effect_attribute\n\t\t\t\t? shift_range(script.effect_attribute)\n\t\t\t\t: undefined,\n\t\t};\n\n\t\treturn shifted;\n\t};\n\n\tconst shift_expression = (expression: MarkupBraceExpression): MarkupBraceExpression => {\n\t\tconst open = shift(expression.open);\n\t\tconst close = shift(expression.close);\n\t\tconst inner_start = shift(expression.inner_start);\n\t\tconst inner_end = shift(expression.inner_end);\n\t\tconst inner = normalized_source.slice(inner_start, inner_end);\n\n\t\treturn {\n\t\t\topen,\n\t\t\tclose,\n\t\t\tinner_start,\n\t\t\tinner_end,\n\t\t\tinner,\n\t\t\texpression_text: inner.trim(),\n\t\t\tattribute_name: expression.attribute_name,\n\t\t};\n\t};\n\n\tconst scripts = scan.scripts.map(shift_script);\n\n\treturn {\n\t\tfilename: scan.filename,\n\t\tsource: normalized_source,\n\t\tscripts,\n\t\tstyles: scan.styles.map(shift_range),\n\t\tcomments: scan.comments.map(shift_range),\n\t\texcluded_ranges: scan.excluded_ranges.map(shift_range),\n\t\tmarkup_expressions: scan.markup_expressions.map(shift_expression),\n\t\tmarkup_binding_names: scan.markup_binding_names,\n\t\tbare_const_tags: [],\n\t\tinstance_script: scan.instance_script ? shift_script(scan.instance_script) : undefined,\n\t\teffect_script: scan.effect_script ? shift_script(scan.effect_script) : undefined,\n\t};\n}\n\nfunction count_insertions_at_or_before(\n\tinsert_positions: readonly number[],\n\toffset: number,\n): number {\n\tlet low = 0;\n\tlet high = insert_positions.length;\n\n\twhile (low < high) {\n\t\tconst middle = Math.floor((low + high) / 2);\n\n\t\tif ((insert_positions[middle] ?? Infinity) <= offset) {\n\t\t\tlow = middle + 1;\n\t\t} else {\n\t\t\thigh = middle;\n\t\t}\n\t}\n\n\treturn low;\n}\n\nfunction collect_fast_source_regions(source: string): SourceRegions | undefined {\n\tconst element_stack: string[] = [];\n\tconst scripts: ScriptRegion[] = [];\n\tconst styles: SourceRange[] = [];\n\tconst comments: SourceRange[] = [];\n\tconst opaque_ranges: SourceRange[] = [];\n\tlet optional_element_count = 0;\n\tlet cursor = 0;\n\n\twhile (cursor < source.length) {\n\t\tif (source.startsWith(\"<!--\", cursor)) {\n\t\t\tconst close = source.indexOf(\"-->\", cursor + 4);\n\n\t\t\tif (close === -1) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst comment = { start: cursor, end: close + 3 };\n\n\t\t\tcomments.push(comment);\n\t\t\tcursor = comment.end;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst char = source[cursor];\n\n\t\tif (char === \"&\") {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (char === \"{\") {\n\t\t\tconst close = find_fast_closing_brace(source, cursor);\n\n\t\t\tif (close === -1 || /^\\s*[#/:@]/.test(source.slice(cursor + 1, close))) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tcursor = close + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (char !== \"<\") {\n\t\t\tcursor += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst raw_name = read_raw_opening_name(source, cursor);\n\n\t\tif (raw_name) {\n\t\t\tif (element_stack.length > 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst raw_tag = locate_raw_tag(source, cursor, raw_name);\n\n\t\t\tif (!raw_tag || !is_fast_raw_opening(source, raw_tag)) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tif (raw_name === \"script\") {\n\t\t\t\tif (scripts.length > 0) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tscripts.push(make_fast_script_region(source, raw_tag));\n\t\t\t} else {\n\t\t\t\tif (styles.length > 0) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tstyles.push({ start: raw_tag.start, end: raw_tag.end });\n\t\t\t}\n\n\t\t\topaque_ranges.push({ start: raw_tag.start, end: raw_tag.end });\n\t\t\tcursor = raw_tag.end;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst tag = read_fast_ordinary_tag(source, cursor);\n\n\t\tif (!tag) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (tag.is_closing) {\n\t\t\tif (fast_void_tag_names.has(tag.name) || element_stack.at(-1) !== tag.name) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\telement_stack.pop();\n\n\t\t\tif (fast_optional_end_tag_names.has(tag.name)) {\n\t\t\t\toptional_element_count -= 1;\n\t\t\t}\n\t\t} else if (!tag.is_self_closing && !fast_void_tag_names.has(tag.name)) {\n\t\t\tif (optional_element_count > 0) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\telement_stack.push(tag.name);\n\n\t\t\tif (fast_optional_end_tag_names.has(tag.name)) {\n\t\t\t\toptional_element_count += 1;\n\t\t\t}\n\t\t}\n\n\t\tcursor = tag.end;\n\t}\n\n\tif (element_stack.length > 0) {\n\t\treturn undefined;\n\t}\n\n\treturn {\n\t\tscripts,\n\t\tstyles,\n\t\tcomments,\n\t\topaque_ranges,\n\t\tattribute_names: new Map(),\n\t\tmarkup_binding_names: new Set(),\n\t};\n}\n\nconst fast_void_tag_names = new Set([\n\t\"area\",\n\t\"base\",\n\t\"br\",\n\t\"col\",\n\t\"embed\",\n\t\"hr\",\n\t\"img\",\n\t\"input\",\n\t\"link\",\n\t\"meta\",\n\t\"param\",\n\t\"source\",\n\t\"track\",\n\t\"wbr\",\n]);\n\nconst fast_optional_end_tag_names = new Set([\n\t\"colgroup\",\n\t\"dd\",\n\t\"dt\",\n\t\"li\",\n\t\"optgroup\",\n\t\"option\",\n\t\"p\",\n\t\"rp\",\n\t\"rt\",\n\t\"tbody\",\n\t\"td\",\n\t\"tfoot\",\n\t\"th\",\n\t\"thead\",\n\t\"tr\",\n]);\n\nfunction read_fast_ordinary_tag(\n\tsource: string,\n\tstart: number,\n): { name: string; end: number; is_closing: boolean; is_self_closing: boolean } | undefined {\n\tlet cursor = start + 1;\n\tconst is_closing = source[cursor] === \"/\";\n\n\tif (is_closing) {\n\t\tcursor += 1;\n\t}\n\n\tconst name_start = cursor;\n\n\tif (!/[a-z]/.test(source[cursor] ?? \"\")) {\n\t\treturn undefined;\n\t}\n\n\twhile (/[a-z0-9-]/.test(source[cursor] ?? \"\")) {\n\t\tcursor += 1;\n\t}\n\n\tconst name = source.slice(name_start, cursor);\n\n\twhile (/\\s/.test(source[cursor] ?? \"\")) {\n\t\tcursor += 1;\n\t}\n\n\tconst is_self_closing = !is_closing && source[cursor] === \"/\";\n\n\tif (is_self_closing) {\n\t\tcursor += 1;\n\t}\n\n\tif (source[cursor] !== \">\") {\n\t\treturn undefined;\n\t}\n\n\treturn { name, end: cursor + 1, is_closing, is_self_closing };\n}\n\nfunction find_fast_closing_brace(source: string, open: number): number {\n\tlet depth = 1;\n\tlet cursor = open + 1;\n\n\twhile (cursor < source.length) {\n\t\tconst char = source[cursor];\n\n\t\tif (char === \"'\" || char === '\"') {\n\t\t\tconst close = skip_quoted_string(source, cursor, char);\n\n\t\t\tif (close === -1) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcursor = close + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (char === \"`\" || char === \"/\") {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif (char === \"{\") {\n\t\t\tdepth += 1;\n\t\t} else if (char === \"}\") {\n\t\t\tdepth -= 1;\n\n\t\t\tif (depth === 0) {\n\t\t\t\treturn cursor;\n\t\t\t}\n\t\t}\n\n\t\tcursor += 1;\n\t}\n\n\treturn -1;\n}\n\nfunction read_raw_opening_name(source: string, start: number): \"script\" | \"style\" | undefined {\n\tfor (const name of [\"script\", \"style\"] as const) {\n\t\tconst name_end = start + name.length + 1;\n\n\t\tif (\n\t\t\tsource.startsWith(`<${name}`, start) &&\n\t\t\t(source[name_end] === \">\" || /\\s/.test(source[name_end] ?? \"\"))\n\t\t) {\n\t\t\treturn name;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nfunction locate_raw_tag(\n\tsource: string,\n\tstart: number,\n\tname: \"script\" | \"style\",\n): LocatedRawTag | undefined {\n\tconst content_start = find_static_opening_tag_end(source, start, name);\n\n\tif (content_start === -1) {\n\t\treturn undefined;\n\t}\n\n\tconst opening_tag = source.slice(start, content_start);\n\tconst is_preprocessor_style = name === \"style\" && has_style_lang_attribute(opening_tag);\n\tconst parsed_style_end =\n\t\tname === \"style\"\n\t\t\t? find_style_closing_tag(source, content_start, is_preprocessor_style)\n\t\t\t: undefined;\n\tconst content_end =\n\t\tname === \"script\"\n\t\t\t? find_raw_closing_tag(source, content_start, name)\n\t\t\t: (parsed_style_end ??\n\t\t\t\t(is_preprocessor_style\n\t\t\t\t\t? find_raw_closing_tag(source, content_start, name)\n\t\t\t\t\t: undefined));\n\n\tif (!content_end) {\n\t\treturn undefined;\n\t}\n\n\treturn {\n\t\tname,\n\t\tstart,\n\t\tend: content_end.end,\n\t\tcontent_start,\n\t\tcontent_end: content_end.start,\n\t};\n}\n\nfunction has_style_lang_attribute(opening_tag: string): boolean {\n\ttry {\n\t\tconst ast = parse(`${opening_tag}</style>`, { modern: true, loose: true });\n\n\t\treturn (\n\t\t\tast.css?.attributes.some((attribute) => attribute.name.toLowerCase() === \"lang\") ??\n\t\t\tfalse\n\t\t);\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction find_raw_closing_tag(\n\tsource: string,\n\tstart: number,\n\tname: \"script\" | \"style\",\n): SourceRange | undefined {\n\tlet cursor = start;\n\n\twhile (cursor < source.length) {\n\t\tconst closing_start = source.indexOf(`</${name}`, cursor);\n\n\t\tif (closing_start === -1) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst closing_end = find_closing_tag_end_at(source, closing_start, name, false);\n\n\t\tif (closing_end !== undefined) {\n\t\t\treturn { start: closing_start, end: closing_end };\n\t\t}\n\n\t\tcursor = closing_start + name.length + 2;\n\t}\n\n\treturn undefined;\n}\n\nfunction find_static_opening_tag_end(\n\tsource: string,\n\tstart: number,\n\tname: \"script\" | \"style\",\n): number {\n\tlet cursor = start + name.length + 1;\n\tlet quote: string | undefined;\n\n\twhile (cursor < source.length) {\n\t\tconst char = source[cursor];\n\n\t\tif (quote) {\n\t\t\tif (char === quote) {\n\t\t\t\tquote = undefined;\n\t\t\t}\n\n\t\t\tcursor += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (char === '\"' || char === \"'\") {\n\t\t\tquote = char;\n\t\t\tcursor += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (\n\t\t\tchar === \"{\" ||\n\t\t\tchar === \"}\" ||\n\t\t\tchar === \"<\" ||\n\t\t\tsource.startsWith(\"/*\", cursor) ||\n\t\t\tsource.startsWith(\"//\", cursor)\n\t\t) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tif (char === \">\") {\n\t\t\treturn source.slice(start, cursor).trimEnd().endsWith(\"/\") ? -1 : cursor + 1;\n\t\t}\n\n\t\tcursor += 1;\n\t}\n\n\treturn -1;\n}\n\nfunction find_style_closing_tag(\n\tsource: string,\n\tstart: number,\n\tskip_line_comments: boolean,\n): SourceRange | undefined {\n\tlet cursor = start;\n\n\twhile (cursor < source.length) {\n\t\tconst char = source[cursor];\n\t\tconst identifier_end = skip_line_comments\n\t\t\t? find_css_identifier_end(source, cursor)\n\t\t\t: undefined;\n\n\t\tif (identifier_end !== undefined) {\n\t\t\tconst url_end = skip_css_url(source, cursor, identifier_end);\n\n\t\t\tif (url_end === -1) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tcursor = url_end === undefined ? identifier_end : url_end + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (char === '\"' || char === \"'\") {\n\t\t\tconst close = skip_quoted_string(source, cursor, char);\n\n\t\t\tif (close === -1) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tcursor = close + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (source.startsWith(\"/*\", cursor)) {\n\t\t\tconst close = skip_block_comment(source, cursor);\n\n\t\t\tif (close === -1) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tcursor = close + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (skip_line_comments && source.startsWith(\"//\", cursor)) {\n\t\t\tcursor = skip_line_comment(source, cursor) + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst closing_end = find_closing_tag_end_at(source, cursor, \"style\", false);\n\n\t\tif (closing_end !== undefined) {\n\t\t\treturn { start: cursor, end: closing_end };\n\t\t}\n\n\t\tcursor += 1;\n\t}\n\n\treturn undefined;\n}\n\nfunction find_css_identifier_end(source: string, start: number): number | undefined {\n\tconst first = source[start];\n\n\tif (!is_css_identifier_start(first)) {\n\t\treturn undefined;\n\t}\n\n\tlet cursor = start;\n\n\twhile (cursor < source.length) {\n\t\tconst char = source[cursor];\n\n\t\tif (is_css_identifier_character(char)) {\n\t\t\tcursor += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (char === \"\\\\\") {\n\t\t\tcursor = skip_css_escape(source, cursor);\n\t\t\tcontinue;\n\t\t}\n\n\t\tbreak;\n\t}\n\n\treturn cursor;\n}\n\nfunction skip_css_url(source: string, start: number, identifier_end: number): number | undefined {\n\tif (source.slice(start, identifier_end).toLowerCase() !== \"url\") {\n\t\treturn undefined;\n\t}\n\n\tlet cursor = skip_css_whitespace(source, identifier_end);\n\n\tif (source[cursor] !== \"(\") {\n\t\treturn undefined;\n\t}\n\n\tcursor = skip_css_whitespace(source, cursor + 1);\n\n\tconst quote = source[cursor];\n\n\tif (quote === '\"' || quote === \"'\") {\n\t\tconst close = skip_quoted_string(source, cursor, quote);\n\n\t\tif (close === -1) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tcursor = skip_css_url_trivia(source, close + 1);\n\n\t\tif (cursor === -1) {\n\t\t\treturn -1;\n\t\t}\n\n\t\treturn source[cursor] === \")\" ? cursor : -1;\n\t}\n\n\twhile (cursor < source.length) {\n\t\tconst char = source[cursor];\n\n\t\tif (char === \"\\\\\") {\n\t\t\tcursor = skip_css_escape(source, cursor);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (char === \")\") {\n\t\t\treturn cursor;\n\t\t}\n\n\t\tcursor += 1;\n\t}\n\n\treturn -1;\n}\n\nfunction skip_css_whitespace(source: string, start: number): number {\n\tlet cursor = start;\n\n\twhile (cursor < source.length && /[\\t\\n\\f\\r ]/.test(source[cursor] ?? \"\")) {\n\t\tcursor += 1;\n\t}\n\n\treturn cursor;\n}\n\nfunction skip_css_url_trivia(source: string, start: number): number {\n\tlet cursor = start;\n\n\twhile (cursor < source.length) {\n\t\tcursor = skip_css_whitespace(source, cursor);\n\n\t\tif (!source.startsWith(\"/*\", cursor)) {\n\t\t\treturn cursor;\n\t\t}\n\n\t\tconst close = skip_block_comment(source, cursor);\n\n\t\tif (close === -1) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tcursor = close + 1;\n\t}\n\n\treturn cursor;\n}\n\nfunction skip_css_escape(source: string, start: number): number {\n\treturn Math.min(start + 2, source.length);\n}\n\nfunction is_css_identifier_start(char: string | undefined): boolean {\n\treturn (\n\t\tchar !== undefined &&\n\t\t(/[A-Za-z_-]/.test(char) || char === \"\\\\\" || char.charCodeAt(0) >= 0x80)\n\t);\n}\n\nfunction is_css_identifier_character(char: string | undefined): boolean {\n\treturn char !== undefined && (/[A-Za-z0-9_-]/.test(char) || char.charCodeAt(0) >= 0x80);\n}\n\nfunction is_fast_raw_opening(source: string, raw_tag: LocatedRawTag): boolean {\n\tconst opening = source.slice(raw_tag.start, raw_tag.content_start);\n\n\tif (raw_tag.name === \"script\") {\n\t\treturn opening === \"<script>\";\n\t}\n\n\treturn /^<style(?:\\s+lang=(?:\"[A-Za-z0-9_-]+\"|'[A-Za-z0-9_-]+'|[A-Za-z0-9_-]+))?\\s*>$/.test(\n\t\topening,\n\t);\n}\n\nfunction make_fast_script_region(source: string, raw_tag: LocatedRawTag): ScriptRegion {\n\treturn {\n\t\tstart: raw_tag.start,\n\t\tend: raw_tag.end,\n\t\topening_tag_start: raw_tag.start,\n\t\topening_tag_end: raw_tag.content_start,\n\t\ttag_name_end: raw_tag.start + \"<script\".length,\n\t\tcontent_start: raw_tag.content_start,\n\t\tcontent_end: raw_tag.content_end,\n\t\tclosing_tag_start: raw_tag.content_end,\n\t\tclosing_tag_end: raw_tag.end,\n\t\tattributes_text: \"\",\n\t\tattributes: [],\n\t\ttext: source.slice(raw_tag.content_start, raw_tag.content_end),\n\t\tis_module: false,\n\t\thas_lang: false,\n\t\tlang: undefined,\n\t\tis_typescript: false,\n\t\thas_effect: false,\n\t\teffect_attribute: undefined,\n\t};\n}\n\nfunction make_svelte_parse_shadow(source: string): string {\n\tconst raw_tags = collect_shadow_raw_tags(source);\n\n\tif (!raw_tags) {\n\t\treturn source;\n\t}\n\n\tconst parts: string[] = [];\n\tlet cursor = 0;\n\n\tfor (const raw_tag of raw_tags) {\n\t\tparts.push(source.slice(cursor, raw_tag.content_start));\n\t\tparts.push(blank_source(source.slice(raw_tag.content_start, raw_tag.content_end)));\n\t\tcursor = raw_tag.content_end;\n\t}\n\n\tparts.push(source.slice(cursor));\n\n\treturn normalize_markup_yield_operators(parts.join(\"\"));\n}\n\nfunction normalize_markup_yield_operators(source: string): string {\n\tconst replacements: Array<SourceRange & { text: string }> = [];\n\tlet cursor = 0;\n\n\twhile (cursor < source.length) {\n\t\tconst open = source.indexOf(\"{\", cursor);\n\n\t\tif (open === -1) {\n\t\t\tbreak;\n\t\t}\n\n\t\tconst close = find_closing_brace(source, open);\n\n\t\tif (close === -1) {\n\t\t\tcursor = open + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst inner = source.slice(open + 1, close);\n\t\tconst trimmed = inner.trimStart();\n\n\t\tif (!/\\byield\\s*\\*/.test(inner) || /^@debug\\b/.test(trimmed)) {\n\t\t\tcursor = close + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst render_prefix = inner.match(/^(\\s*@render\\b\\s*)/)?.[0];\n\t\tconst text = render_prefix\n\t\t\t? render_prefix + \"x()\" + blank_source(inner.slice(render_prefix.length)).slice(3)\n\t\t\t: inner.replace(/\\byield\\s*\\*/g, blank_source);\n\n\t\treplacements.push({ start: open + 1, end: close, text });\n\t\tcursor = close + 1;\n\t}\n\n\tif (replacements.length === 0) {\n\t\treturn source;\n\t}\n\n\tconst parts: string[] = [];\n\tlet source_cursor = 0;\n\n\tfor (const replacement of replacements) {\n\t\tparts.push(source.slice(source_cursor, replacement.start), replacement.text);\n\t\tsource_cursor = replacement.end;\n\t}\n\n\tparts.push(source.slice(source_cursor));\n\n\treturn parts.join(\"\");\n}\n\nfunction collect_shadow_raw_tags(source: string): LocatedRawTag[] | undefined {\n\tconst raw_tags: LocatedRawTag[] = [];\n\tlet cursor = 0;\n\n\twhile (cursor < source.length) {\n\t\tif (source.startsWith(\"<!--\", cursor)) {\n\t\t\tconst close = source.indexOf(\"-->\", cursor + 4);\n\n\t\t\tif (close === -1) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tcursor = close + 3;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst char = source[cursor];\n\n\t\tif (char === \"{\") {\n\t\t\tconst close = find_closing_brace(source, cursor);\n\n\t\t\tif (close === -1) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tcursor = close + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (char !== \"<\") {\n\t\t\tcursor += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst rcdata_name = read_rcdata_opening_name(source, cursor);\n\n\t\tif (rcdata_name) {\n\t\t\tconst content_start = find_markup_tag_end(source, cursor);\n\t\t\tconst closing_tag =\n\t\t\t\tcontent_start === -1\n\t\t\t\t\t? undefined\n\t\t\t\t\t: find_rcdata_closing_tag(source, content_start, rcdata_name);\n\n\t\t\tif (!closing_tag) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tcursor = closing_tag.end;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst raw_name = read_raw_opening_name(source, cursor);\n\n\t\tif (raw_name) {\n\t\t\tconst raw_tag = locate_raw_tag(source, cursor, raw_name);\n\n\t\t\tif (!raw_tag) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\traw_tags.push(raw_tag);\n\t\t\tcursor = raw_tag.end;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst tag_end = find_markup_tag_end(source, cursor);\n\n\t\tif (tag_end === -1) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tcursor = tag_end;\n\t}\n\n\treturn raw_tags;\n}\n\nfunction read_rcdata_opening_name(source: string, start: number): \"textarea\" | \"title\" | undefined {\n\tfor (const name of [\"textarea\", \"title\"] as const) {\n\t\tconst name_end = start + name.length + 1;\n\t\tconst opening_name = source.slice(start, name_end).toLowerCase();\n\n\t\tif (\n\t\t\topening_name === `<${name}` &&\n\t\t\t(source[name_end] === \">\" || /\\s/.test(source[name_end] ?? \"\"))\n\t\t) {\n\t\t\treturn name;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nfunction find_rcdata_closing_tag(\n\tsource: string,\n\tstart: number,\n\tname: \"textarea\" | \"title\",\n): SourceRange | undefined {\n\tlet cursor = start;\n\n\twhile (cursor < source.length) {\n\t\tif (source[cursor] === \"{\") {\n\t\t\tconst close = find_closing_brace(source, cursor);\n\n\t\t\tif (close === -1) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tcursor = close + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst closing_end = find_closing_tag_end_at(source, cursor, name, true);\n\n\t\tif (closing_end !== undefined) {\n\t\t\treturn { start: cursor, end: closing_end };\n\t\t}\n\n\t\tcursor += 1;\n\t}\n\n\treturn undefined;\n}\n\nfunction find_closing_tag_end_at(\n\tsource: string,\n\tstart: number,\n\tname: string,\n\tcase_insensitive: boolean,\n): number | undefined {\n\tif (source[start] !== \"<\") {\n\t\treturn undefined;\n\t}\n\n\tconst prefix = source.slice(start, start + name.length + 2);\n\tconst expected = `</${name}`;\n\tconst matches = case_insensitive ? prefix.toLowerCase() === expected : prefix === expected;\n\n\tif (!matches) {\n\t\treturn undefined;\n\t}\n\n\tlet cursor = start + expected.length;\n\n\twhile (/\\s/.test(source[cursor] ?? \"\")) {\n\t\tcursor += 1;\n\t}\n\n\treturn source[cursor] === \">\" ? cursor + 1 : undefined;\n}\n\nfunction find_markup_tag_end(source: string, start: number): number {\n\tlet cursor = start + 1;\n\tlet quote: string | undefined;\n\n\twhile (cursor < source.length) {\n\t\tconst char = source[cursor];\n\n\t\tif (quote) {\n\t\t\tif (char === quote) {\n\t\t\t\tquote = undefined;\n\t\t\t}\n\n\t\t\tcursor += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (char === '\"' || char === \"'\") {\n\t\t\tquote = char;\n\t\t\tcursor += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (char === \"{\") {\n\t\t\tconst close = find_closing_brace(source, cursor);\n\n\t\t\tif (close === -1) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcursor = close + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (source.startsWith(\"/*\", cursor)) {\n\t\t\tconst close = skip_block_comment(source, cursor);\n\n\t\t\tif (close === -1) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcursor = close + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (source.startsWith(\"//\", cursor)) {\n\t\t\tcursor = skip_line_comment(source, cursor) + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (char === \">\") {\n\t\t\treturn cursor + 1;\n\t\t}\n\n\t\tif (char === \"<\") {\n\t\t\treturn -1;\n\t\t}\n\n\t\tcursor += 1;\n\t}\n\n\treturn -1;\n}\n\nfunction collect_source_regions(source: string, ast: AST.Root): SourceRegions {\n\tconst scripts = [ast.module, ast.instance]\n\t\t.filter((script): script is AST.Script => script != null)\n\t\t.map((script) => make_ast_script_region(source, script))\n\t\t.sort((left, right) => left.start - right.start);\n\tconst styles = ast.css ? [{ start: ast.css.start, end: ast.css.end }] : [];\n\tconst comments: SourceRange[] = [];\n\tconst opaque_ranges: SourceRange[] = [\n\t\t...scripts.map(({ start, end }) => ({ start, end })),\n\t\t...styles,\n\t\t...ast.comments.map(({ start, end }) => ({ start, end })),\n\t];\n\tconst attribute_names = new Map<number, string>();\n\tconst markup_binding_names = new Set<string>();\n\n\tcollect_fragment_regions(\n\t\tsource,\n\t\tast.fragment,\n\t\tcomments,\n\t\topaque_ranges,\n\t\tattribute_names,\n\t\tmarkup_binding_names,\n\t);\n\n\treturn {\n\t\tscripts,\n\t\tstyles,\n\t\tcomments,\n\t\topaque_ranges,\n\t\tattribute_names,\n\t\tmarkup_binding_names,\n\t};\n}\n\nfunction collect_fragment_regions(\n\tsource: string,\n\tfragment: AST.Fragment,\n\tcomments: SourceRange[],\n\topaque_ranges: SourceRange[],\n\tattribute_names: Map<number, string>,\n\tmarkup_binding_names: Set<string>,\n): void {\n\tfor (const node of fragment.nodes) {\n\t\tif (node.type === \"Comment\") {\n\t\t\tcomments.push({ start: node.start, end: node.end });\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (node.type === \"RegularElement\" && (node.name === \"script\" || node.name === \"style\")) {\n\t\t\topaque_ranges.push({ start: node.start, end: node.end });\n\t\t\tcontinue;\n\t\t}\n\n\t\tcollect_node_markup_binding_names(node, markup_binding_names);\n\t\tcollect_node_attribute_names(source, node, attribute_names, markup_binding_names);\n\t\tcollect_node_fragments(\n\t\t\tsource,\n\t\t\tnode,\n\t\t\tcomments,\n\t\t\topaque_ranges,\n\t\t\tattribute_names,\n\t\t\tmarkup_binding_names,\n\t\t);\n\t}\n}\n\nfunction collect_node_markup_binding_names(\n\tnode: AST.Fragment[\"nodes\"][number],\n\tmarkup_binding_names: Set<string>,\n): void {\n\tswitch (node.type) {\n\t\tcase \"EachBlock\":\n\t\t\tif (node.context) {\n\t\t\t\tcollect_markup_binding_pattern_names(node.context, markup_binding_names);\n\t\t\t}\n\n\t\t\tif (node.index) {\n\t\t\t\tmarkup_binding_names.add(node.index);\n\t\t\t}\n\n\t\t\treturn;\n\n\t\tcase \"AwaitBlock\":\n\t\t\tfor (const pattern of [node.value, node.error]) {\n\t\t\t\tif (pattern) {\n\t\t\t\t\tcollect_markup_binding_pattern_names(pattern, markup_binding_names);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\n\t\tcase \"SnippetBlock\":\n\t\t\tmarkup_binding_names.add(node.expression.name);\n\n\t\t\tfor (const parameter of node.parameters) {\n\t\t\t\tcollect_markup_binding_pattern_names(parameter, markup_binding_names);\n\t\t\t}\n\n\t\t\treturn;\n\n\t\tcase \"ConstTag\":\n\t\tcase \"DeclarationTag\":\n\t\t\tfor (const declaration of node.declaration.declarations) {\n\t\t\t\tcollect_markup_binding_pattern_names(declaration.id, markup_binding_names);\n\t\t\t}\n\n\t\t\treturn;\n\n\t\tdefault:\n\t\t\treturn;\n\t}\n}\n\nfunction collect_markup_binding_pattern_names(\n\tpattern: MarkupBindingPattern,\n\tmarkup_binding_names: Set<string>,\n): void {\n\tswitch (pattern.type) {\n\t\tcase \"Identifier\":\n\t\t\tmarkup_binding_names.add(pattern.name);\n\t\t\treturn;\n\n\t\tcase \"ArrayPattern\":\n\t\t\tfor (const element of pattern.elements) {\n\t\t\t\tif (element) {\n\t\t\t\t\tcollect_markup_binding_pattern_names(element, markup_binding_names);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\n\t\tcase \"ObjectPattern\":\n\t\t\tfor (const property of pattern.properties) {\n\t\t\t\tconst value = property.type === \"RestElement\" ? property.argument : property.value;\n\n\t\t\t\tcollect_markup_binding_pattern_names(value, markup_binding_names);\n\t\t\t}\n\n\t\t\treturn;\n\n\t\tcase \"RestElement\":\n\t\t\tcollect_markup_binding_pattern_names(pattern.argument, markup_binding_names);\n\t\t\treturn;\n\n\t\tcase \"AssignmentPattern\":\n\t\t\tcollect_markup_binding_pattern_names(pattern.left, markup_binding_names);\n\t\t\treturn;\n\n\t\tcase \"MemberExpression\":\n\t\t\treturn;\n\t}\n}\n\nfunction collect_node_fragments(\n\tsource: string,\n\tnode: AST.Fragment[\"nodes\"][number],\n\tcomments: SourceRange[],\n\topaque_ranges: SourceRange[],\n\tattribute_names: Map<number, string>,\n\tmarkup_binding_names: Set<string>,\n): void {\n\tif (\"fragment\" in node) {\n\t\tcollect_fragment_regions(\n\t\t\tsource,\n\t\t\tnode.fragment,\n\t\t\tcomments,\n\t\t\topaque_ranges,\n\t\t\tattribute_names,\n\t\t\tmarkup_binding_names,\n\t\t);\n\t}\n\n\tswitch (node.type) {\n\t\tcase \"IfBlock\":\n\t\t\tcollect_fragment_regions(\n\t\t\t\tsource,\n\t\t\t\tnode.consequent,\n\t\t\t\tcomments,\n\t\t\t\topaque_ranges,\n\t\t\t\tattribute_names,\n\t\t\t\tmarkup_binding_names,\n\t\t\t);\n\n\t\t\tif (node.alternate) {\n\t\t\t\tcollect_fragment_regions(\n\t\t\t\t\tsource,\n\t\t\t\t\tnode.alternate,\n\t\t\t\t\tcomments,\n\t\t\t\t\topaque_ranges,\n\t\t\t\t\tattribute_names,\n\t\t\t\t\tmarkup_binding_names,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn;\n\n\t\tcase \"EachBlock\":\n\t\t\tcollect_fragment_regions(\n\t\t\t\tsource,\n\t\t\t\tnode.body,\n\t\t\t\tcomments,\n\t\t\t\topaque_ranges,\n\t\t\t\tattribute_names,\n\t\t\t\tmarkup_binding_names,\n\t\t\t);\n\n\t\t\tif (node.fallback) {\n\t\t\t\tcollect_fragment_regions(\n\t\t\t\t\tsource,\n\t\t\t\t\tnode.fallback,\n\t\t\t\t\tcomments,\n\t\t\t\t\topaque_ranges,\n\t\t\t\t\tattribute_names,\n\t\t\t\t\tmarkup_binding_names,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn;\n\n\t\tcase \"AwaitBlock\":\n\t\t\tfor (const branch of [node.pending, node.then, node.catch]) {\n\t\t\t\tif (branch) {\n\t\t\t\t\tcollect_fragment_regions(\n\t\t\t\t\t\tsource,\n\t\t\t\t\t\tbranch,\n\t\t\t\t\t\tcomments,\n\t\t\t\t\t\topaque_ranges,\n\t\t\t\t\t\tattribute_names,\n\t\t\t\t\t\tmarkup_binding_names,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\n\t\tcase \"SnippetBlock\":\n\t\t\tcollect_fragment_regions(\n\t\t\t\tsource,\n\t\t\t\tnode.body,\n\t\t\t\tcomments,\n\t\t\t\topaque_ranges,\n\t\t\t\tattribute_names,\n\t\t\t\tmarkup_binding_names,\n\t\t\t);\n\t\t\treturn;\n\n\t\tdefault:\n\t\t\treturn;\n\t}\n}\n\nfunction collect_node_attribute_names(\n\tsource: string,\n\tnode: AST.Fragment[\"nodes\"][number],\n\tattribute_names: Map<number, string>,\n\tmarkup_binding_names: Set<string>,\n): void {\n\tif (!(\"attributes\" in node)) {\n\t\treturn;\n\t}\n\n\tfor (const attribute of node.attributes) {\n\t\tif (attribute.type === \"LetDirective\" && attribute.expression === null) {\n\t\t\tmarkup_binding_names.add(attribute.name);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (attribute.type === \"Attribute\") {\n\t\t\tcollect_attribute_value_names(attribute.value, attribute.name, attribute_names);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (attribute.type === \"StyleDirective\") {\n\t\t\tconst source_name = read_source_attribute_name(source, attribute.start, attribute.end);\n\n\t\t\tif (source_name) {\n\t\t\t\tcollect_attribute_value_names(attribute.value, source_name, attribute_names);\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(\"expression\" in attribute) || !attribute.expression) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst open = source.indexOf(\"{\", attribute.start);\n\n\t\tif (open < attribute.start || open >= attribute.end) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst source_name = read_source_attribute_name(source, attribute.start, attribute.end);\n\n\t\tif (source_name && source.slice(attribute.start, open).includes(\"=\")) {\n\t\t\tattribute_names.set(open, source_name);\n\t\t}\n\t}\n}\n\nfunction collect_attribute_value_names(\n\tvalue: AST.Attribute[\"value\"],\n\tattribute_name: string,\n\tattribute_names: Map<number, string>,\n): void {\n\tif (value === true) {\n\t\treturn;\n\t}\n\n\tconst parts = Array.isArray(value) ? value : [value];\n\tconst expression = parts.length === 1 ? parts[0] : undefined;\n\n\tif (expression?.type !== \"ExpressionTag\") {\n\t\treturn;\n\t}\n\n\tattribute_names.set(expression.start, attribute_name);\n}\n\nfunction read_source_attribute_name(\n\tsource: string,\n\tstart: number,\n\tend: number,\n): string | undefined {\n\treturn source.slice(start, end).match(/^[^\\s=]+/)?.[0];\n}\n\nfunction make_ast_script_region(source: string, script: AST.Script): ScriptRegion {\n\tconst tag_name_end = script.start + \"<script\".length;\n\tconst attributes = collect_ast_script_attributes(source, script, tag_name_end);\n\tconst content_start = get_program_offset(script.content, \"start\");\n\tconst content_end = get_program_offset(script.content, \"end\");\n\tconst lang = get_attribute(attributes, \"lang\")?.value?.toLowerCase();\n\tconst effect_attribute = get_attribute(attributes, \"effect\");\n\n\treturn {\n\t\tstart: script.start,\n\t\tend: script.end,\n\t\topening_tag_start: script.start,\n\t\topening_tag_end: content_start,\n\t\ttag_name_end,\n\t\tcontent_start,\n\t\tcontent_end,\n\t\tclosing_tag_start: content_end,\n\t\tclosing_tag_end: script.end,\n\t\tattributes_text: source.slice(tag_name_end, content_start - 1),\n\t\tattributes,\n\t\ttext: source.slice(content_start, content_end),\n\t\tis_module: script.context === \"module\",\n\t\thas_lang: get_attribute(attributes, \"lang\") !== undefined,\n\t\tlang,\n\t\tis_typescript: lang === \"ts\" || lang === \"typescript\",\n\t\thas_effect: effect_attribute !== undefined,\n\t\teffect_attribute: effect_attribute\n\t\t\t? { start: effect_attribute.start, end: effect_attribute.end }\n\t\t\t: undefined,\n\t};\n}\n\nfunction get_program_offset(program: AST.Script[\"content\"], key: \"start\" | \"end\"): number {\n\tif (key === \"start\" && \"start\" in program && typeof program.start === \"number\") {\n\t\treturn program.start;\n\t}\n\n\tif (key === \"end\" && \"end\" in program && typeof program.end === \"number\") {\n\t\treturn program.end;\n\t}\n\n\tthrow new Error(`Svelte script content has no ${key} offset`);\n}\n\nfunction collect_ast_script_attributes(\n\tsource: string,\n\tscript: AST.Script,\n\ttag_name_end: number,\n): SourceAttribute[] {\n\tlet previous_end = tag_name_end;\n\n\treturn script.attributes.map((attribute) => {\n\t\tconst name_start = attribute.start;\n\t\tconst source_name = read_source_attribute_name(source, attribute.start, attribute.end);\n\t\tconst name_end = name_start + (source_name?.length ?? attribute.name.length);\n\t\tlet start = attribute.start;\n\n\t\twhile (start > previous_end && /\\s/.test(source[start - 1] ?? \"\")) {\n\t\t\tstart -= 1;\n\t\t}\n\n\t\tprevious_end = attribute.end;\n\n\t\treturn {\n\t\t\tname: source_name ?? attribute.name,\n\t\t\tstart,\n\t\t\tend: attribute.end,\n\t\t\tname_start,\n\t\t\tname_end,\n\t\t\tvalue: get_static_attribute_value(attribute.value),\n\t\t};\n\t});\n}\n\nfunction get_static_attribute_value(value: AST.Attribute[\"value\"]): string | undefined {\n\tif (value === true) {\n\t\treturn undefined;\n\t}\n\n\tconst parts = Array.isArray(value) ? value : [value];\n\n\tif (!parts.every((part): part is AST.Text => part.type === \"Text\")) {\n\t\treturn undefined;\n\t}\n\n\treturn parts.map((part) => part.data).join(\"\");\n}\n\nfunction collect_scanned_markup_expressions(\n\tsource: string,\n\texcluded_ranges: readonly SourceRange[],\n\tattribute_names: ReadonlyMap<number, string>,\n): MarkupBraceExpression[] {\n\tconst expressions: MarkupBraceExpression[] = [];\n\tlet cursor = 0;\n\n\twhile (cursor < source.length) {\n\t\tconst open = source.indexOf(\"{\", cursor);\n\n\t\tif (open === -1) {\n\t\t\tbreak;\n\t\t}\n\n\t\tconst excluded_range = find_range_containing(excluded_ranges, open);\n\n\t\tif (excluded_range) {\n\t\t\tcursor = excluded_range.end;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst close = find_closing_brace(source, open);\n\n\t\tif (close === -1) {\n\t\t\tcursor = open + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst inner_start = open + 1;\n\t\tconst inner_end = close;\n\t\tconst inner = source.slice(inner_start, inner_end);\n\n\t\texpressions.push({\n\t\t\topen,\n\t\t\tclose,\n\t\t\tinner_start,\n\t\t\tinner_end,\n\t\t\tinner,\n\t\t\texpression_text: inner.trim(),\n\t\t\tattribute_name: attribute_names.get(open),\n\t\t});\n\n\t\tcursor = close + 1;\n\t}\n\n\treturn expressions;\n}\n\nfunction find_range_containing(\n\tranges: readonly SourceRange[],\n\tposition: number,\n): SourceRange | undefined {\n\tlet low = 0;\n\tlet high = ranges.length - 1;\n\n\twhile (low <= high) {\n\t\tconst mid = Math.floor((low + high) / 2);\n\t\tconst range = ranges[mid];\n\n\t\tif (position < range.start) {\n\t\t\thigh = mid - 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (position >= range.end) {\n\t\t\tlow = mid + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\treturn range;\n\t}\n\n\treturn undefined;\n}\n\nfunction make_bare_const_tag(\n\texpression: MarkupBraceExpression,\n): readonly BareConstDeclarationTag[] {\n\tif (!/^(\\s*)const\\s/.test(expression.inner)) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\t{\n\t\t\topen: expression.open,\n\t\t\tinsert_position: expression.open + 1,\n\t\t\texpression,\n\t\t},\n\t];\n}\n\nfunction merge_ranges(ranges: SourceRange[]): SourceRange[] {\n\tconst sorted = [...ranges].sort((a, b) => a.start - b.start);\n\tconst merged: SourceRange[] = [];\n\n\tfor (const range of sorted) {\n\t\tconst previous = merged.at(-1);\n\n\t\tif (!previous || range.start > previous.end) {\n\t\t\tmerged.push({ ...range });\n\t\t\tcontinue;\n\t\t}\n\n\t\tprevious.end = Math.max(previous.end, range.end);\n\t}\n\n\treturn merged;\n}\n\nfunction get_attribute(\n\tattributes: readonly SourceAttribute[],\n\tname: string,\n): SourceAttribute | undefined {\n\tconst normalized_name = name.toLowerCase();\n\n\treturn attributes.find((attribute) => attribute.name.toLowerCase() === normalized_name);\n}\n\nfunction find_closing_brace(source: string, open: number): number {\n\tconst closing_directive = source\n\t\t.slice(open + 1)\n\t\t.match(/^\\s*\\/(?:if|each|await|key|snippet)\\s*}/);\n\n\tif (closing_directive) {\n\t\treturn open + 1 + closing_directive[0].lastIndexOf(\"}\");\n\t}\n\n\tlet depth = 1;\n\tlet cursor = open + 1;\n\n\twhile (cursor < source.length) {\n\t\tconst char = source[cursor];\n\n\t\tif (char === \"'\" || char === '\"') {\n\t\t\tconst close = skip_quoted_string(source, cursor, char);\n\n\t\t\tif (close === -1) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcursor = close + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (char === \"`\") {\n\t\t\tconst close = skip_template_literal(source, cursor);\n\n\t\t\tif (close === -1) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcursor = close + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (char === \"/\" && source[cursor + 1] === \"/\") {\n\t\t\tcursor = skip_line_comment(source, cursor) + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (char === \"/\" && source[cursor + 1] === \"*\") {\n\t\t\tconst close = skip_block_comment(source, cursor);\n\n\t\t\tif (close === -1) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcursor = close + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (char === \"/\") {\n\t\t\treturn find_closing_brace_with_typescript(source, open, cursor);\n\t\t}\n\n\t\tif (char === \"{\") {\n\t\t\tdepth += 1;\n\t\t} else if (char === \"}\") {\n\t\t\tdepth -= 1;\n\n\t\t\tif (depth === 0) {\n\t\t\t\treturn cursor;\n\t\t\t}\n\t\t}\n\n\t\tcursor += 1;\n\t}\n\n\treturn -1;\n}\n\nfunction find_closing_brace_with_typescript(source: string, open: number, slash: number): number {\n\tlet candidate = source.indexOf(\"}\", slash + 1);\n\tlet candidate_index = 0;\n\tlet next_probe_index = 0;\n\tlet last_candidate = -1;\n\tlet last_probed_candidate = -1;\n\n\twhile (candidate !== -1) {\n\t\tlast_candidate = candidate;\n\n\t\tif (candidate_index === next_probe_index) {\n\t\t\tconst resolved = resolve_closing_brace_probe(source, open, slash, candidate);\n\n\t\t\tif (resolved !== -1) {\n\t\t\t\treturn resolved;\n\t\t\t}\n\n\t\t\tlast_probed_candidate = candidate;\n\t\t\tnext_probe_index = next_probe_index * 2 + 1;\n\t\t}\n\n\t\tcandidate_index += 1;\n\t\tcandidate = source.indexOf(\"}\", candidate + 1);\n\t}\n\n\tif (last_candidate !== last_probed_candidate) {\n\t\treturn resolve_closing_brace_probe(source, open, slash, last_candidate);\n\t}\n\n\treturn -1;\n}\n\nfunction resolve_closing_brace_probe(\n\tsource: string,\n\topen: number,\n\tslash: number,\n\tcandidate: number,\n): number {\n\tif (candidate === -1) {\n\t\treturn -1;\n\t}\n\n\tconst probe = parse_closing_brace_probe(source, open, candidate);\n\n\tif (probe.is_exact) {\n\t\treturn candidate;\n\t}\n\n\tif (probe.close < slash || probe.close >= candidate || source[probe.close] !== \"}\") {\n\t\treturn -1;\n\t}\n\n\tconst exact_probe = parse_closing_brace_probe(source, open, probe.close);\n\n\treturn exact_probe.is_exact ? probe.close : -1;\n}\n\nfunction parse_closing_brace_probe(\n\tsource: string,\n\topen: number,\n\tcandidate: number,\n): { close: number; is_exact: boolean } {\n\tconst generator_prefix = \"function* __SER__(){\";\n\tconst boundary_name = \"__SER___expression_boundary\";\n\tconst boundary_statement = `\\nconst ${boundary_name} = 0;`;\n\tconst tail = adapt_svelte_directive_tail(source.slice(open + 1, candidate + 1));\n\tconst source_file = ts.createSourceFile(\n\t\t\"svelte-expression.ts\",\n\t\tgenerator_prefix + tail + boundary_statement,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tts.ScriptKind.TS,\n\t) as ParsedSourceFile;\n\tconst declaration = source_file.statements[0];\n\tconst boundary = source_file.statements[1];\n\tconst boundary_declaration =\n\t\tboundary && ts.isVariableStatement(boundary)\n\t\t\t? boundary.declarationList.declarations[0]\n\t\t\t: undefined;\n\tconst has_boundary =\n\t\tboundary_declaration?.name !== undefined &&\n\t\tts.isIdentifier(boundary_declaration.name) &&\n\t\tboundary_declaration.name.text === boundary_name;\n\tconst has_unterminated_regex = source_file.parseDiagnostics?.some(\n\t\t(diagnostic) => diagnostic.code === 1161,\n\t);\n\n\tif (!declaration || !ts.isFunctionDeclaration(declaration) || !declaration.body) {\n\t\treturn { close: -1, is_exact: false };\n\t}\n\n\tconst close = open + declaration.body.end - generator_prefix.length;\n\n\treturn {\n\t\tclose,\n\t\tis_exact: close === candidate && has_boundary && !has_unterminated_regex,\n\t};\n}\n\nfunction adapt_svelte_directive_tail(tail: string): string {\n\tconst const_directive = tail.match(/^(\\s*)@(?=const\\b)/);\n\n\tif (const_directive) {\n\t\tconst at = const_directive[1].length;\n\n\t\treturn tail.slice(0, at) + \" \" + tail.slice(at + 1);\n\t}\n\n\tconst prefix = tail.match(\n\t\t/^\\s*(?:(?:#(?:if|each|await|key|snippet)|@(?:render|html|debug|attach)|:(?:else\\s+if|else|then|catch))\\b\\s*|\\.\\.\\.\\s*)/,\n\t)?.[0];\n\n\tif (!prefix) {\n\t\treturn tail;\n\t}\n\n\treturn blank_source(prefix) + tail.slice(prefix.length);\n}\n\nfunction skip_quoted_string(source: string, start: number, quote: string): number {\n\tfor (let cursor = start + 1; cursor < source.length; cursor += 1) {\n\t\tif (source[cursor] === \"\\\\\") {\n\t\t\tcursor += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (source[cursor] === quote) {\n\t\t\treturn cursor;\n\t\t}\n\t}\n\n\treturn -1;\n}\n\nfunction skip_template_literal(source: string, start: number): number {\n\tlet cursor = start + 1;\n\n\twhile (cursor < source.length) {\n\t\tif (source[cursor] === \"\\\\\") {\n\t\t\tcursor += 2;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (source[cursor] === \"`\") {\n\t\t\treturn cursor;\n\t\t}\n\n\t\tif (source[cursor] === \"$\" && source[cursor + 1] === \"{\") {\n\t\t\tconst close = find_closing_brace(source, cursor + 1);\n\n\t\t\tif (close === -1) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\tcursor = close + 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tcursor += 1;\n\t}\n\n\treturn -1;\n}\n\nfunction skip_line_comment(source: string, start: number): number {\n\tfor (let cursor = start + 2; cursor < source.length; cursor += 1) {\n\t\tconst char = source[cursor];\n\n\t\tif (char === \"\\n\" || char === \"\\r\" || char === \"\\u2028\" || char === \"\\u2029\") {\n\t\t\treturn cursor;\n\t\t}\n\t}\n\n\treturn source.length;\n}\n\nfunction skip_block_comment(source: string, start: number): number {\n\tconst close = source.indexOf(\"*/\", start + 2);\n\n\treturn close === -1 ? -1 : close + 1;\n}\n"],"mappings":"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"}