svelte-effect-runtime 4.0.0 → 4.1.0

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 (150) hide show
  1. package/.dist/chunks/client-DbwVAMWm.js +530 -0
  2. package/.dist/chunks/client-DbwVAMWm.js.map +1 -0
  3. package/.dist/chunks/compiler-Dpyu4Owd.js +412 -0
  4. package/.dist/chunks/compiler-Dpyu4Owd.js.map +1 -0
  5. package/.dist/chunks/descriptors-q909VWyR.js +216 -0
  6. package/.dist/chunks/descriptors-q909VWyR.js.map +1 -0
  7. package/.dist/chunks/diagnostics-DLwwrBWb.js +359 -0
  8. package/.dist/chunks/diagnostics-DLwwrBWb.js.map +1 -0
  9. package/.dist/chunks/dispatcher-CTWINW5I.js +534 -0
  10. package/.dist/chunks/dispatcher-CTWINW5I.js.map +1 -0
  11. package/.dist/chunks/dispatcher-pZPzarul.js +23 -0
  12. package/.dist/chunks/dispatcher-pZPzarul.js.map +1 -0
  13. package/.dist/chunks/{errors-IJjsUwrE.js → errors-qhcbUH6o.js} +56 -44
  14. package/.dist/chunks/errors-qhcbUH6o.js.map +1 -0
  15. package/.dist/chunks/live-BW7xZKjb.js +146 -0
  16. package/.dist/chunks/live-BW7xZKjb.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-CPosEhGl.js} +3 -27
  22. package/.dist/chunks/runtime-CPosEhGl.js.map +1 -0
  23. package/.dist/chunks/{server-D1LcDnZE.js → server-yQrNoiCR.js} +15 -84
  24. package/.dist/chunks/server-yQrNoiCR.js.map +1 -0
  25. package/.dist/chunks/source-scan-cSawCvsg.js +1059 -0
  26. package/.dist/chunks/source-scan-cSawCvsg.js.map +1 -0
  27. package/.dist/chunks/{transform-jNUr65K9.js → transform-D7TTlPpK.js} +245 -371
  28. package/.dist/chunks/transform-D7TTlPpK.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 +42 -135
  42. package/.dist/dispatcher/scope.d.ts +36 -0
  43. package/.dist/dispatcher/types.d.ts +0 -151
  44. package/.dist/dispatcher.d.ts +2 -1
  45. package/.dist/dispatcher.js +2 -2
  46. package/.dist/errors.d.ts +44 -42
  47. package/.dist/generated/dispatcher.d.ts +6 -51
  48. package/.dist/generators.d.ts +2 -12
  49. package/.dist/internal/descriptors.d.ts +0 -16
  50. package/.dist/internal/generators.js +14 -9
  51. package/.dist/internal/generators.js.map +1 -1
  52. package/.dist/internal/live.d.ts +9 -0
  53. package/.dist/internal/remote-client.js +2 -2
  54. package/.dist/internal/remote-server.js +2 -2
  55. package/.dist/internal/schema.d.ts +0 -54
  56. package/.dist/live.d.ts +9 -26
  57. package/.dist/markup/event-attributes.d.ts +0 -32
  58. package/.dist/markup/promise.d.ts +1 -23
  59. package/.dist/markup/promise.js +2 -18
  60. package/.dist/markup/promise.js.map +1 -1
  61. package/.dist/markup/run.d.ts +1 -10
  62. package/.dist/markup/run.js +2 -11
  63. package/.dist/markup/run.js.map +1 -1
  64. package/.dist/markup/transform/apply.d.ts +5 -4
  65. package/.dist/markup/transform/classify.d.ts +2 -11
  66. package/.dist/markup/transform/constants.d.ts +2 -1
  67. package/.dist/markup/transform/effect-bindings.d.ts +2 -26
  68. package/.dist/markup/transform/effect-callbacks.d.ts +0 -20
  69. package/.dist/markup/transform/emit.d.ts +2 -11
  70. package/.dist/markup/transform/expressions.d.ts +0 -35
  71. package/.dist/markup/transform/scan.d.ts +3 -22
  72. package/.dist/markup/transform/types.d.ts +15 -127
  73. package/.dist/markup/transform.js +1 -1
  74. package/.dist/markup/value.d.ts +1 -18
  75. package/.dist/markup/value.js +2 -19
  76. package/.dist/markup/value.js.map +1 -1
  77. package/.dist/mod.d.ts +3 -8
  78. package/.dist/mod.js +5 -5
  79. package/.dist/mod.js.map +1 -1
  80. package/.dist/remote/cause-codec.d.ts +3 -37
  81. package/.dist/remote/client/command.d.ts +3 -17
  82. package/.dist/remote/client/form-data.d.ts +0 -7
  83. package/.dist/remote/client/form-enhance.d.ts +0 -7
  84. package/.dist/remote/client/form-transport.d.ts +14 -20
  85. package/.dist/remote/client/form.d.ts +4 -24
  86. package/.dist/remote/client/index.d.ts +2 -1
  87. package/.dist/remote/client/prerender.d.ts +6 -0
  88. package/.dist/remote/client/query-result.d.ts +2 -14
  89. package/.dist/remote/client/query.d.ts +8 -48
  90. package/.dist/remote/client/responses.d.ts +3 -27
  91. package/.dist/remote/client/types.d.ts +16 -110
  92. package/.dist/remote/client/utils.d.ts +0 -8
  93. package/.dist/remote/client.d.ts +2 -2
  94. package/.dist/remote/client.js +2 -2
  95. package/.dist/remote/effect.d.ts +6 -0
  96. package/.dist/remote/failures.d.ts +4 -0
  97. package/.dist/remote/query-update.d.ts +2 -0
  98. package/.dist/remote/resource.d.ts +25 -0
  99. package/.dist/remote/server.d.ts +5 -50
  100. package/.dist/remote/server.js +2 -2
  101. package/.dist/remote/shared.d.ts +6 -145
  102. package/.dist/remote/shared.js +6 -127
  103. package/.dist/remote/shared.js.map +1 -1
  104. package/.dist/runtime/transform.js +26 -31
  105. package/.dist/runtime/transform.js.map +1 -1
  106. package/.dist/script-transform/ast.d.ts +0 -46
  107. package/.dist/script-transform/imports.d.ts +3 -39
  108. package/.dist/script-transform/index.d.ts +2 -0
  109. package/.dist/script-transform/lower.d.ts +0 -9
  110. package/.dist/script-transform/runes.d.ts +0 -10
  111. package/.dist/script-transform/runtime-block.d.ts +0 -17
  112. package/.dist/script-transform/source.d.ts +0 -24
  113. package/.dist/script-transform/types.d.ts +9 -126
  114. package/.dist/server/effects.d.ts +4 -53
  115. package/.dist/server/factories.d.ts +7 -7
  116. package/.dist/server/index.d.ts +1 -1
  117. package/.dist/server/invalid.d.ts +0 -7
  118. package/.dist/server/live-snapshot.d.ts +5 -0
  119. package/.dist/server/remote-handler-context.d.ts +5 -0
  120. package/.dist/server/runtime.d.ts +6 -24
  121. package/.dist/server/schema.d.ts +0 -14
  122. package/.dist/server/transport.d.ts +2 -0
  123. package/.dist/server/types.d.ts +49 -26
  124. package/.dist/server/wrappers.d.ts +3 -40
  125. package/.dist/server.d.ts +1 -1
  126. package/.dist/server.js +200 -215
  127. package/.dist/server.js.map +1 -1
  128. package/.dist/yieldable.d.ts +1 -35
  129. package/package.json +2 -2
  130. package/.dist/chunks/client-DcZUV4rR.js +0 -653
  131. package/.dist/chunks/client-DcZUV4rR.js.map +0 -1
  132. package/.dist/chunks/compiler-BBPNyXmQ.js +0 -460
  133. package/.dist/chunks/compiler-BBPNyXmQ.js.map +0 -1
  134. package/.dist/chunks/dispatcher-DOx8iC6r.js +0 -505
  135. package/.dist/chunks/dispatcher-DOx8iC6r.js.map +0 -1
  136. package/.dist/chunks/dispatcher-H-Ia0Os4.js +0 -47
  137. package/.dist/chunks/dispatcher-H-Ia0Os4.js.map +0 -1
  138. package/.dist/chunks/errors-IJjsUwrE.js.map +0 -1
  139. package/.dist/chunks/live-BXAKre_4.js +0 -104
  140. package/.dist/chunks/live-BXAKre_4.js.map +0 -1
  141. package/.dist/chunks/remote-client-CVI4t66c.js.map +0 -1
  142. package/.dist/chunks/runtime-GBQz32DZ.js.map +0 -1
  143. package/.dist/chunks/schema-D9pct6Y5.js +0 -89
  144. package/.dist/chunks/schema-D9pct6Y5.js.map +0 -1
  145. package/.dist/chunks/server-D1LcDnZE.js.map +0 -1
  146. package/.dist/chunks/source-scan-C4PsggID.js +0 -341
  147. package/.dist/chunks/source-scan-C4PsggID.js.map +0 -1
  148. package/.dist/chunks/transform-jNUr65K9.js.map +0 -1
  149. package/.dist/remote/client/effect.d.ts +0 -29
  150. package/.dist/remote/client/failures.d.ts +0 -42
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform-D7TTlPpK.js","names":["create_source_map","is_yield_star_expression","create_source_map"],"sources":["../../../modules/svelte-effect-runtime/src/script-transform/imports.ts","../../../modules/svelte-effect-runtime/src/compiler/markup-identifiers.ts","../../../modules/svelte-effect-runtime/src/markup/transform/constants.ts","../../../modules/svelte-effect-runtime/src/markup/transform/apply.ts","../../../modules/svelte-effect-runtime/src/markup/transform/effect-bindings.ts","../../../modules/svelte-effect-runtime/src/markup/event-attributes.ts","../../../modules/svelte-effect-runtime/src/markup/transform/classify.ts","../../../modules/svelte-effect-runtime/src/markup/transform/expressions.ts","../../../modules/svelte-effect-runtime/src/markup/transform/effect-callbacks.ts","../../../modules/svelte-effect-runtime/src/script-transform/ast.ts","../../../modules/svelte-effect-runtime/src/markup/transform/emit.ts","../../../modules/svelte-effect-runtime/src/script-transform/source.ts","../../../modules/svelte-effect-runtime/src/script-transform/runes.ts","../../../modules/svelte-effect-runtime/src/markup/transform/scan.ts","../../../modules/svelte-effect-runtime/src/markup/transform/index.ts"],"sourcesContent":["import type { RuntimeImportBindings } from \"./types.ts\";\n\nimport ts from \"typescript\";\n\ninterface RuntimeImportOptions {\n\tneeds_dispatcher?: boolean;\n\tneeds_effect?: boolean;\n\tneeds_untrack?: boolean;\n\tneeds_on_destroy?: boolean;\n\tneeds_yield_success?: boolean;\n\tneeds_yieldable?: boolean;\n\tneeds_scope_ref?: boolean;\n}\n\nexport function make_imports(\n\thas_effect_import: boolean,\n\thas_dispatcher_import: boolean,\n\thas_untrack_import: boolean,\n\thas_on_destroy_import: boolean,\n\tbindings: RuntimeImportBindings = {\n\t\tcancel: \"__SER___cancel\",\n\t\tcomponent_scope_ref: \"ComponentScopeRef\",\n\t\tdispatcher: \"get_dispatcher\",\n\t\tdispatcher_value: \"__SER___dispatcher\",\n\t\teffect: \"Effect\",\n\t\ton_destroy: \"onDestroy\",\n\t\tprogram: \"__SER___program\",\n\t\tscope: \"__SER___scope\",\n\t\tuntrack: \"untrack\",\n\t\tyield_success: \"YieldSuccess\",\n\t\tyieldable: \"ToEffect\",\n\t},\n\toptions: RuntimeImportOptions = {},\n): string {\n\tconst needs_dispatcher = options.needs_dispatcher ?? true;\n\tconst needs_effect = options.needs_effect ?? true;\n\tconst needs_untrack = options.needs_untrack ?? true;\n\tconst needs_on_destroy = options.needs_on_destroy ?? false;\n\tconst needs_yield_success = options.needs_yield_success ?? false;\n\tconst needs_yieldable = options.needs_yieldable ?? false;\n\tconst needs_scope_ref = options.needs_scope_ref ?? true;\n\n\tconst generator_import = make_generator_import(\n\t\tbindings,\n\t\tneeds_dispatcher && !has_dispatcher_import,\n\t\tneeds_yieldable,\n\t\tneeds_yield_success,\n\t\tneeds_scope_ref,\n\t);\n\n\tconst untrack_import =\n\t\tbindings.untrack === \"untrack\"\n\t\t\t? `import { untrack } from \"svelte\";`\n\t\t\t: `import { untrack as ${bindings.untrack} } from \"svelte\";`;\n\n\tconst on_destroy_import =\n\t\tbindings.on_destroy === \"onDestroy\"\n\t\t\t? `import { onDestroy } from \"svelte\";`\n\t\t\t: `import { onDestroy as ${bindings.on_destroy} } from \"svelte\";`;\n\n\tconst effect_import = has_effect_import\n\t\t? false\n\t\t: bindings.effect === \"Effect\"\n\t\t\t? `import { Effect } from \"effect\";`\n\t\t\t: `import { Effect as ${bindings.effect} } from \"effect\";`;\n\n\treturn [\n\t\tgenerator_import,\n\t\tneeds_untrack && !has_untrack_import && untrack_import,\n\t\tneeds_on_destroy && !has_on_destroy_import && on_destroy_import,\n\t\tneeds_effect && effect_import,\n\t]\n\t\t.filter(Boolean)\n\t\t.join(\"\\n\");\n}\n\nfunction make_generator_import(\n\tbindings: RuntimeImportBindings,\n\tneeds_dispatcher: boolean,\n\tneeds_yieldable: boolean,\n\tneeds_yield_success: boolean,\n\tneeds_scope_ref: boolean,\n): string | false {\n\tconst specifiers = [\n\t\tneeds_dispatcher && make_named_import(\"get_dispatcher\", bindings.dispatcher),\n\t\tneeds_yieldable && make_named_import(\"ToEffect\", bindings.yieldable),\n\t\tneeds_yield_success && make_named_import(\"YieldSuccess\", bindings.yield_success, true),\n\t\tneeds_scope_ref && make_named_import(\"ComponentScopeRef\", bindings.component_scope_ref),\n\t].filter((specifier): specifier is string => specifier !== false);\n\n\tif (specifiers.length === 0) {\n\t\treturn false;\n\t}\n\n\treturn `import { ${specifiers.join(\", \")} } from \"svelte-effect-runtime/internal/generators\";`;\n}\n\nfunction make_named_import(imported_name: string, local_name: string, type_only = false): string {\n\tconst prefix = type_only ? \"type \" : \"\";\n\n\treturn imported_name === local_name\n\t\t? `${prefix}${imported_name}`\n\t\t: `${prefix}${imported_name} as ${local_name}`;\n}\n\nexport function has_local_import_binding(\n\tsource_file: ts.SourceFile,\n\tmodule_name: string,\n\tlocal_name: string,\n): boolean {\n\treturn source_file.statements.some((stmt) => {\n\t\tif (\n\t\t\t!ts.isImportDeclaration(stmt) ||\n\t\t\t!ts.isStringLiteral(stmt.moduleSpecifier) ||\n\t\t\tstmt.moduleSpecifier.text !== module_name\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst clause = stmt.importClause;\n\n\t\tif (!clause || clause.isTypeOnly) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (clause.name?.text === local_name) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst named_bindings = clause.namedBindings;\n\n\t\tif (!named_bindings) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (ts.isNamespaceImport(named_bindings)) {\n\t\t\treturn named_bindings.name.text === local_name;\n\t\t}\n\n\t\treturn named_bindings.elements.some(\n\t\t\t(element) => !element.isTypeOnly && element.name.text === local_name,\n\t\t);\n\t});\n}\n\nexport function collect_top_level_binding_names(source_file: ts.SourceFile): string[] {\n\treturn source_file.statements.flatMap(collect_statement_binding_names);\n}\n\nfunction collect_statement_binding_names(stmt: ts.Statement): string[] {\n\tif (ts.isImportDeclaration(stmt)) {\n\t\treturn collect_import_binding_names(stmt);\n\t}\n\n\tif (ts.isVariableStatement(stmt)) {\n\t\treturn stmt.declarationList.declarations.flatMap((decl) =>\n\t\t\tcollect_binding_name_text(decl.name),\n\t\t);\n\t}\n\n\tif (\n\t\tts.isFunctionDeclaration(stmt) ||\n\t\tts.isClassDeclaration(stmt) ||\n\t\tts.isInterfaceDeclaration(stmt) ||\n\t\tts.isTypeAliasDeclaration(stmt) ||\n\t\tts.isEnumDeclaration(stmt) ||\n\t\tts.isModuleDeclaration(stmt)\n\t) {\n\t\treturn stmt.name ? [stmt.name.text] : [];\n\t}\n\n\treturn [];\n}\n\nfunction collect_import_binding_names(stmt: ts.ImportDeclaration): string[] {\n\tconst clause = stmt.importClause;\n\n\tif (!clause) {\n\t\treturn [];\n\t}\n\n\treturn [\n\t\tclause.name?.text,\n\t\tclause.namedBindings && ts.isNamespaceImport(clause.namedBindings)\n\t\t\t? clause.namedBindings.name.text\n\t\t\t: undefined,\n\t\tclause.namedBindings && ts.isNamedImports(clause.namedBindings)\n\t\t\t? clause.namedBindings.elements.map((element) => element.name.text)\n\t\t\t: undefined,\n\t]\n\t\t.flat()\n\t\t.filter((name): name is string => name !== undefined);\n}\n\nfunction collect_binding_name_text(name: ts.BindingName): string[] {\n\tif (ts.isIdentifier(name)) {\n\t\treturn [name.text];\n\t}\n\n\treturn name.elements.flatMap((element) => {\n\t\tif (ts.isOmittedExpression(element)) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn collect_binding_name_text(element.name);\n\t});\n}\n","import type { SvelteEffectSourceScan } from \"./source-scan.ts\";\n\nimport ts from \"typescript\";\n\nconst wrapper_name = \"__SER___markup_identifiers\";\nconst identifier_names_by_scan = new WeakMap<SvelteEffectSourceScan, ReadonlySet<string>>();\n\nexport function collect_markup_identifier_names(\n\tsource_scan: SvelteEffectSourceScan,\n): ReadonlySet<string> {\n\tconst cached_names = identifier_names_by_scan.get(source_scan);\n\n\tif (cached_names) {\n\t\treturn cached_names;\n\t}\n\n\tconst names = new Set(source_scan.markup_binding_names);\n\n\tfor (const expression of source_scan.markup_expressions) {\n\t\tconst source_file = ts.createSourceFile(\n\t\t\t\"markup-identifiers.ts\",\n\t\t\tmake_identifier_parse_source(expression.inner),\n\t\t\tts.ScriptTarget.Latest,\n\t\t\ttrue,\n\t\t\tts.ScriptKind.TS,\n\t\t);\n\n\t\tcollect_source_file_identifier_names(source_file, names);\n\t}\n\n\tnames.delete(wrapper_name);\n\tidentifier_names_by_scan.set(source_scan, names);\n\n\treturn names;\n}\n\nfunction make_identifier_parse_source(expression: string): string {\n\tconst snippet = expression.match(/^(\\s*)#snippet\\s+([\\s\\S]*)$/);\n\n\tif (snippet) {\n\t\treturn `function* ${wrapper_name}() { ${snippet[1]}function ${snippet[2]} {} }`;\n\t}\n\n\treturn `function* ${wrapper_name}() { ${expression} }`;\n}\n\nfunction collect_source_file_identifier_names(\n\tsource_file: ts.SourceFile,\n\tnames: Set<string>,\n): void {\n\tconst visit = (node: ts.Node): void => {\n\t\tif (ts.isIdentifier(node) && !is_non_runtime_property_name(node)) {\n\t\t\tnames.add(node.text);\n\t\t}\n\n\t\tts.forEachChild(node, visit);\n\t};\n\n\tvisit(source_file);\n}\n\nfunction is_non_runtime_property_name(identifier: ts.Identifier): boolean {\n\tconst parent = identifier.parent;\n\n\treturn (\n\t\tis_within_type_node(identifier) ||\n\t\t(ts.isPropertyAccessExpression(parent) && parent.name === identifier) ||\n\t\t(ts.isPropertyAssignment(parent) && parent.name === identifier) ||\n\t\t(ts.isPropertySignature(parent) && parent.name === identifier) ||\n\t\t(ts.isMethodDeclaration(parent) && parent.name === identifier) ||\n\t\t(ts.isMethodSignature(parent) && parent.name === identifier) ||\n\t\t(ts.isGetAccessorDeclaration(parent) && parent.name === identifier) ||\n\t\t(ts.isSetAccessorDeclaration(parent) && parent.name === identifier) ||\n\t\t(ts.isPropertyDeclaration(parent) && parent.name === identifier) ||\n\t\t(ts.isEnumMember(parent) && parent.name === identifier) ||\n\t\t(ts.isBindingElement(parent) && parent.propertyName === identifier)\n\t);\n}\n\nfunction is_within_type_node(identifier: ts.Identifier): boolean {\n\tlet ancestor: ts.Node | undefined = identifier.parent;\n\n\twhile (ancestor) {\n\t\tif (ts.isTypeNode(ancestor)) {\n\t\t\treturn true;\n\t\t}\n\n\t\tancestor = ancestor.parent;\n\t}\n\n\treturn false;\n}\n","export const default_helper_bindings = {\n\tcodes: \"Code\",\n\tdispatcher: \"Dispatcher\",\n\tyieldable: \"ToEffect\",\n\tscope: \"__SER___scope\",\n} as const;\n","import type {\n\tHelperDeclaration,\n\tInsertion,\n\tMarkupTransformTarget,\n\tMarkupHelperBindings,\n\tMarkupRelocation,\n\tMarkupScopeWiring,\n\tPendingRelocation,\n\tReplacement,\n} from \"./types.ts\";\nimport type { SvelteEffectSourceScan } from \"$/compiler/source-scan.ts\";\nimport { collect_top_level_binding_names } from \"$/script-transform/imports.ts\";\nimport { collect_markup_identifier_names } from \"$/compiler/markup-identifiers.ts\";\nimport { default_helper_bindings } from \"./constants.ts\";\n\nimport type MagicString from \"magic-string\";\nimport ts from \"typescript\";\n\nexport function create_source_map(magic: MagicString, filename: string): Record<string, unknown> {\n\tconst map = magic.generateMap({\n\t\thires: true,\n\t\tincludeContent: true,\n\t\tsource: filename,\n\t});\n\n\treturn map as unknown as Record<string, unknown>;\n}\n\nexport function inject_helpers(\n\tmagic: MagicString,\n\tsource_scan: SvelteEffectSourceScan,\n\thelpers: HelperDeclaration[] = [],\n\tbindings: MarkupHelperBindings = default_helper_bindings,\n\tscope_wiring?: MarkupScopeWiring | undefined,\n): Insertion | undefined {\n\tconst import_helpers = unique_import_helpers(helpers);\n\tconst local_helpers = helpers.filter((helper) => !is_import_helper(helper));\n\n\tconst helper_segments: Array<{\n\t\ttext: string;\n\t\trelocation?: PendingRelocation;\n\t}> = [make_dispatcher_import(bindings, scope_wiring), ...import_helpers, ...local_helpers]\n\t\t.filter((helper): helper is string | HelperDeclaration => helper !== undefined)\n\t\t.map((helper) => (typeof helper === \"string\" ? { text: helper } : helper));\n\n\tif (helper_segments.length === 0) {\n\t\treturn undefined;\n\t}\n\n\tconst helper_block = helper_segments.map((segment) => segment.text).join(\"\\n\");\n\tconst scope_block = scope_wiring ? make_scope_wiring_block(bindings, scope_wiring) : undefined;\n\n\tconst instance_script = source_scan.instance_script;\n\n\tif (instance_script) {\n\t\t/**\n\t\t * The scope holder must be declared before any user statement so its\n\t\t * `onDestroy` runs during component initialisation, ahead of any\n\t\t * top-level `await`.\n\t\t */\n\t\tconst scope_text = scope_block ? `\\n${scope_block}\\n` : undefined;\n\n\t\tif (scope_text) {\n\t\t\tmagic.appendLeft(instance_script.content_start, scope_text);\n\t\t}\n\n\t\tconst text = `\\n${helper_block}\\n`;\n\n\t\tmagic.appendLeft(instance_script.content_end, text);\n\n\t\treturn {\n\t\t\tstart: instance_script.content_end,\n\t\t\ttext,\n\t\t\textra_insertions: scope_text ? [{ start: instance_script.content_start, text: scope_text }] : [],\n\t\t\trelocations: make_insertion_relocations(helper_segments, \"\\n\"),\n\t\t};\n\t} else {\n\t\tconst text = `<script>\\n${[scope_block, helper_block].filter(Boolean).join(\"\\n\")}\\n</script>\\n\\n`;\n\t\tconst helper_prefix = `<script>\\n${scope_block ? scope_block + \"\\n\" : \"\"}`;\n\n\t\tmagic.prepend(text);\n\n\t\treturn {\n\t\t\tstart: 0,\n\t\t\ttext,\n\t\t\trelocations: make_insertion_relocations(helper_segments, helper_prefix),\n\t\t};\n\t}\n}\n\nexport function make_markup_helper_bindings(\n\tsource_scan: SvelteEffectSourceScan,\n\ttarget: MarkupTransformTarget = \"client\",\n): {\n\tbindings: MarkupHelperBindings;\n\tname_allocator: { reserve(name: string): string };\n\tscope_wiring: MarkupScopeWiring | undefined;\n} {\n\tconst script_binding_names = source_scan.scripts.flatMap((script) =>\n\t\tcollect_script_binding_names(script.text),\n\t);\n\tconst markup_identifier_names = collect_markup_identifier_names(source_scan);\n\tconst name_allocator = make_name_allocator([\n\t\t...script_binding_names,\n\t\t...markup_identifier_names,\n\t]);\n\n\tconst bindings = {\n\t\tcodes: name_allocator.reserve(default_helper_bindings.codes),\n\t\tdispatcher: name_allocator.reserve(default_helper_bindings.dispatcher),\n\t\tyieldable: name_allocator.reserve(default_helper_bindings.yieldable),\n\t\tscope: default_helper_bindings.scope,\n\t};\n\n\tconst is_server_target = target === \"server\";\n\n\t/**\n\t * The script transform declares the component scope holder when it lowers\n\t * a `<script effect>`. When no script declares one — a markup-only\n\t * component for client/editor targets — reserve the names the injected scope\n\t * wiring needs so markup emit calls still have a scope to enter.\n\t */\n\tconst scope_present = script_binding_names.includes(default_helper_bindings.scope);\n\tconst scope_wiring = scope_present\n\t\t? undefined\n\t\t: {\n\t\t\t\tcomponent_scope_ref: name_allocator.reserve(\"ComponentScopeRef\"),\n\t\t\t\tget_dispatcher: name_allocator.reserve(\"get_dispatcher\"),\n\t\t\t\t...(is_server_target\n\t\t\t\t\t? {}\n\t\t\t\t\t: { on_destroy: name_allocator.reserve(\"onDestroy\") }),\n\t\t\t};\n\n\treturn {\n\t\tbindings,\n\t\tname_allocator,\n\t\tscope_wiring,\n\t};\n}\n\nexport function create_relocations(\n\treplacements: Replacement[],\n\thelper_insertion: Insertion | undefined,\n): MarkupRelocation[] {\n\tconst ordered_replacements = [...replacements].sort((left, right) => left.start - right.start);\n\tconst replacement_deltas = new Map<Replacement, number>();\n\tlet accumulated_delta = 0;\n\tlet replacement_delta_before_helper = 0;\n\tlet cursor = 0;\n\n\twhile (cursor < ordered_replacements.length) {\n\t\tconst start = ordered_replacements[cursor]?.start;\n\t\tlet group_end = cursor;\n\t\tlet group_delta = 0;\n\n\t\twhile (ordered_replacements[group_end]?.start === start) {\n\t\t\tconst replacement = ordered_replacements[group_end];\n\n\t\t\tif (replacement) {\n\t\t\t\treplacement_deltas.set(replacement, accumulated_delta);\n\t\t\t\tgroup_delta += replacement.text.length - (replacement.end - replacement.start);\n\t\t\t}\n\n\t\t\tgroup_end += 1;\n\t\t}\n\n\t\tif (helper_insertion && start !== undefined && start < helper_insertion.start) {\n\t\t\treplacement_delta_before_helper += group_delta;\n\t\t}\n\n\t\taccumulated_delta += group_delta;\n\t\tcursor = group_end;\n\t}\n\n\tconst insertion_shift_before = (point: number): number => {\n\t\tif (!helper_insertion) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst helper_shift = helper_insertion.start <= point ? helper_insertion.text.length : 0;\n\t\tconst extra_shift = (helper_insertion.extra_insertions ?? [])\n\t\t\t.filter((insertion) => insertion.start <= point)\n\t\t\t.reduce((shift, insertion) => shift + insertion.text.length, 0);\n\n\t\treturn helper_shift + extra_shift;\n\t};\n\n\tconst replacement_relocations = replacements.flatMap((replacement) => {\n\t\tif (!replacement.relocation) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst replacement_delta_before = replacement_deltas.get(replacement) ?? 0;\n\t\tconst delta_before = replacement_delta_before + insertion_shift_before(replacement.start);\n\t\tconst generated_start = replacement.start + delta_before;\n\n\t\treturn [\n\t\t\t{\n\t\t\t\toriginalStart: replacement.relocation.originalStart,\n\t\t\t\toriginalEnd: replacement.relocation.originalEnd,\n\t\t\t\tgeneratedStart:\n\t\t\t\t\tgenerated_start + replacement.relocation.generatedStartInReplacement,\n\t\t\t\tgeneratedEnd: generated_start + replacement.relocation.generatedEndInReplacement,\n\t\t\t},\n\t\t];\n\t});\n\n\tconst helper_generated_start =\n\t\t(helper_insertion?.start ?? 0) +\n\t\treplacement_delta_before_helper +\n\t\t(helper_insertion?.extra_insertions ?? [])\n\t\t\t.filter((insertion) => helper_insertion && insertion.start <= helper_insertion.start)\n\t\t\t.reduce((shift, insertion) => shift + insertion.text.length, 0);\n\tconst helper_relocations =\n\t\thelper_insertion?.relocations?.map((relocation) => ({\n\t\t\toriginalStart: relocation.originalStart,\n\t\t\toriginalEnd: relocation.originalEnd,\n\t\t\tgeneratedStart: helper_generated_start + relocation.generatedStartInReplacement,\n\t\t\tgeneratedEnd: helper_generated_start + relocation.generatedEndInReplacement,\n\t\t})) ?? [];\n\n\treturn [...replacement_relocations, ...helper_relocations];\n}\n\nfunction make_dispatcher_import(\n\tbindings: MarkupHelperBindings,\n\tscope_wiring?: MarkupScopeWiring | undefined,\n): string {\n\tconst dispatcher = make_import_specifier(\n\t\tdefault_helper_bindings.dispatcher,\n\t\tbindings.dispatcher,\n\t);\n\tconst codes = make_import_specifier(default_helper_bindings.codes, bindings.codes);\n\tconst yieldable = make_import_specifier(default_helper_bindings.yieldable, bindings.yieldable);\n\n\t/**\n\t * The scope holder's imports ride on the shared generators import so the\n\t * component keeps a single import from the runtime entrypoint.\n\t */\n\tconst scope_specifiers = scope_wiring\n\t\t? [\n\t\t\t\tmake_import_specifier(\"ComponentScopeRef\", scope_wiring.component_scope_ref),\n\t\t\t\tmake_import_specifier(\"get_dispatcher\", scope_wiring.get_dispatcher),\n\t\t\t]\n\t\t: [];\n\n\treturn `import { ${[dispatcher, codes, yieldable, ...scope_specifiers].join(\", \")} } from \"svelte-effect-runtime/internal/generators\";`;\n}\n\nfunction make_import_specifier(imported_name: string, local_name: string): string {\n\tif (imported_name === local_name) {\n\t\treturn imported_name;\n\t}\n\n\treturn `${imported_name} as ${local_name}`;\n}\n\nfunction make_scope_wiring_block(\n\tbindings: MarkupHelperBindings,\n\tscope_wiring: MarkupScopeWiring,\n): string {\n\tconst on_destroy_import = scope_wiring.on_destroy\n\t\t? make_import_specifier(\"onDestroy\", scope_wiring.on_destroy)\n\t\t: undefined;\n\tconst on_destroy_call = scope_wiring.on_destroy\n\t\t? `${scope_wiring.on_destroy}(() => ${bindings.scope}.dispose());`\n\t\t: undefined;\n\tconst import_statement = on_destroy_import\n\t\t? `import { ${on_destroy_import} } from \"svelte\";`\n\t\t: undefined;\n\n\treturn [\n\t\timport_statement,\n\t\t`const ${bindings.scope} = new ${scope_wiring.component_scope_ref}(${scope_wiring.get_dispatcher});`,\n\t\ton_destroy_call,\n\t].join(\"\\n\");\n}\n\nfunction make_insertion_relocations(\n\tsegments: Array<{\n\t\ttext: string;\n\t\trelocation?: PendingRelocation;\n\t}>,\n\tprefix: string,\n): PendingRelocation[] {\n\tconst relocations: PendingRelocation[] = [];\n\tlet offset = prefix.length;\n\n\tfor (const segment of segments) {\n\t\tif (segment.relocation) {\n\t\t\trelocations.push({\n\t\t\t\toriginalStart: segment.relocation.originalStart,\n\t\t\t\toriginalEnd: segment.relocation.originalEnd,\n\t\t\t\tgeneratedStartInReplacement:\n\t\t\t\t\toffset + segment.relocation.generatedStartInReplacement,\n\t\t\t\tgeneratedEndInReplacement: offset + segment.relocation.generatedEndInReplacement,\n\t\t\t});\n\t\t}\n\n\t\toffset += segment.text.length + 1;\n\t}\n\n\treturn relocations;\n}\n\nfunction unique_import_helpers(helpers: HelperDeclaration[]): HelperDeclaration[] {\n\tconst seen = new Set<string>();\n\n\treturn helpers.filter((helper) => {\n\t\tif (!is_import_helper(helper)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (seen.has(helper.text)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tseen.add(helper.text);\n\n\t\treturn true;\n\t});\n}\n\nfunction is_import_helper(helper: HelperDeclaration): boolean {\n\treturn helper.text.trimStart().startsWith(\"import \");\n}\n\nfunction collect_script_binding_names(script_content: string): string[] {\n\tconst source_file = ts.createSourceFile(\n\t\t\"markup-script.ts\",\n\t\tscript_content,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tts.ScriptKind.TS,\n\t);\n\n\treturn collect_top_level_binding_names(source_file);\n}\n\nfunction make_name_allocator(initial_names: readonly string[]): {\n\treserve(name: string): string;\n} {\n\tconst used_names = new Set(initial_names);\n\n\treturn {\n\t\treserve(name: string): string {\n\t\t\tlet candidate = name;\n\t\t\tlet suffix = 1;\n\n\t\t\twhile (used_names.has(candidate)) {\n\t\t\t\tcandidate = `${name}_${suffix}`;\n\t\t\t\tsuffix += 1;\n\t\t\t}\n\n\t\t\tused_names.add(candidate);\n\n\t\t\treturn candidate;\n\t\t},\n\t};\n}\n","import type { ScriptRegion } from \"$/compiler/source-scan.ts\";\nimport type { HelperDeclaration } from \"./types.ts\";\n\nimport ts from \"typescript\";\n\nconst effect_package_module = \"effect\";\nconst effect_direct_module = \"effect/Effect\";\nconst generated_effect_name = \"__SER___Effect\";\n\nexport interface EffectCallbackRewriteContext {\n\t/** Local names imported as the Effect object, such as `Effect` or `E`. */\n\teffect_object_names: ReadonlySet<string>;\n\t/** Namespace names imported from `effect/Effect`, such as `E.flatMap`. */\n\teffect_module_names: ReadonlySet<string>;\n\t/** Package namespace names imported from `effect`, such as `Fx.Effect`. */\n\teffect_package_names: ReadonlySet<string>;\n\t/** Direct `effect/Effect` imports mapped from local name to exported name. */\n\tdirect_members: ReadonlyMap<string, string>;\n\t/** Expression used for generated `gen`, `sync`, and upgraded direct calls. */\n\twrapper_expression: string;\n\t/** Import inserted when generated code needs a fresh Effect binding. */\n\twrapper_import: HelperDeclaration | undefined;\n}\n\ninterface EffectBindingState {\n\teffect_object_names: string[];\n\teffect_module_names: string[];\n\teffect_package_names: string[];\n\tdirect_members: Map<string, string>;\n\tlocal_names: Set<string>;\n\timplicit_effect_import: boolean;\n}\n\nexport function collect_effect_callback_bindings(\n\tscripts: readonly ScriptRegion[],\n): EffectCallbackRewriteContext {\n\tconst state = make_effect_binding_state();\n\n\tfor (const script of scripts) {\n\t\tconst source_file = ts.createSourceFile(\n\t\t\t\"component-script.ts\",\n\t\t\tscript.text,\n\t\t\tts.ScriptTarget.Latest,\n\t\t\ttrue,\n\t\t\tts.ScriptKind.TS,\n\t\t);\n\n\t\tcollect_source_file_bindings(source_file, state);\n\t}\n\n\tensure_implicit_effect_binding(state);\n\n\tconst wrapper = choose_effect_wrapper(state);\n\n\treturn {\n\t\teffect_object_names: new Set(state.effect_object_names),\n\t\teffect_module_names: new Set(state.effect_module_names),\n\t\teffect_package_names: new Set(state.effect_package_names),\n\t\tdirect_members: new Map(state.direct_members),\n\t\twrapper_expression: wrapper.expression,\n\t\twrapper_import: wrapper.import_text ? { text: wrapper.import_text } : undefined,\n\t};\n}\n\nfunction make_effect_binding_state(): EffectBindingState {\n\treturn {\n\t\teffect_object_names: [],\n\t\teffect_module_names: [],\n\t\teffect_package_names: [],\n\t\tdirect_members: new Map(),\n\t\tlocal_names: new Set(),\n\t\timplicit_effect_import: false,\n\t};\n}\n\nfunction collect_source_file_bindings(source_file: ts.SourceFile, state: EffectBindingState): void {\n\tfor (const statement of source_file.statements) {\n\t\tcollect_statement_binding(statement, state);\n\t}\n}\n\nfunction collect_statement_binding(statement: ts.Statement, state: EffectBindingState): void {\n\tif (ts.isImportDeclaration(statement)) {\n\t\tcollect_import_binding(statement, state);\n\t\treturn;\n\t}\n\n\tif (ts.isImportEqualsDeclaration(statement)) {\n\t\tstate.local_names.add(statement.name.text);\n\t\treturn;\n\t}\n\n\tif (ts.isVariableStatement(statement)) {\n\t\tfor (const declaration of statement.declarationList.declarations) {\n\t\t\tcollect_binding_name(declaration.name, state.local_names);\n\t\t}\n\n\t\treturn;\n\t}\n\n\tif (\n\t\tts.isFunctionDeclaration(statement) ||\n\t\tts.isClassDeclaration(statement) ||\n\t\tts.isInterfaceDeclaration(statement) ||\n\t\tts.isTypeAliasDeclaration(statement) ||\n\t\tts.isEnumDeclaration(statement) ||\n\t\tts.isModuleDeclaration(statement)\n\t) {\n\t\tif (statement.name) {\n\t\t\tstate.local_names.add(statement.name.text);\n\t\t}\n\t}\n}\n\nfunction collect_import_binding(statement: ts.ImportDeclaration, state: EffectBindingState): void {\n\tif (!ts.isStringLiteral(statement.moduleSpecifier)) {\n\t\treturn;\n\t}\n\n\tconst module_name = statement.moduleSpecifier.text;\n\tconst clause = statement.importClause;\n\n\tif (!clause) {\n\t\treturn;\n\t}\n\n\tif (clause.name) {\n\t\tstate.local_names.add(clause.name.text);\n\t}\n\n\tconst named_bindings = clause.namedBindings;\n\n\tif (!named_bindings) {\n\t\treturn;\n\t}\n\n\tif (ts.isNamespaceImport(named_bindings)) {\n\t\tcollect_namespace_import_binding(module_name, named_bindings.name.text, state);\n\t\treturn;\n\t}\n\n\tfor (const element of named_bindings.elements) {\n\t\tcollect_named_import_binding(module_name, element, state);\n\t}\n}\n\nfunction collect_namespace_import_binding(\n\tmodule_name: string,\n\tlocal_name: string,\n\tstate: EffectBindingState,\n): void {\n\tstate.local_names.add(local_name);\n\n\tif (module_name === effect_direct_module) {\n\t\tadd_ordered_name(state.effect_module_names, local_name);\n\t\treturn;\n\t}\n\n\tif (module_name === effect_package_module) {\n\t\tadd_ordered_name(state.effect_package_names, local_name);\n\t}\n}\n\nfunction collect_named_import_binding(\n\tmodule_name: string,\n\telement: ts.ImportSpecifier,\n\tstate: EffectBindingState,\n): void {\n\tconst imported_name = element.propertyName?.text ?? element.name.text;\n\tconst local_name = element.name.text;\n\n\tstate.local_names.add(local_name);\n\n\tif (module_name === effect_package_module && imported_name === \"Effect\") {\n\t\tadd_ordered_name(state.effect_object_names, local_name);\n\t\treturn;\n\t}\n\n\tif (module_name === effect_direct_module) {\n\t\tstate.direct_members.set(local_name, imported_name);\n\t}\n}\n\nfunction collect_binding_name(name: ts.BindingName, local_names: Set<string>): void {\n\tif (ts.isIdentifier(name)) {\n\t\tlocal_names.add(name.text);\n\t\treturn;\n\t}\n\n\tfor (const element of name.elements) {\n\t\tif (ts.isOmittedExpression(element)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tcollect_binding_name(element.name, local_names);\n\t}\n}\n\nfunction ensure_implicit_effect_binding(state: EffectBindingState): void {\n\tif (has_effect_binding(state) || state.local_names.has(\"Effect\")) {\n\t\treturn;\n\t}\n\n\tadd_ordered_name(state.effect_object_names, \"Effect\");\n\tstate.implicit_effect_import = true;\n}\n\nfunction has_effect_binding(state: EffectBindingState): boolean {\n\treturn (\n\t\tstate.effect_object_names.length > 0 ||\n\t\tstate.effect_module_names.length > 0 ||\n\t\tstate.effect_package_names.length > 0 ||\n\t\tstate.direct_members.size > 0\n\t);\n}\n\nfunction choose_effect_wrapper(state: EffectBindingState): {\n\texpression: string;\n\timport_text?: string;\n} {\n\tconst effect_object = state.effect_object_names[0];\n\n\tif (effect_object) {\n\t\treturn state.implicit_effect_import\n\t\t\t? {\n\t\t\t\t\texpression: effect_object,\n\t\t\t\t\timport_text: `import { Effect } from \"effect\";`,\n\t\t\t\t}\n\t\t\t: { expression: effect_object };\n\t}\n\n\tconst effect_module = state.effect_module_names[0];\n\n\tif (effect_module) {\n\t\treturn { expression: effect_module };\n\t}\n\n\tconst effect_package = state.effect_package_names[0];\n\n\tif (effect_package) {\n\t\treturn { expression: `${effect_package}.Effect` };\n\t}\n\n\tconst generated_name = make_generated_effect_name(state.local_names);\n\n\treturn {\n\t\texpression: generated_name,\n\t\timport_text: `import { Effect as ${generated_name} } from \"effect\";`,\n\t};\n}\n\nfunction make_generated_effect_name(local_names: ReadonlySet<string>): string {\n\tif (!local_names.has(generated_effect_name)) {\n\t\treturn generated_effect_name;\n\t}\n\n\tlet index = 1;\n\n\twhile (local_names.has(`${generated_effect_name}_${index}`)) {\n\t\tindex += 1;\n\t}\n\n\treturn `${generated_effect_name}_${index}`;\n}\n\nfunction add_ordered_name(names: string[], name: string): void {\n\tif (names.includes(name)) {\n\t\treturn;\n\t}\n\n\tnames.push(name);\n}\n","export function is_svelte_event_attribute(attribute: {\n\ttype: string;\n\tname?: string;\n\tvalue?: unknown;\n}): boolean {\n\tif (attribute.type !== \"Attribute\" || !attribute.name?.startsWith(\"on\")) {\n\t\treturn false;\n\t}\n\n\tconst value = attribute.value;\n\n\treturn (\n\t\t(value !== true && !Array.isArray(value)) ||\n\t\t(Array.isArray(value) && value.length === 1 && value[0]?.type === \"ExpressionTag\")\n\t);\n}\n\nexport function normalize_event_attribute_name(name: string): string {\n\tif (name.startsWith(\"on:\")) {\n\t\treturn `on:${name.slice(3).toLowerCase()}`;\n\t}\n\n\treturn name.toLowerCase();\n}\n","import { is_svelte_event_attribute, normalize_event_attribute_name } from \"../event-attributes.ts\";\nimport type { MarkupCandidate, TagKind } from \"./types.ts\";\nimport type { AST } from \"svelte/compiler\";\n\ninterface ClassifiedCandidate {\n\tcandidate: MarkupCandidate;\n\tkind: TagKind;\n\tattribute_name_replacement: AttributeNameReplacement | undefined;\n}\n\ninterface AttributeNameReplacement {\n\tstart: number;\n\tend: number;\n\ttext: string;\n}\n\nexport function classify_candidates(\n\tast: AST.Root,\n\tcandidates: MarkupCandidate[],\n): ClassifiedCandidate[] {\n\tconst by_placeholder = new Map(\n\t\tcandidates.map((candidate) => [candidate.placeholder, candidate]),\n\t);\n\n\tconst classified: ClassifiedCandidate[] = [];\n\tconst matched = new Set<string>();\n\n\twalk_ast(ast.fragment, by_placeholder, matched, classified);\n\n\treturn classified;\n}\n\nfunction walk_ast(\n\tfragment: AST.Fragment,\n\tcandidates: Map<string, MarkupCandidate>,\n\tmatched: Set<string>,\n\tclassified: ClassifiedCandidate[],\n): void {\n\tfor (const node of fragment.nodes) {\n\t\tvisit_ast_node(node, candidates, matched, classified);\n\t}\n}\n\nfunction visit_ast_node(\n\tnode: AST.Fragment[\"nodes\"][number],\n\tcandidates: Map<string, MarkupCandidate>,\n\tmatched: Set<string>,\n\tclassified: ClassifiedCandidate[],\n): void {\n\tswitch (node.type) {\n\t\tcase \"ExpressionTag\":\n\t\t\tclassify_expression(node.expression, \"plain\", candidates, matched, classified);\n\t\t\treturn;\n\n\t\tcase \"IfBlock\":\n\t\t\tclassify_expression(node.test, \"plain\", candidates, matched, classified);\n\t\t\twalk_ast(node.consequent, candidates, matched, classified);\n\t\t\tif (node.alternate) {\n\t\t\t\twalk_ast(node.alternate, candidates, matched, classified);\n\t\t\t}\n\t\t\treturn;\n\n\t\tcase \"EachBlock\":\n\t\t\tclassify_expression(node.expression, \"each\", candidates, matched, classified);\n\t\t\twalk_ast(node.body, candidates, matched, classified);\n\t\t\tif (node.fallback) {\n\t\t\t\twalk_ast(node.fallback, candidates, matched, classified);\n\t\t\t}\n\t\t\treturn;\n\n\t\tcase \"AwaitBlock\":\n\t\t\tclassify_expression(node.expression, \"await\", candidates, matched, classified);\n\t\t\tif (node.pending) {\n\t\t\t\twalk_ast(node.pending, candidates, matched, classified);\n\t\t\t}\n\t\t\tif (node.then) walk_ast(node.then, candidates, matched, classified);\n\t\t\tif (node.catch) walk_ast(node.catch, candidates, matched, classified);\n\t\t\treturn;\n\n\t\tcase \"RenderTag\":\n\t\t\tclassify_expression(node.expression, \"render\", candidates, matched, classified);\n\t\t\treturn;\n\n\t\tcase \"HtmlTag\":\n\t\t\tclassify_expression(node.expression, \"html\", candidates, matched, classified);\n\t\t\treturn;\n\n\t\tcase \"DebugTag\":\n\t\t\tclassify_debug_tag(node, candidates, matched, classified);\n\t\t\treturn;\n\n\t\tcase \"ConstTag\":\n\t\tcase \"DeclarationTag\":\n\t\t\tclassify_declaration_tag(node, candidates, matched, classified);\n\t\t\treturn;\n\n\t\tcase \"KeyBlock\":\n\t\t\tclassify_expression(node.expression, \"plain\", candidates, matched, classified);\n\t\t\twalk_ast(node.fragment, candidates, matched, classified);\n\t\t\treturn;\n\n\t\tcase \"SnippetBlock\":\n\t\t\twalk_ast(node.body, candidates, matched, classified);\n\t\t\treturn;\n\n\t\tcase \"SvelteElement\":\n\t\t\tclassify_expression(\n\t\t\t\tnode.tag as ExpressionLike,\n\t\t\t\t\"plain\",\n\t\t\t\tcandidates,\n\t\t\t\tmatched,\n\t\t\t\tclassified,\n\t\t\t);\n\t\t\tvisit_element_attributes(node, candidates, matched, classified);\n\t\t\twalk_ast(node.fragment, candidates, matched, classified);\n\t\t\treturn;\n\n\t\tcase \"RegularElement\":\n\t\tcase \"Component\":\n\t\tcase \"TitleElement\":\n\t\tcase \"SlotElement\":\n\t\tcase \"SvelteBody\":\n\t\tcase \"SvelteBoundary\":\n\t\tcase \"SvelteComponent\":\n\t\tcase \"SvelteDocument\":\n\t\tcase \"SvelteFragment\":\n\t\tcase \"SvelteHead\":\n\t\tcase \"SvelteSelf\":\n\t\tcase \"SvelteWindow\":\n\t\t\tvisit_element_attributes(node, candidates, matched, classified);\n\t\t\twalk_ast(node.fragment, candidates, matched, classified);\n\t\t\treturn;\n\n\t\tdefault:\n\t\t\treturn;\n\t}\n}\n\nfunction classify_debug_tag(\n\t_node: Extract<AST.Fragment[\"nodes\"][number], { type: \"DebugTag\" }>,\n\t_candidates: Map<string, MarkupCandidate>,\n\t_matched: Set<string>,\n\t_classified: ClassifiedCandidate[],\n): void {\n\treturn;\n}\n\nfunction classify_declaration_tag(\n\tnode: Extract<AST.Fragment[\"nodes\"][number], { type: \"ConstTag\" | \"DeclarationTag\" }>,\n\tcandidates: Map<string, MarkupCandidate>,\n\tmatched: Set<string>,\n\tclassified: ClassifiedCandidate[],\n): void {\n\tfor (const decl of node.declaration.declarations) {\n\t\tclassify_expression(decl as ExpressionLike, \"plain\", candidates, matched, classified);\n\t}\n}\n\ninterface ElementLikeNode {\n\ttype: string;\n\tattributes: Array<{\n\t\ttype: string;\n\t\tstart?: number;\n\t\tname?: string;\n\t\tvalue?: unknown;\n\t\texpression?: unknown;\n\t}>;\n\tfragment: AST.Fragment;\n}\n\nfunction visit_element_attributes(\n\tnode: ElementLikeNode,\n\tcandidates: Map<string, MarkupCandidate>,\n\tmatched: Set<string>,\n\tclassified: ClassifiedCandidate[],\n): void {\n\tfor (const attr of node.attributes) {\n\t\tif (is_svelte_event_attribute(attr)) {\n\t\t\tconst attribute_name_replacement = make_attribute_name_replacement(node, attr);\n\n\t\t\tvisit_attribute_value(\n\t\t\t\tattr.value as true | AST.ExpressionTag | Array<AST.Text | AST.ExpressionTag>,\n\t\t\t\t\"event\",\n\t\t\t\tcandidates,\n\t\t\t\tmatched,\n\t\t\t\tclassified,\n\t\t\t\tattribute_name_replacement,\n\t\t\t);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (attr.type === \"OnDirective\" && attr.expression) {\n\t\t\tconst attribute_name_replacement = make_directive_name_replacement(node, attr);\n\n\t\t\tclassify_expression(\n\t\t\t\tattr.expression as ExpressionLike,\n\t\t\t\t\"event\",\n\t\t\t\tcandidates,\n\t\t\t\tmatched,\n\t\t\t\tclassified,\n\t\t\t\tattribute_name_replacement,\n\t\t\t);\n\t\t\tcontinue;\n\t\t}\n\t}\n}\n\nfunction make_attribute_name_replacement(\n\tnode: ElementLikeNode,\n\tattr: { start?: number; name?: string },\n): AttributeNameReplacement | undefined {\n\tif (!attr.name || !should_normalize_event_attribute_name(node) || attr.start === undefined) {\n\t\treturn undefined;\n\t}\n\n\tconst normalized_name = normalize_event_attribute_name(attr.name);\n\n\tif (normalized_name === attr.name) {\n\t\treturn undefined;\n\t}\n\n\treturn {\n\t\tstart: attr.start,\n\t\tend: attr.start + attr.name.length,\n\t\ttext: normalized_name,\n\t};\n}\n\nfunction make_directive_name_replacement(\n\tnode: ElementLikeNode,\n\tattr: { start?: number; name?: string },\n): AttributeNameReplacement | undefined {\n\tif (!attr.name || !should_normalize_event_attribute_name(node) || attr.start === undefined) {\n\t\treturn undefined;\n\t}\n\n\tconst original_name = `on:${attr.name}`;\n\tconst normalized_name = normalize_event_attribute_name(original_name);\n\n\tif (normalized_name === original_name) {\n\t\treturn undefined;\n\t}\n\n\treturn {\n\t\tstart: attr.start,\n\t\tend: attr.start + original_name.length,\n\t\ttext: normalized_name,\n\t};\n}\n\nfunction should_normalize_event_attribute_name(node: ElementLikeNode): boolean {\n\treturn (\n\t\tnode.type !== \"Component\" && node.type !== \"SvelteComponent\" && node.type !== \"SvelteSelf\"\n\t);\n}\n\nfunction visit_attribute_value(\n\tvalue: true | AST.ExpressionTag | Array<AST.Text | AST.ExpressionTag>,\n\tkind: TagKind,\n\tcandidates: Map<string, MarkupCandidate>,\n\tmatched: Set<string>,\n\tclassified: ClassifiedCandidate[],\n\tattribute_name_replacement?: AttributeNameReplacement,\n): void {\n\tif (value === true) {\n\t\treturn;\n\t}\n\n\tif (Array.isArray(value)) {\n\t\tfor (const part of value) {\n\t\t\tif (part.type === \"ExpressionTag\") {\n\t\t\t\tclassify_expression(\n\t\t\t\t\tpart.expression,\n\t\t\t\t\tkind,\n\t\t\t\t\tcandidates,\n\t\t\t\t\tmatched,\n\t\t\t\t\tclassified,\n\t\t\t\t\tattribute_name_replacement,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn;\n\t}\n\n\tclassify_expression(\n\t\tvalue.expression,\n\t\tkind,\n\t\tcandidates,\n\t\tmatched,\n\t\tclassified,\n\t\tattribute_name_replacement,\n\t);\n}\n\ntype ExpressionLike = {\n\ttype: string;\n\tname?: string;\n\tcallee?: { type: string; name?: string };\n};\n\nfunction classify_expression(\n\texpression: ExpressionLike | null | undefined,\n\tkind: TagKind,\n\tcandidates: Map<string, MarkupCandidate>,\n\tmatched: Set<string>,\n\tclassified: ClassifiedCandidate[],\n\tattribute_name_replacement?: AttributeNameReplacement,\n): void {\n\tif (!expression) {\n\t\treturn;\n\t}\n\n\tconst found_candidates = find_candidates(expression, candidates);\n\n\tfor (const candidate of found_candidates) {\n\t\tif (matched.has(candidate.placeholder)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tmatched.add(candidate.placeholder);\n\t\tclassified.push({\n\t\t\tcandidate,\n\t\t\tkind: resolve_candidate_kind(candidate, kind),\n\t\t\tattribute_name_replacement,\n\t\t});\n\t}\n}\n\nfunction resolve_candidate_kind(candidate: MarkupCandidate, context_kind: TagKind): TagKind {\n\tif (candidate.key === \"render_argument\") {\n\t\treturn \"render_argument\";\n\t}\n\n\treturn context_kind;\n}\n\nfunction find_candidates(\n\texpression: ExpressionLike,\n\tcandidates: Map<string, MarkupCandidate>,\n): MarkupCandidate[] {\n\tconst found: MarkupCandidate[] = [];\n\tconst seen_nodes = new Set<unknown>();\n\tconst seen_placeholders = new Set<string>();\n\n\tvisit_expression_value(expression, candidates, seen_nodes, seen_placeholders, found);\n\n\treturn found;\n}\n\nfunction visit_expression_value(\n\tvalue: unknown,\n\tcandidates: Map<string, MarkupCandidate>,\n\tseen_nodes: Set<unknown>,\n\tseen_placeholders: Set<string>,\n\tfound: MarkupCandidate[],\n): void {\n\tif (Array.isArray(value)) {\n\t\tfor (const item of value) {\n\t\t\tvisit_expression_value(item, candidates, seen_nodes, seen_placeholders, found);\n\t\t}\n\n\t\treturn;\n\t}\n\n\tif (!is_record(value) || seen_nodes.has(value)) {\n\t\treturn;\n\t}\n\n\tseen_nodes.add(value);\n\n\tif (value.type === \"Identifier\" && typeof value.name === \"string\") {\n\t\tconst candidate = candidates.get(value.name);\n\n\t\tif (candidate && !seen_placeholders.has(candidate.placeholder)) {\n\t\t\tseen_placeholders.add(candidate.placeholder);\n\t\t\tfound.push(candidate);\n\t\t}\n\t}\n\n\tfor (const child of Object.values(value)) {\n\t\tvisit_expression_value(child, candidates, seen_nodes, seen_placeholders, found);\n\t}\n}\n\nfunction is_record(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null;\n}\n","import ts from \"typescript\";\n\nexport function strip_arrow_function(expr: string): {\n\tparams: string;\n\tbody: string;\n\tbody_start: number;\n\tbody_end: number;\n} {\n\tconst arrow_idx = expr.indexOf(\"=>\");\n\n\tif (arrow_idx === -1) {\n\t\treturn { params: \"()\", body: expr, body_start: 0, body_end: expr.length };\n\t}\n\n\tconst params = expr.slice(0, arrow_idx).trim();\n\tconst raw_body = expr.slice(arrow_idx + 2);\n\tconst leading_ws = raw_body.length - raw_body.trimStart().length;\n\tlet body_start = arrow_idx + 2 + leading_ws;\n\tlet body_end = expr.length - (raw_body.length - raw_body.trimEnd().length);\n\tlet body = expr.slice(body_start, body_end);\n\n\tif (body.startsWith(\"{\") && body.endsWith(\"}\")) {\n\t\tbody_start += 1;\n\t\tbody_end -= 1;\n\t\tbody = body.slice(1, -1);\n\t}\n\n\tconst body_leading_ws = body.length - body.trimStart().length;\n\tconst body_trailing_ws = body.length - body.trimEnd().length;\n\n\tbody_start += body_leading_ws;\n\tbody_end -= body_trailing_ws;\n\tbody = body.trim();\n\n\tif (body.endsWith(\";\")) {\n\t\tbody = body.slice(0, -1);\n\t\tbody_end -= 1;\n\t}\n\n\treturn { params, body, body_start, body_end };\n}\n\nexport function is_callback_function_expression(expr: string): boolean {\n\tconst wrapped = `const __SER___callback = ${expr};`;\n\tconst sf = ts.createSourceFile(\n\t\t\"callback.ts\",\n\t\twrapped,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tts.ScriptKind.TS,\n\t);\n\tconst stmt = sf.statements[0];\n\n\tif (!ts.isVariableStatement(stmt)) {\n\t\treturn false;\n\t}\n\n\tconst initializer = stmt.declarationList.declarations[0]?.initializer;\n\n\treturn (\n\t\tinitializer !== undefined &&\n\t\t(ts.isArrowFunction(initializer) || ts.isFunctionExpression(initializer))\n\t);\n}\n\nexport function analyze_event_body_yield_star(body: string): {\n\thas_top_level_yield_star: boolean;\n\thas_nested_invalid_yield_star: boolean;\n} {\n\tconst wrapped = `function* __SER___event() { ${body}; }`;\n\tconst sf = ts.createSourceFile(\n\t\t\"event.ts\",\n\t\twrapped,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tts.ScriptKind.TS,\n\t);\n\tconst stmt = sf.statements[0];\n\n\tif (!ts.isFunctionDeclaration(stmt) || !stmt.body) {\n\t\treturn {\n\t\t\thas_top_level_yield_star: false,\n\t\t\thas_nested_invalid_yield_star: /\\byield\\s*\\*/.test(body),\n\t\t};\n\t}\n\n\tconst result = {\n\t\thas_top_level_yield_star: false,\n\t\thas_nested_invalid_yield_star: false,\n\t};\n\n\tvisit_event_body(stmt.body, \"top_level\", result);\n\n\treturn result;\n}\n\nexport function collect_free_identifiers(expr_text: string): string[] {\n\tconst wrapped = `function* __SER___w() { return (${expr_text}); }`;\n\tlet sf: ts.SourceFile;\n\n\ttry {\n\t\tsf = ts.createSourceFile(\n\t\t\t\"expr.ts\",\n\t\t\twrapped,\n\t\t\tts.ScriptTarget.Latest,\n\t\t\ttrue,\n\t\t\tts.ScriptKind.TS,\n\t\t);\n\t} catch {\n\t\treturn [];\n\t}\n\n\tconst fn = sf.statements[0];\n\n\tif (!ts.isFunctionDeclaration(fn) || !fn.body) {\n\t\treturn [];\n\t}\n\n\tconst ids: string[] = [];\n\tconst locals = new Set<string>();\n\tconst seen = new Set<string>();\n\n\tvisit_ids(fn.body, locals, seen, ids);\n\n\treturn ids;\n}\n\nfunction visit_ids(node: ts.Node, locals: Set<string>, seen: Set<string>, ids: string[]): void {\n\tif (\n\t\tts.isArrowFunction(node) ||\n\t\tts.isFunctionExpression(node) ||\n\t\tts.isFunctionDeclaration(node)\n\t) {\n\t\tconst scoped = new Set(locals);\n\n\t\tif (ts.isFunctionDeclaration(node) && node.name) {\n\t\t\tscoped.add(node.name.text);\n\t\t}\n\n\t\tfor (const parameter of node.parameters) {\n\t\t\tadd_binding_names(parameter.name, scoped);\n\t\t}\n\n\t\tif (node.body) {\n\t\t\tvisit_ids(node.body, scoped, seen, ids);\n\t\t}\n\n\t\treturn;\n\t}\n\n\tif (ts.isVariableDeclaration(node)) {\n\t\tif (node.initializer) {\n\t\t\tvisit_ids(node.initializer, locals, seen, ids);\n\t\t}\n\n\t\tadd_binding_names(node.name, locals);\n\n\t\treturn;\n\t}\n\n\tif (ts.isTypeReferenceNode(node)) {\n\t\treturn;\n\t}\n\n\tif (ts.isIdentifier(node)) {\n\t\tif (\n\t\t\tnode.text === \"yield\" ||\n\t\t\tnode.text === \"undefined\" ||\n\t\t\tnode.text === \"null\" ||\n\t\t\tnode.text === \"true\" ||\n\t\t\tnode.text === \"false\" ||\n\t\t\tnode.text === \"this\"\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (is_property_access_name(node)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!locals.has(node.text) && !seen.has(node.text)) {\n\t\t\tseen.add(node.text);\n\t\t\tids.push(node.text);\n\t\t}\n\t\treturn;\n\t}\n\n\tnode.forEachChild((child) => visit_ids(child, locals, seen, ids));\n}\n\nfunction add_binding_names(name: ts.BindingName, locals: Set<string>): void {\n\tif (ts.isIdentifier(name)) {\n\t\tlocals.add(name.text);\n\t\treturn;\n\t}\n\n\tfor (const element of name.elements) {\n\t\tif (ts.isOmittedExpression(element)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tadd_binding_names(element.name, locals);\n\t}\n}\n\ntype EventYieldContext = \"top_level\" | \"nested_generator\" | \"nested_invalid\";\n\ninterface EventYieldAnalysis {\n\thas_top_level_yield_star: boolean;\n\thas_nested_invalid_yield_star: boolean;\n}\n\nfunction visit_event_body(\n\tnode: ts.Node,\n\tcontext: EventYieldContext,\n\tresult: EventYieldAnalysis,\n): void {\n\tif (is_yield_star_expression(node)) {\n\t\tif (context === \"top_level\") {\n\t\t\tresult.has_top_level_yield_star = true;\n\t\t} else if (context === \"nested_invalid\") {\n\t\t\tresult.has_nested_invalid_yield_star = true;\n\t\t}\n\n\t\tnode.forEachChild((child) => visit_event_body(child, context, result));\n\t\treturn;\n\t}\n\n\tif (is_nested_function_boundary(node)) {\n\t\tconst next_context = is_generator_function_boundary(node)\n\t\t\t? \"nested_generator\"\n\t\t\t: \"nested_invalid\";\n\n\t\tnode.forEachChild((child) => visit_event_body(child, next_context, result));\n\t\treturn;\n\t}\n\n\tnode.forEachChild((child) => visit_event_body(child, context, result));\n}\n\nfunction is_nested_function_boundary(node: ts.Node): boolean {\n\treturn (\n\t\tts.isArrowFunction(node) ||\n\t\tts.isFunctionExpression(node) ||\n\t\tts.isFunctionDeclaration(node) ||\n\t\tts.isMethodDeclaration(node) ||\n\t\tts.isGetAccessorDeclaration(node) ||\n\t\tts.isSetAccessorDeclaration(node)\n\t);\n}\n\nfunction is_generator_function_boundary(node: ts.Node): boolean {\n\treturn (\n\t\t(ts.isFunctionExpression(node) ||\n\t\t\tts.isFunctionDeclaration(node) ||\n\t\t\tts.isMethodDeclaration(node)) &&\n\t\tnode.asteriskToken !== undefined\n\t);\n}\n\nfunction is_yield_star_expression(node: ts.Node): boolean {\n\tif (ts.isYieldExpression(node)) {\n\t\treturn node.asteriskToken !== undefined;\n\t}\n\n\treturn (\n\t\tts.isBinaryExpression(node) &&\n\t\tnode.operatorToken.kind === ts.SyntaxKind.AsteriskToken &&\n\t\tts.isIdentifier(node.left) &&\n\t\tnode.left.text === \"yield\"\n\t);\n}\n\nfunction is_property_access_name(node: ts.Identifier): boolean {\n\tconst parent = node.parent;\n\n\treturn (\n\t\t(ts.isPropertyAccessExpression(parent) && parent.name === node) ||\n\t\t(ts.isPropertyAssignment(parent) && parent.name === node) ||\n\t\t(ts.isBindingElement(parent) && parent.propertyName === node) ||\n\t\tts.isImportSpecifier(parent) ||\n\t\tts.isExportSpecifier(parent)\n\t);\n}\n","import type { EffectCallbackRewriteContext } from \"./effect-bindings.ts\";\nimport { contains_top_level_yield_star } from \"$/detect.ts\";\nimport type { HelperDeclaration } from \"./types.ts\";\n\nimport MagicString from \"magic-string\";\nimport ts from \"typescript\";\n\nconst match_effect_members = new Map([\n\t[\"match\", \"matchEffect\"],\n\t[\"matchCause\", \"matchCauseEffect\"],\n]);\n\nconst effectful_callback_members = new Set([\n\t\"andThen\",\n\t\"catchAll\",\n\t\"catchAllCause\",\n\t\"catchCause\",\n\t\"catchTag\",\n\t\"flatMap\",\n\t\"forEach\",\n\t\"tap\",\n\t\"tapError\",\n\t\"tapErrorCause\",\n]);\n\nconst effectful_handler_members = new Set([\"matchCauseEffect\", \"matchEffect\", \"tapBoth\"]);\n\nconst effectful_handler_property_names = new Set([\"onFailure\", \"onSuccess\"]);\n\ninterface RewriteContext {\n\tsource_file: ts.SourceFile;\n\tsource_text: string;\n\tmagic: MagicString;\n\toffset: number;\n\tbindings: EffectCallbackRewriteContext;\n\tchanged: boolean;\n\tuses_wrapper: boolean;\n}\n\ninterface EffectMember {\n\tname: string;\n\tname_start: number;\n\tname_end: number;\n\tdirect: boolean;\n}\n\ntype EffectWrapperMember = \"gen\" | \"sync\";\n\nexport function normalize_effect_callback_yields(\n\texpr_text: string,\n\tbindings: EffectCallbackRewriteContext,\n): { expr_text: string; helpers: HelperDeclaration[] } {\n\tconst prefix = \"const __SER___expression = \";\n\tconst source_text = `${prefix}${expr_text};`;\n\tconst source_file = ts.createSourceFile(\n\t\t\"event-expression.ts\",\n\t\tsource_text,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tts.ScriptKind.TS,\n\t);\n\tconst statement = source_file.statements[0];\n\tconst magic = new MagicString(expr_text);\n\tconst context: RewriteContext = {\n\t\tsource_file,\n\t\tsource_text,\n\t\tmagic,\n\t\toffset: prefix.length,\n\t\tbindings,\n\t\tchanged: false,\n\t\tuses_wrapper: false,\n\t};\n\n\tif (!ts.isVariableStatement(statement)) {\n\t\treturn { expr_text, helpers: [] };\n\t}\n\n\tconst expression = statement.declarationList.declarations[0]?.initializer;\n\n\tif (!expression) {\n\t\treturn { expr_text, helpers: [] };\n\t}\n\n\tvisit_expression(expression, context);\n\n\tif (!context.changed) {\n\t\treturn { expr_text, helpers: [] };\n\t}\n\n\tconst helpers =\n\t\tcontext.uses_wrapper && bindings.wrapper_import ? [bindings.wrapper_import] : [];\n\n\treturn {\n\t\texpr_text: magic.toString(),\n\t\thelpers,\n\t};\n}\n\nfunction visit_expression(node: ts.Node, context: RewriteContext): void {\n\tif (is_non_generator_callback_with_top_level_yield(node)) {\n\t\treturn;\n\t}\n\n\tif (ts.isCallExpression(node)) {\n\t\trewrite_match_call(node, context);\n\t\trewrite_effectful_handler_call(node, context);\n\t\trewrite_effectful_callback_arguments(node, context);\n\t}\n\n\tnode.forEachChild((child) => {\n\t\tvisit_expression(child, context);\n\t});\n}\n\nfunction rewrite_match_call(call: ts.CallExpression, context: RewriteContext): void {\n\tconst member = get_effect_member(call.expression, context);\n\tconst upgraded_name = member && match_effect_members.get(member.name);\n\tconst options = get_last_object_argument(call);\n\n\tif (!member || !upgraded_name || !options) {\n\t\treturn;\n\t}\n\n\tconst handlers = get_handler_properties(options);\n\tconst should_upgrade = handlers.some(\n\t\t(handler) =>\n\t\t\thandler.callback && is_non_generator_callback_with_top_level_yield(handler.callback),\n\t);\n\n\tif (!should_upgrade) {\n\t\treturn;\n\t}\n\n\trewrite_effect_member_name(member, upgraded_name, context);\n\tcontext.changed = true;\n\n\tfor (const handler of handlers) {\n\t\tif (!handler.callback) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (is_non_generator_callback_with_top_level_yield(handler.callback)) {\n\t\t\trewrite_callback_to_effect_gen(handler.callback, context);\n\t\t} else {\n\t\t\trewrite_callback_to_effect_sync(handler.callback, context);\n\t\t}\n\t}\n}\n\nfunction rewrite_effectful_handler_call(call: ts.CallExpression, context: RewriteContext): void {\n\tconst member = get_effect_member(call.expression, context);\n\tconst options = get_last_object_argument(call);\n\n\tif (!member || !effectful_handler_members.has(member.name) || !options) {\n\t\treturn;\n\t}\n\n\tfor (const handler of get_handler_properties(options)) {\n\t\tif (handler.callback && is_non_generator_callback_with_top_level_yield(handler.callback)) {\n\t\t\trewrite_callback_to_effect_gen(handler.callback, context);\n\t\t}\n\t}\n}\n\nfunction rewrite_effectful_callback_arguments(\n\tcall: ts.CallExpression,\n\tcontext: RewriteContext,\n): void {\n\tconst member = get_effect_member(call.expression, context);\n\n\tif (!member || !effectful_callback_members.has(member.name)) {\n\t\treturn;\n\t}\n\n\tfor (const argument of call.arguments) {\n\t\tif (\n\t\t\tis_callback_expression(argument) &&\n\t\t\tis_non_generator_callback_with_top_level_yield(argument)\n\t\t) {\n\t\t\trewrite_callback_to_effect_gen(argument, context);\n\t\t}\n\t}\n}\n\nfunction rewrite_callback_to_effect_gen(\n\tcallback: ts.ArrowFunction | ts.FunctionExpression,\n\tcontext: RewriteContext,\n): void {\n\tif (is_async_function(callback)) {\n\t\treturn;\n\t}\n\n\tif (ts.isArrowFunction(callback)) {\n\t\trewrite_arrow_callback(callback, \"gen\", context);\n\t\treturn;\n\t}\n\n\trewrite_function_body(callback, \"gen\", context);\n}\n\nfunction rewrite_callback_to_effect_sync(\n\tcallback: ts.ArrowFunction | ts.FunctionExpression,\n\tcontext: RewriteContext,\n): void {\n\tif (is_async_function(callback)) {\n\t\treturn;\n\t}\n\n\tif (ts.isArrowFunction(callback)) {\n\t\trewrite_arrow_callback(callback, \"sync\", context);\n\t\treturn;\n\t}\n\n\trewrite_function_body(callback, \"sync\", context);\n}\n\nfunction rewrite_arrow_callback(\n\tcallback: ts.ArrowFunction,\n\twrapper: EffectWrapperMember,\n\tcontext: RewriteContext,\n): void {\n\tconst start = to_expr_pos(callback.getStart(context.source_file), context);\n\tconst end = to_expr_pos(callback.end, context);\n\tconst params_text = context.source_text\n\t\t.slice(\n\t\t\tcallback.getStart(context.source_file),\n\t\t\tcallback.equalsGreaterThanToken.getStart(context.source_file),\n\t\t)\n\t\t.trim();\n\tconst body_text = get_body_text(callback.body, context);\n\tconst rewritten_body = make_effect_body(callback.body, body_text, wrapper, context);\n\tconst replacement = `${params_text} => ${rewritten_body}`;\n\n\tcontext.magic.overwrite(start, end, replacement);\n\tcontext.changed = true;\n}\n\nfunction rewrite_function_body(\n\tcallback: ts.FunctionExpression,\n\twrapper: EffectWrapperMember,\n\tcontext: RewriteContext,\n): void {\n\tconst body_start = to_expr_pos(callback.body.getStart(context.source_file), context);\n\tconst body_end = to_expr_pos(callback.body.end, context);\n\tconst body_text = get_body_text(callback.body, context);\n\tconst rewritten_body = make_effect_body(callback.body, body_text, wrapper, context);\n\n\tcontext.magic.overwrite(body_start, body_end, `{ return ${rewritten_body}; }`);\n\tcontext.changed = true;\n}\n\nfunction make_effect_body(\n\tbody: ts.ConciseBody,\n\tbody_text: string,\n\twrapper: EffectWrapperMember,\n\tcontext: RewriteContext,\n): string {\n\tconst wrapper_access = make_effect_access(wrapper, context);\n\n\tif (wrapper === \"gen\") {\n\t\tif (ts.isBlock(body)) {\n\t\t\treturn `${wrapper_access}(function* () ${body_text})`;\n\t\t}\n\n\t\treturn `${wrapper_access}(function* () { return (${body_text}); })`;\n\t}\n\n\tif (ts.isBlock(body)) {\n\t\treturn `${wrapper_access}(() => ${body_text})`;\n\t}\n\n\treturn `${wrapper_access}(() => (${body_text}))`;\n}\n\nfunction get_body_text(body: ts.ConciseBody, context: RewriteContext): string {\n\treturn context.source_text.slice(body.getStart(context.source_file), body.end).trim();\n}\n\nfunction get_handler_properties(object_literal: ts.ObjectLiteralExpression): Array<{\n\tcallback: ts.ArrowFunction | ts.FunctionExpression | undefined;\n}> {\n\treturn object_literal.properties.flatMap((property) => {\n\t\tif (!ts.isPropertyAssignment(property)) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst name = get_property_name(property.name);\n\n\t\tif (!name || !effectful_handler_property_names.has(name)) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst callback = is_callback_expression(property.initializer)\n\t\t\t? property.initializer\n\t\t\t: undefined;\n\n\t\treturn [{ callback }];\n\t});\n}\n\nfunction get_last_object_argument(call: ts.CallExpression): ts.ObjectLiteralExpression | undefined {\n\tconst last_argument = call.arguments[call.arguments.length - 1];\n\n\tif (!last_argument || !ts.isObjectLiteralExpression(last_argument)) {\n\t\treturn undefined;\n\t}\n\n\treturn last_argument;\n}\n\nfunction get_effect_member(\n\texpression: ts.Expression,\n\tcontext: RewriteContext,\n): EffectMember | undefined {\n\tif (ts.isIdentifier(expression)) {\n\t\tconst direct_member = context.bindings.direct_members.get(expression.text);\n\n\t\tif (!direct_member) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn {\n\t\t\tname: direct_member,\n\t\t\tname_start: to_expr_pos(expression.getStart(context.source_file), context),\n\t\t\tname_end: to_expr_pos(expression.end, context),\n\t\t\tdirect: true,\n\t\t};\n\t}\n\n\tif (!ts.isPropertyAccessExpression(expression)) {\n\t\treturn undefined;\n\t}\n\n\tif (!is_effect_namespace_expression(expression.expression, context)) {\n\t\treturn undefined;\n\t}\n\n\treturn {\n\t\tname: expression.name.text,\n\t\tname_start: to_expr_pos(expression.name.getStart(context.source_file), context),\n\t\tname_end: to_expr_pos(expression.name.end, context),\n\t\tdirect: false,\n\t};\n}\n\nfunction rewrite_effect_member_name(\n\tmember: EffectMember,\n\tupgraded_name: string,\n\tcontext: RewriteContext,\n): void {\n\tif (member.direct) {\n\t\tcontext.magic.overwrite(\n\t\t\tmember.name_start,\n\t\t\tmember.name_end,\n\t\t\tmake_effect_access(upgraded_name, context),\n\t\t);\n\n\t\treturn;\n\t}\n\n\tcontext.magic.overwrite(member.name_start, member.name_end, upgraded_name);\n}\n\nfunction make_effect_access(member_name: string, context: RewriteContext): string {\n\tcontext.uses_wrapper = true;\n\n\treturn `${context.bindings.wrapper_expression}.${member_name}`;\n}\n\nfunction is_effect_namespace_expression(\n\texpression: ts.Expression,\n\tcontext: RewriteContext,\n): boolean {\n\tif (ts.isIdentifier(expression)) {\n\t\treturn (\n\t\t\tcontext.bindings.effect_object_names.has(expression.text) ||\n\t\t\tcontext.bindings.effect_module_names.has(expression.text)\n\t\t);\n\t}\n\n\tif (!ts.isPropertyAccessExpression(expression)) {\n\t\treturn false;\n\t}\n\n\tif (expression.name.text !== \"Effect\") {\n\t\treturn false;\n\t}\n\n\tif (!ts.isIdentifier(expression.expression)) {\n\t\treturn false;\n\t}\n\n\treturn context.bindings.effect_package_names.has(expression.expression.text);\n}\n\nfunction get_property_name(name: ts.PropertyName): string | undefined {\n\tif (ts.isIdentifier(name) || ts.isStringLiteral(name)) {\n\t\treturn name.text;\n\t}\n\n\treturn undefined;\n}\n\nfunction is_callback_expression(node: ts.Node): node is ts.ArrowFunction | ts.FunctionExpression {\n\treturn ts.isArrowFunction(node) || ts.isFunctionExpression(node);\n}\n\nfunction is_non_generator_callback_with_top_level_yield(\n\tnode: ts.Node,\n): node is ts.ArrowFunction | ts.FunctionExpression {\n\tif (!is_callback_expression(node)) {\n\t\treturn false;\n\t}\n\n\tif (ts.isFunctionExpression(node) && node.asteriskToken) {\n\t\treturn false;\n\t}\n\n\treturn contains_top_level_yield_star(node.body);\n}\n\nfunction is_async_function(node: ts.ArrowFunction | ts.FunctionExpression): boolean {\n\treturn (\n\t\tnode.modifiers?.some((modifier) => modifier.kind === ts.SyntaxKind.AsyncKeyword) ?? false\n\t);\n}\n\nfunction to_expr_pos(pos: number, context: RewriteContext): number {\n\treturn pos - context.offset;\n}\n","import ts from \"typescript\";\n\nexport function is_yield_star_expression(node: ts.Node): boolean {\n\treturn (\n\t\tts.isBinaryExpression(node) &&\n\t\tnode.operatorToken.kind === ts.SyntaxKind.AsteriskToken &&\n\t\tts.isIdentifier(node.left) &&\n\t\tnode.left.text === \"yield\"\n\t);\n}\n\nfunction is_function_boundary_node(node: ts.Node): boolean {\n\treturn (\n\t\tts.isArrowFunction(node) ||\n\t\tts.isFunctionDeclaration(node) ||\n\t\tts.isFunctionExpression(node) ||\n\t\tts.isMethodDeclaration(node) ||\n\t\tts.isGetAccessorDeclaration(node) ||\n\t\tts.isSetAccessorDeclaration(node)\n\t);\n}\n\nexport function contains_top_level_await(node: ts.Node): boolean {\n\tif (ts.isAwaitExpression(node)) {\n\t\treturn true;\n\t}\n\n\treturn node\n\t\t.getChildren()\n\t\t.some((child) => !is_function_boundary_node(child) && contains_top_level_await(child));\n}\n\nexport function collect_yield_star_nodes(node: ts.Node, on_found: (node: ts.Node) => void): void {\n\tif (is_function_boundary_node(node)) {\n\t\treturn;\n\t}\n\n\tif (is_yield_star_expression(node)) {\n\t\ton_found(node);\n\t\treturn;\n\t}\n\n\tnode.forEachChild((child) => {\n\t\tcollect_yield_star_nodes(child, on_found);\n\t});\n}\n\nexport function find_yield_star_node(node: ts.Node, on_found: (node: ts.Node) => void): void {\n\tif (is_function_boundary_node(node)) {\n\t\treturn;\n\t}\n\n\tif (is_yield_star_expression(node)) {\n\t\ton_found(node);\n\t\treturn;\n\t}\n\n\tnode.forEachChild((child) => {\n\t\tfind_yield_star_node(child, on_found);\n\t});\n}\n","import type {\n\tHelperDeclaration,\n\tMarkupCandidate,\n\tMarkupHelperBindings,\n\tMarkupNameAllocator,\n\tMarkupTransformTarget,\n\tPendingRelocation,\n\tReplacement,\n\tTagKind,\n} from \"./types.ts\";\nimport {\n\tanalyze_event_body_yield_star,\n\tcollect_free_identifiers,\n\tis_callback_function_expression,\n} from \"./expressions.ts\";\nimport { AsyncEffectInEventCallbackError, YieldStarInEventCallbackError } from \"$/errors.ts\";\nimport type { EffectCallbackRewriteContext } from \"./effect-bindings.ts\";\nimport { normalize_effect_callback_yields } from \"./effect-callbacks.ts\";\nimport { collect_yield_star_nodes } from \"$/script-transform/ast.ts\";\n\nimport ts from \"typescript\";\n\ninterface ClassifiedCandidate {\n\tcandidate: MarkupCandidate;\n\tkind: TagKind;\n\tattribute_name_replacement: AttributeNameReplacement | undefined;\n}\n\ninterface AttributeNameReplacement {\n\tstart: number;\n\tend: number;\n\ttext: string;\n}\n\ntype ExpressionRelocation = {\n\toriginalStart: number;\n\toriginalEnd: number;\n\tgeneratedStart: number;\n\tgeneratedEnd: number;\n};\n\nexport function emit_replacements(\n\tclassified: ClassifiedCandidate[],\n\teffect_context: EffectCallbackRewriteContext,\n\thelper_bindings: MarkupHelperBindings,\n\tname_allocator: MarkupNameAllocator,\n\ttarget: MarkupTransformTarget,\n): Replacement[] {\n\tconst expression_replacements = classified.map(({ candidate, kind }) =>\n\t\temit_replacement(candidate, kind, effect_context, helper_bindings, name_allocator, target),\n\t);\n\tconst attribute_replacements = unique_attribute_name_replacements(classified).map(\n\t\t(replacement) => ({\n\t\t\tstart: replacement.start,\n\t\t\tend: replacement.end,\n\t\t\ttext: replacement.text,\n\t\t}),\n\t);\n\n\treturn [...attribute_replacements, ...expression_replacements];\n}\n\nfunction unique_attribute_name_replacements(\n\tclassified: ClassifiedCandidate[],\n): AttributeNameReplacement[] {\n\tconst seen = new Set<string>();\n\n\treturn classified\n\t\t.map((entry) => entry.attribute_name_replacement)\n\t\t.filter((replacement): replacement is AttributeNameReplacement => {\n\t\t\tif (!replacement) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst key = `${replacement.start}:${replacement.end}:${replacement.text}`;\n\n\t\t\tif (seen.has(key)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tseen.add(key);\n\n\t\t\treturn true;\n\t\t});\n}\n\nfunction emit_replacement(\n\tcandidate: MarkupCandidate,\n\tkind: TagKind,\n\teffect_context: EffectCallbackRewriteContext,\n\thelper_bindings: MarkupHelperBindings,\n\tname_allocator: MarkupNameAllocator,\n\ttarget: MarkupTransformTarget,\n): Replacement {\n\tconst normalized = normalize_effect_callback_yields(candidate.expr_text, effect_context);\n\tconst normalized_candidate = {\n\t\t...candidate,\n\t\texpr_text: normalized.expr_text,\n\t};\n\tconst id = make_cache_id(candidate);\n\tconst id_text = JSON.stringify(id);\n\tconst helper_name = make_helper_name(candidate, name_allocator);\n\tconst is_server_target = target === \"server\";\n\n\tlet replacement_text: string;\n\tlet helpers: HelperDeclaration[];\n\tlet relocation: PendingRelocation | undefined;\n\n\tif (kind === \"await\") {\n\t\tconst effect = make_effect_helper(normalized_candidate, helper_name, helper_bindings);\n\n\t\treplacement_text = emit_promise_expression(\n\t\t\tid_text,\n\t\t\teffect,\n\t\t\thelper_bindings,\n\t\t\t\"undefined\",\n\t\t\t`{ ssr: \"pending\" }`,\n\t\t);\n\t\thelpers = [...normalized.helpers, effect.helper];\n\t} else if (kind === \"render\") {\n\t\tconst effect = make_effect_helper(normalized_candidate, helper_name, helper_bindings);\n\n\t\treplacement_text = emit_render_expression(\n\t\t\tid_text,\n\t\t\teffect,\n\t\t\tcandidate,\n\t\t\thelper_bindings,\n\t\t\tis_server_target,\n\t\t);\n\t\thelpers = [...normalized.helpers, effect.helper];\n\t} else if (kind === \"render_argument\") {\n\t\tconst effect = make_effect_helper(normalized_candidate, helper_name, helper_bindings);\n\n\t\treplacement_text = emit_await_expression(\n\t\t\tid_text,\n\t\t\teffect,\n\t\t\thelper_bindings,\n\t\t\tserver_fallback(is_server_target, \"undefined\"),\n\t\t);\n\t\thelpers = [...normalized.helpers, effect.helper];\n\t} else if (kind === \"each\") {\n\t\tconst effect = make_effect_helper(normalized_candidate, helper_name, helper_bindings);\n\n\t\treplacement_text = emit_await_expression(\n\t\t\tid_text,\n\t\t\teffect,\n\t\t\thelper_bindings,\n\t\t\tserver_fallback(is_server_target, \"[]\"),\n\t\t);\n\t\thelpers = [...normalized.helpers, effect.helper];\n\t} else if (kind === \"event\") {\n\t\tconst event = make_event_handler(normalized_candidate, helper_bindings);\n\n\t\treplacement_text = event.text;\n\t\thelpers = normalized.helpers;\n\t\trelocation = make_pending_relocation(\n\t\t\tcandidate,\n\t\t\treplacement_text,\n\t\t\tevent.expr_text,\n\t\t\tevent.relocation,\n\t\t);\n\t} else if (kind === \"html\") {\n\t\tconst effect = make_inline_effect(normalized_candidate, helper_bindings);\n\n\t\treplacement_text = emit_await_expression(id_text, effect, helper_bindings);\n\t\thelpers = normalized.helpers;\n\t\trelocation = make_pending_relocation(\n\t\t\tcandidate,\n\t\t\treplacement_text,\n\t\t\teffect.effect_text,\n\t\t\teffect.relocation,\n\t\t);\n\t} else {\n\t\tconst effect = make_effect_helper(normalized_candidate, helper_name, helper_bindings);\n\n\t\treplacement_text = emit_await_expression(\n\t\t\tid_text,\n\t\t\teffect,\n\t\t\thelper_bindings,\n\t\t\tserver_fallback(is_server_target, \"undefined\"),\n\t\t);\n\t\thelpers = [...normalized.helpers, effect.helper];\n\t}\n\n\treturn {\n\t\tstart: candidate.start,\n\t\tend: candidate.end,\n\t\ttext: replacement_text,\n\t\thelpers,\n\t\t...(relocation ? { relocation } : {}),\n\t};\n}\n\nfunction make_event_handler(\n\tcandidate: MarkupCandidate,\n\thelper_bindings: MarkupHelperBindings,\n): { text: string; expr_text: string; relocation: ExpressionRelocation | undefined } {\n\tconst expr_text = candidate.expr_text;\n\n\tif (is_callback_function_expression(expr_text)) {\n\t\tthrow new YieldStarInEventCallbackError(candidate.filename, expr_text);\n\t}\n\n\tconst analysis = analyze_event_body_yield_star(expr_text);\n\n\tif (analysis.has_nested_invalid_yield_star) {\n\t\tthrow new AsyncEffectInEventCallbackError(candidate.filename, expr_text);\n\t}\n\n\tconst wrapped_expr_text = wrap_yield_stars(expr_text, helper_bindings);\n\n\treturn {\n\t\texpr_text: wrapped_expr_text,\n\t\trelocation: make_yield_operand_relocation(expr_text, wrapped_expr_text, helper_bindings),\n\t\ttext: `(event) => { ${helper_bindings.dispatcher}.with_scope(${helper_bindings.scope}.scope, () => ${helper_bindings.dispatcher}.emit({ type: ${helper_bindings.codes}.Markup.Run, fn: function* () { ${wrapped_expr_text}; } })); }`,\n\t};\n}\n\nfunction emit_promise_expression(\n\tid_text: string,\n\teffect: EffectHelper,\n\thelper_bindings: MarkupHelperBindings,\n\tssr_fallback?: string,\n\toptions?: string,\n): string {\n\tconst properties = [\n\t\t`type: ${helper_bindings.codes}.Markup.Promise`,\n\t\t`id: ${id_text}`,\n\t\t`deps: ${effect.deps_text}`,\n\t\t`fn: () => ${effect.call}`,\n\t\tssr_fallback !== undefined && `ssr_fallback: ${ssr_fallback}`,\n\t\toptions !== undefined && `options: ${options}`,\n\t].filter((property): property is string => property !== false);\n\n\treturn `${helper_bindings.dispatcher}.with_scope(${helper_bindings.scope}.scope, () => ${helper_bindings.dispatcher}.emit({ ${properties.join(\", \")} }))`;\n}\n\nfunction emit_render_expression(\n\tid_text: string,\n\teffect: EffectHelper,\n\tcandidate: MarkupCandidate,\n\thelper_bindings: MarkupHelperBindings,\n\tis_server_target: boolean,\n): string {\n\tconst expression = emit_promise_expression(\n\t\tid_text,\n\t\teffect,\n\t\thelper_bindings,\n\t\tserver_fallback(is_server_target, `() => undefined`),\n\t);\n\n\tif (/^\\s*yield\\s*\\*/.test(candidate.expr_text)) {\n\t\treturn `(await ${expression})()`;\n\t}\n\n\treturn `await ${expression}`;\n}\n\nfunction emit_await_expression(\n\tid_text: string,\n\teffect: EffectHelper,\n\thelper_bindings: MarkupHelperBindings,\n\tssr_fallback?: string,\n): string {\n\treturn `await ${emit_promise_expression(id_text, effect, helper_bindings, ssr_fallback)}`;\n}\n\nfunction server_fallback(is_server_target: boolean, fallback: string): string | undefined {\n\treturn is_server_target ? fallback : undefined;\n}\n\ninterface EffectHelper {\n\tcall: string;\n\tdeps_text: string;\n}\n\ninterface DeclaredEffectHelper extends EffectHelper {\n\thelper: HelperDeclaration;\n}\n\ninterface InlineEffectHelper extends EffectHelper {\n\teffect_text: string;\n\trelocation: ExpressionRelocation | undefined;\n}\n\nfunction make_effect_helper(\n\tcandidate: MarkupCandidate,\n\thelper_name: string,\n\thelper_bindings: Pick<MarkupHelperBindings, \"yieldable\">,\n): DeclaredEffectHelper {\n\tconst deps = collect_free_identifiers(candidate.expr_text);\n\tconst args_text = deps.join(\", \");\n\tconst deps_text = deps.length === 0 ? \"[]\" : `[${args_text}]`;\n\tconst call = `${helper_name}()`;\n\tconst effect_text = wrap_yield_stars(candidate.expr_text, helper_bindings);\n\tconst text = `function* ${helper_name}() { return (${effect_text}); }`;\n\tconst generated_start = text.indexOf(effect_text);\n\tconst operand_relocation = make_yield_operand_relocation(\n\t\tcandidate.expr_text,\n\t\teffect_text,\n\t\thelper_bindings,\n\t);\n\tconst relocation =\n\t\toperand_relocation ??\n\t\t({\n\t\t\toriginalStart: 0,\n\t\t\toriginalEnd: candidate.expr_text.length,\n\t\t\tgeneratedStart: 0,\n\t\t\tgeneratedEnd: effect_text.length,\n\t\t} satisfies ExpressionRelocation);\n\n\treturn {\n\t\tcall,\n\t\tdeps_text,\n\t\thelper: {\n\t\t\ttext,\n\t\t\trelocation: {\n\t\t\t\toriginalStart: candidate.start + relocation.originalStart,\n\t\t\t\toriginalEnd: candidate.start + relocation.originalEnd,\n\t\t\t\tgeneratedStartInReplacement: generated_start + relocation.generatedStart,\n\t\t\t\tgeneratedEndInReplacement: generated_start + relocation.generatedEnd,\n\t\t\t},\n\t\t},\n\t};\n}\n\nfunction make_inline_effect(\n\tcandidate: MarkupCandidate,\n\thelper_bindings: Pick<MarkupHelperBindings, \"yieldable\">,\n): InlineEffectHelper {\n\tconst deps = collect_free_identifiers(candidate.expr_text);\n\tconst deps_text = deps.length === 0 ? \"[]\" : `[${deps.join(\", \")}]`;\n\tconst effect_text = wrap_yield_stars(candidate.expr_text, helper_bindings);\n\tconst relocation = make_yield_operand_relocation(\n\t\tcandidate.expr_text,\n\t\teffect_text,\n\t\thelper_bindings,\n\t);\n\n\treturn {\n\t\tcall: `(function* () { return (${effect_text}); })()`,\n\t\tdeps_text,\n\t\teffect_text,\n\t\trelocation,\n\t};\n}\n\nfunction wrap_yield_stars(\n\ttext: string,\n\thelper_bindings: Pick<MarkupHelperBindings, \"yieldable\">,\n): string {\n\tconst source_file = ts.createSourceFile(\n\t\t\"markup-yield.ts\",\n\t\ttext,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tts.ScriptKind.TS,\n\t);\n\tconst replacements: Array<{\n\t\tstart: number;\n\t\tend: number;\n\t\ttext: string;\n\t}> = [];\n\n\tcollect_yield_star_nodes(source_file, (node) => {\n\t\tconst yield_text = text.slice(node.getStart(source_file), node.end).trim();\n\n\t\treplacements.push({\n\t\t\tstart: node.getStart(source_file),\n\t\t\tend: node.end,\n\t\t\ttext: `yield* ${helper_bindings.yieldable}(${strip_yield_star(yield_text)})`,\n\t\t});\n\t});\n\n\tif (replacements.length === 0) {\n\t\treturn text;\n\t}\n\n\treplacements.sort((a, b) => b.start - a.start);\n\n\tlet output = text;\n\n\tfor (const replacement of replacements) {\n\t\toutput =\n\t\t\toutput.slice(0, replacement.start) + replacement.text + output.slice(replacement.end);\n\t}\n\n\treturn output;\n}\n\nfunction strip_yield_star(yield_text: string): string {\n\treturn yield_text.replace(/^yield\\s*\\*\\s*/, \"\");\n}\n\nfunction make_yield_operand_relocation(\n\toriginal_text: string,\n\tgenerated_text: string,\n\thelper_bindings: Pick<MarkupHelperBindings, \"yieldable\">,\n): ExpressionRelocation | undefined {\n\tconst source_file = ts.createSourceFile(\n\t\t\"markup-yield-relocation.ts\",\n\t\toriginal_text,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tts.ScriptKind.TS,\n\t);\n\tlet yield_node: ts.Node | undefined;\n\n\tcollect_yield_star_nodes(source_file, (node) => {\n\t\tyield_node ??= node;\n\t});\n\n\tif (!yield_node || !ts.isBinaryExpression(yield_node)) {\n\t\treturn undefined;\n\t}\n\n\tconst operand = yield_node.right;\n\tconst original_start = operand.getStart(source_file);\n\tconst original_end = operand.end;\n\tconst operand_text = original_text.slice(original_start, original_end).trim();\n\tconst wrapper_text = `${helper_bindings.yieldable}(${operand_text})`;\n\tconst wrapper_start = generated_text.indexOf(wrapper_text);\n\n\tif (wrapper_start === -1) {\n\t\treturn undefined;\n\t}\n\n\tconst generated_start = wrapper_start + wrapper_text.indexOf(operand_text);\n\n\treturn {\n\t\toriginalStart: original_start,\n\t\toriginalEnd: original_end,\n\t\tgeneratedStart: generated_start,\n\t\tgeneratedEnd: generated_start + operand_text.length,\n\t};\n}\n\nfunction make_cache_id(candidate: MarkupCandidate): string {\n\tconst normalized_filename = candidate.filename.replace(/[?#].*$/, \"\");\n\n\treturn `${normalized_filename}:${candidate.start}:${candidate.end}`;\n}\n\nfunction make_helper_name(candidate: MarkupCandidate, name_allocator: MarkupNameAllocator): string {\n\treturn name_allocator.reserve(`__SER___markup_effect_${candidate.start}_${candidate.end}`);\n}\n\nfunction make_pending_relocation(\n\tcandidate: MarkupCandidate,\n\treplacement_text: string,\n\texpression_text: string,\n\trelocation: ExpressionRelocation | undefined,\n): PendingRelocation | undefined {\n\tif (!relocation) {\n\t\treturn undefined;\n\t}\n\n\tconst generated_start = replacement_text.indexOf(expression_text);\n\n\tif (generated_start === -1) {\n\t\treturn undefined;\n\t}\n\n\treturn {\n\t\toriginalStart: candidate.start + relocation.originalStart,\n\t\toriginalEnd: candidate.start + relocation.originalEnd,\n\t\tgeneratedStartInReplacement: generated_start + relocation.generatedStart,\n\t\tgeneratedEndInReplacement: generated_start + relocation.generatedEnd,\n\t};\n}\n","import type MagicString from \"magic-string\";\nimport type ts from \"typescript\";\n\nexport function create_source_map(magic: MagicString, filename: string): Record<string, unknown> {\n\tconst map = magic.generateMap({\n\t\thires: true,\n\t\tincludeContent: true,\n\t\tsource: filename,\n\t});\n\n\treturn map as unknown as Record<string, unknown>;\n}\n\nexport function slice(content: string, node: ts.Node): string {\n\treturn content.slice(node.getFullStart(), node.end);\n}\n\nexport function slice_start(content: string, node: ts.Node): string {\n\treturn content.slice(node.getStart(), node.end);\n}\n","import { contains_top_level_yield_star } from \"$/detect.ts\";\nimport { AsyncEffectInSyncRuneError } from \"$/errors.ts\";\nimport { slice } from \"./source.ts\";\n\nimport ts from \"typescript\";\n\nconst async_expression_runes = new Set([\n\t\"$derived\",\n\t\"$state\",\n\t\"$state.raw\",\n\t\"$state.snapshot\",\n\t\"$bindable\",\n]);\n\nconst callback_runes = new Set([\"$derived.by\", \"$effect\", \"$effect.pre\", \"$effect.root\"]);\n\nexport function validate_rune_yield_usage(node: ts.Node, content: string, filename: string): void {\n\tvisit_rune_yield_usage(node, content, filename);\n}\n\nfunction visit_rune_yield_usage(node: ts.Node, content: string, filename: string): void {\n\tif (ts.isCallExpression(node)) {\n\t\tvalidate_call_expression(node, content, filename);\n\t}\n\n\tnode.forEachChild((child) => {\n\t\tvisit_rune_yield_usage(child, content, filename);\n\t});\n}\n\nfunction validate_call_expression(\n\tcall: ts.CallExpression,\n\tcontent: string,\n\tfilename: string,\n): void {\n\tconst rune_name = get_rune_name(call.expression);\n\n\tif (!rune_name) {\n\t\treturn;\n\t}\n\n\tif (!async_expression_runes.has(rune_name) && contains_top_level_yield_star(call)) {\n\t\tthrow new AsyncEffectInSyncRuneError(rune_name, slice(content, call), filename);\n\t}\n\n\tif (!callback_runes.has(rune_name)) {\n\t\treturn;\n\t}\n\n\tconst callback = call.arguments[0];\n\n\tif (!callback || !callback_has_top_level_yield_star(callback)) {\n\t\treturn;\n\t}\n\n\tthrow new AsyncEffectInSyncRuneError(rune_name, slice(content, call), filename);\n}\n\nfunction callback_has_top_level_yield_star(node: ts.Expression): boolean {\n\tif ((ts.isArrowFunction(node) || ts.isFunctionExpression(node)) && node.body !== undefined) {\n\t\treturn contains_top_level_yield_star(node.body);\n\t}\n\n\treturn contains_top_level_yield_star(node);\n}\n\nfunction get_rune_name(expr: ts.Expression): string | undefined {\n\tif (ts.isIdentifier(expr) && is_rune_root(expr.text)) {\n\t\treturn expr.text;\n\t}\n\n\tif (!ts.isPropertyAccessExpression(expr)) {\n\t\treturn undefined;\n\t}\n\n\tconst root_name = get_rune_name(expr.expression);\n\n\tif (!root_name) {\n\t\treturn undefined;\n\t}\n\n\treturn `${root_name}.${expr.name.text}`;\n}\n\nfunction is_rune_root(name: string): boolean {\n\treturn (\n\t\tname === \"$bindable\" ||\n\t\tname === \"$derived\" ||\n\t\tname === \"$effect\" ||\n\t\tname === \"$host\" ||\n\t\tname === \"$inspect\" ||\n\t\tname === \"$props\" ||\n\t\tname === \"$state\"\n\t);\n}\n","import { analyze_event_body_yield_star, strip_arrow_function } from \"./expressions.ts\";\nimport { validate_rune_yield_usage } from \"$/script-transform/runes.ts\";\nimport type { SvelteEffectSourceScan } from \"$/compiler/source-scan.ts\";\nimport { collect_yield_star_nodes } from \"$/script-transform/ast.ts\";\nimport { contains_top_level_yield_star } from \"$/detect.ts\";\nimport type { MarkupCandidate, TagKind } from \"./types.ts\";\nimport { default_helper_bindings } from \"./constants.ts\";\n\nimport MagicString from \"magic-string\";\nimport ts from \"typescript\";\n\ninterface SanitizeResult {\n\tparse_code: string;\n\tcandidates: MarkupCandidate[];\n}\n\ninterface DeclarationYieldExpression {\n\tstart: number;\n\tend: number;\n\texpr_text: string;\n}\n\nexport function sanitize_markup(source_scan: SvelteEffectSourceScan): SanitizeResult {\n\tconst content = source_scan.source;\n\tconst filename = source_scan.filename;\n\tconst candidates: MarkupCandidate[] = [];\n\tconst magic = new MagicString(content);\n\tlet helper_index = 0;\n\n\tfor (const expression of source_scan.markup_expressions) {\n\t\tconst open = expression.open;\n\t\tconst close = expression.close;\n\t\tconst inner = expression.inner;\n\t\tconst trimmed = inner.trimStart();\n\t\tconst leading_ws = inner.length - trimmed.length;\n\t\tconst tag_info = get_tag_info(trimmed);\n\t\tconst declaration_yields = collect_declaration_yield_expressions(\n\t\t\tcontent,\n\t\t\topen,\n\t\t\tleading_ws,\n\t\t\ttrimmed,\n\t\t\tfilename,\n\t\t);\n\n\t\tif (declaration_yields.length > 0) {\n\t\t\tfor (const declaration_yield of declaration_yields) {\n\t\t\t\tconst placeholder = `__SER___markup_placeholder_${helper_index}`;\n\t\t\t\thelper_index += 1;\n\n\t\t\t\tcandidates.push({\n\t\t\t\t\tplaceholder,\n\t\t\t\t\tstart: declaration_yield.start,\n\t\t\t\t\tend: declaration_yield.end,\n\t\t\t\t\texpr_text: declaration_yield.expr_text,\n\t\t\t\t\tfilename,\n\t\t\t\t\tkey: \"plain\",\n\t\t\t\t});\n\n\t\t\t\tmagic.overwrite(declaration_yield.start, declaration_yield.end, placeholder);\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet expr_body = trimmed.slice(tag_info.prefix_length);\n\n\t\t/** For @const, only use the RHS after `=` as the expression body. */\n\t\tconst equal_idx =\n\t\t\ttag_info.kind === \"plain\" && trimmed.startsWith(\"@const \")\n\t\t\t\t? expr_body.indexOf(\"=\")\n\t\t\t\t: -1;\n\n\t\t/** Check if this is a callback handler containing yield*. */\n\t\tconst is_event_callback = is_event_callback_expression(inner);\n\n\t\t/** Determine if this brace contains yield* that needs lowering. */\n\t\tconst event_yield = is_event_callback ? analyze_event_yield(inner) : undefined;\n\t\tconst has_yield =\n\t\t\tevent_yield?.has_top_level_yield_star ?? contains_yield_star_in_text(expr_body);\n\n\t\tif (!has_yield) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t/** The expression starts after the tag prefix. For @const, after the `=`. */\n\t\tlet extra_prefix = 0;\n\n\t\tif (equal_idx !== -1) {\n\t\t\tconst after_eq_raw = expr_body.slice(equal_idx + 1);\n\t\t\texpr_body = after_eq_raw.trimStart();\n\t\t\textra_prefix = equal_idx + 1 + (after_eq_raw.length - expr_body.length);\n\t\t}\n\n\t\tconst expr_start = open + 1 + leading_ws + tag_info.prefix_length + extra_prefix;\n\n\t\t/** For each/await, the expression ends before ` as ` or ` then `/` catch `. */\n\t\tlet expr_end = close;\n\n\t\tconst key = tag_info.kind;\n\n\t\tif (key === \"each\") {\n\t\t\tconst as_idx = expr_body.lastIndexOf(\" as \");\n\t\t\tif (as_idx !== -1) expr_end = expr_start + as_idx;\n\t\t}\n\n\t\tif (key === \"await\") {\n\t\t\tconst then_idx = expr_body.indexOf(\" then \");\n\t\t\tconst catch_idx = expr_body.indexOf(\" catch \");\n\t\t\tconst boundary = Math.min(\n\t\t\t\tthen_idx === -1 ? Infinity : then_idx,\n\t\t\t\tcatch_idx === -1 ? Infinity : catch_idx,\n\t\t\t);\n\t\t\tif (boundary !== Infinity) expr_end = expr_start + boundary;\n\t\t}\n\n\t\tconst expr_text = content.slice(expr_start, expr_end).trim();\n\n\t\tif (expr_text.length === 0) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tvalidate_expression_yield_usage(expr_text, filename);\n\n\t\tif (key === \"render\" && !/^\\s*yield\\s*\\*/.test(expr_text)) {\n\t\t\tconst render_arg_yields = collect_expression_yield_expressions(\n\t\t\t\tcontent,\n\t\t\t\texpr_start,\n\t\t\t\texpr_text,\n\t\t\t\tfilename,\n\t\t\t);\n\n\t\t\tif (render_arg_yields.length > 0) {\n\t\t\t\tfor (const render_arg_yield of render_arg_yields) {\n\t\t\t\t\tconst placeholder = `__SER___markup_placeholder_${helper_index}`;\n\t\t\t\t\thelper_index += 1;\n\n\t\t\t\t\tcandidates.push({\n\t\t\t\t\t\tplaceholder,\n\t\t\t\t\t\tstart: render_arg_yield.start,\n\t\t\t\t\t\tend: render_arg_yield.end,\n\t\t\t\t\t\texpr_text: render_arg_yield.expr_text,\n\t\t\t\t\t\tfilename,\n\t\t\t\t\t\tkey: \"render_argument\",\n\t\t\t\t\t});\n\n\t\t\t\t\tmagic.overwrite(render_arg_yield.start, render_arg_yield.end, placeholder);\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\t/** Create a placeholder and replace the expression (preserving tag prefixes). */\n\t\tconst placeholder = `__SER___markup_placeholder_${helper_index}`;\n\t\thelper_index += 1;\n\n\t\tcandidates.push({\n\t\t\tplaceholder,\n\t\t\tstart: expr_start,\n\t\t\tend: expr_end,\n\t\t\texpr_text,\n\t\t\tfilename,\n\t\t\tkey,\n\t\t});\n\n\t\tmagic.overwrite(expr_start, expr_end, key === \"render\" ? `${placeholder}()` : placeholder);\n\t}\n\n\tif (candidates.length === 0) {\n\t\treturn { parse_code: content, candidates };\n\t}\n\n\tfor (const region of source_scan.scripts) {\n\t\tconst region_source = content.slice(region.start, region.end);\n\n\t\tmagic.overwrite(\n\t\t\tregion.start,\n\t\t\tregion.end,\n\t\t\tblank_script_region(region_source, region.is_module, region.is_typescript),\n\t\t);\n\t}\n\n\tfor (const region of source_scan.styles) {\n\t\tconst region_source = content.slice(region.start, region.end);\n\n\t\tmagic.overwrite(region.start, region.end, blank_source_region(region_source));\n\t}\n\n\treturn { parse_code: magic.toString(), candidates };\n}\n\nfunction blank_source_region(source: string): string {\n\treturn source.replace(/[^\\r\\n]/g, \" \");\n}\n\nfunction blank_script_region(source: string, is_module: boolean, is_typescript: boolean): string {\n\tconst module_attribute = is_module ? \" module\" : \"\";\n\tconst lang_attribute = is_typescript ? \" lang=ts\" : \"\";\n\tconst scaffold = `<script${module_attribute}${lang_attribute}></script>`;\n\n\treturn scaffold + blank_source_region(source.slice(scaffold.length));\n}\n\nfunction collect_expression_yield_expressions(\n\tcontent: string,\n\texpr_start: number,\n\texpr_text: string,\n\tfilename: string,\n): DeclarationYieldExpression[] {\n\tconst source_file = ts.createSourceFile(\n\t\t\"markup-expression.ts\",\n\t\t`const __SER___expr = ${expr_text};`,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tts.ScriptKind.TS,\n\t);\n\tconst stmt = source_file.statements[0];\n\n\tif (!stmt || !ts.isVariableStatement(stmt)) {\n\t\treturn [];\n\t}\n\n\tvalidate_rune_yield_usage(stmt, source_file.text, filename);\n\n\tconst initializer = stmt.declarationList.declarations[0]?.initializer;\n\n\tif (!initializer || !contains_top_level_yield_star(initializer)) {\n\t\treturn [];\n\t}\n\n\tconst prefix_length = source_file.text.indexOf(expr_text);\n\tconst expressions: DeclarationYieldExpression[] = [];\n\n\tcollect_yield_star_nodes(initializer, (yield_node) => {\n\t\tconst start = expr_start + yield_node.getStart(source_file) - prefix_length;\n\t\tconst end = expr_start + yield_node.end - prefix_length;\n\t\tconst yielded_text = content.slice(start, end).trim();\n\n\t\texpressions.push({\n\t\t\tstart,\n\t\t\tend,\n\t\t\texpr_text: yielded_text,\n\t\t});\n\t});\n\n\treturn expressions;\n}\n\ninterface TagInfo {\n\tkind: TagKind;\n\tprefix_length: number;\n}\n\nfunction get_tag_info(trimmed: string): TagInfo {\n\tif (trimmed.startsWith(\"#each \")) {\n\t\treturn { kind: \"each\", prefix_length: \"#each \".length };\n\t}\n\tif (trimmed.startsWith(\"#await \")) {\n\t\treturn { kind: \"await\", prefix_length: \"#await \".length };\n\t}\n\tif (trimmed.startsWith(\"@render \")) {\n\t\treturn { kind: \"render\", prefix_length: \"@render \".length };\n\t}\n\n\t/** Strip prefix-only tags — the expression starts after the tag keyword. */\n\tif (trimmed.startsWith(\"@attach \")) {\n\t\treturn { kind: \"plain\", prefix_length: \"@attach \".length };\n\t}\n\tif (trimmed.startsWith(\"#if \")) {\n\t\treturn { kind: \"plain\", prefix_length: \"#if \".length };\n\t}\n\tif (trimmed.startsWith(\":else if \")) {\n\t\treturn { kind: \"plain\", prefix_length: \":else if \".length };\n\t}\n\tif (trimmed.startsWith(\"#key \")) {\n\t\treturn { kind: \"plain\", prefix_length: \"#key \".length };\n\t}\n\tif (trimmed.startsWith(\"@const \")) {\n\t\treturn { kind: \"plain\", prefix_length: \"@const \".length };\n\t}\n\tif (trimmed.startsWith(\"@html \")) {\n\t\treturn { kind: \"html\", prefix_length: \"@html \".length };\n\t}\n\tif (trimmed.startsWith(\"@debug \")) {\n\t\treturn { kind: \"plain\", prefix_length: \"@debug \".length };\n\t}\n\tif (trimmed.startsWith(\"...\")) {\n\t\treturn { kind: \"plain\", prefix_length: \"...\".length };\n\t}\n\n\treturn { kind: \"plain\", prefix_length: 0 };\n}\n\nfunction collect_declaration_yield_expressions(\n\tcontent: string,\n\topen: number,\n\tleading_ws: number,\n\ttrimmed: string,\n\tfilename: string,\n): DeclarationYieldExpression[] {\n\tif (!is_declaration_tag_text(trimmed)) {\n\t\treturn [];\n\t}\n\n\tconst source_text = `${trimmed};`;\n\tconst source_file = ts.createSourceFile(\n\t\t\"declaration-tag.ts\",\n\t\tsource_text,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tts.ScriptKind.TS,\n\t);\n\n\tconst stmt = source_file.statements[0];\n\n\tif (!stmt || !ts.isVariableStatement(stmt)) {\n\t\treturn [];\n\t}\n\n\tvalidate_rune_yield_usage(stmt, source_text, filename);\n\n\tconst tag_start = open + 1 + leading_ws;\n\n\treturn stmt.declarationList.declarations.flatMap((decl) => {\n\t\tconst expressions: DeclarationYieldExpression[] = [];\n\n\t\tcollect_yield_star_nodes(decl, (yield_node) => {\n\t\t\tconst start = tag_start + yield_node.getStart(source_file);\n\t\t\tconst end = tag_start + yield_node.end;\n\t\t\tconst expr_text = content.slice(start, end).trim();\n\n\t\t\texpressions.push({\n\t\t\t\tstart,\n\t\t\t\tend,\n\t\t\t\texpr_text,\n\t\t\t});\n\t\t});\n\n\t\treturn expressions;\n\t});\n}\n\nfunction is_declaration_tag_text(trimmed: string): boolean {\n\treturn /^(?:const|let)\\s/.test(trimmed);\n}\n\nfunction validate_expression_yield_usage(expr_text: string, filename: string): void {\n\tconst source_text = `const __SER___expr = ${expr_text};`;\n\tconst source_file = ts.createSourceFile(\n\t\t\"markup-expression.ts\",\n\t\tsource_text,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tts.ScriptKind.TS,\n\t);\n\tconst stmt = source_file.statements[0];\n\n\tif (!stmt) {\n\t\treturn;\n\t}\n\n\tvalidate_rune_yield_usage(stmt, source_text, filename);\n}\n\nfunction is_event_callback_expression(inner: string): boolean {\n\tconst trimmed = inner.trimStart();\n\n\treturn (\n\t\t/^(?:async\\s+)?(?:\\([^)]*\\)|[A-Za-z_$][\\w$]*)\\s*=>/.test(trimmed) ||\n\t\t/^(?:async\\s+)?function\\b/.test(trimmed)\n\t);\n}\n\nfunction analyze_event_yield(inner: string): {\n\thas_top_level_yield_star: boolean;\n} {\n\tconst event = strip_arrow_function(inner);\n\tconst analysis = analyze_event_body_yield_star(event.body);\n\tconst generated_run = new RegExp(\n\t\t`${default_helper_bindings.dispatcher}(?:_\\\\d+)?\\\\.emit\\\\(\\\\{\\\\s*type:\\\\s*${default_helper_bindings.codes}(?:_\\\\d+)?\\\\.Markup\\\\.Run`,\n\t);\n\n\tif (generated_run.test(event.body)) {\n\t\treturn {\n\t\t\thas_top_level_yield_star: false,\n\t\t};\n\t}\n\n\treturn {\n\t\thas_top_level_yield_star:\n\t\t\tanalysis.has_top_level_yield_star ||\n\t\t\tanalysis.has_nested_invalid_yield_star ||\n\t\t\t/\\byield\\s*\\*/.test(event.body),\n\t};\n}\n\nfunction contains_yield_star_in_text(text: string): boolean {\n\tif (!/\\byield\\s*\\*/.test(text)) return false;\n\n\ttry {\n\t\tconst sf = ts.createSourceFile(\n\t\t\t\"expr.ts\",\n\t\t\t`const x = ${text};`,\n\t\t\tts.ScriptTarget.Latest,\n\t\t\ttrue,\n\t\t\tts.ScriptKind.TS,\n\t\t);\n\t\tconst stmt = sf.statements[0];\n\t\tif (!ts.isVariableStatement(stmt)) return false;\n\t\tconst decl = stmt.declarationList.declarations[0];\n\t\tif (!decl?.initializer) return false;\n\t\treturn contains_top_level_yield_star(decl.initializer);\n\t} catch {\n\t\treturn true;\n\t}\n}\n\n/** Free identifier collection helpers for generated closures. */\n","import {\n\tcreate_relocations,\n\tcreate_source_map,\n\tinject_helpers,\n\tmake_markup_helper_bindings,\n} from \"./apply.ts\";\nimport type { MarkupTransformOptions, MarkupTransformResult } from \"./types.ts\";\nimport { collect_effect_callback_bindings } from \"./effect-bindings.ts\";\nimport { scan_svelte_effect_source } from \"$/compiler/source-scan.ts\";\nimport { UnsupportedMarkupEffectPositionError } from \"$/errors.ts\";\nimport { classify_candidates } from \"./classify.ts\";\nimport { type AST, parse } from \"svelte/compiler\";\nimport { emit_replacements } from \"./emit.ts\";\nimport { sanitize_markup } from \"./scan.ts\";\n\nimport MagicString from \"magic-string\";\n\nexport type {\n\tMarkupRelocation,\n\tMarkupTransformOptions,\n\tMarkupTransformResult,\n\tMarkupTransformTarget,\n} from \"./types.ts\";\n\n/**\n * Transforms Svelte markup containing `{yield* expr}` brace expressions\n * into generated dispatcher events.\n *\n * Strategy: first find all brace expressions containing `yield*` via\n * character scanning, replace them with placeholder identifiers, then\n * parse the sanitized markup with Svelte's AST to determine the correct\n * context for each placeholder (plain expression, #each, #await, event\n * handler, etc.).\n *\n * @example\n * ```ts\n * const result = transform_markup_effect(\n * \"<button onclick={yield* save()}>Save</button>\",\n * \"SaveButton.svelte\",\n * );\n * ```\n *\n * @since 2.0.0\n * @param content - The raw `.svelte` file content.\n * @param filename - The source filename, used in error messages.\n * @param options - Optional transform target configuration.\n * @returns The transformed markup and a flag indicating whether yield* was\n * found.\n */\nexport function transform_markup_effect(\n\tcontent: string,\n\tfilename: string,\n\toptions: MarkupTransformOptions = {},\n): MarkupTransformResult {\n\tif (!/\\byield\\s*\\*/.test(content)) {\n\t\treturn { code: content, has_yield: false };\n\t}\n\n\tconst source_scan = scan_svelte_effect_source(content, filename);\n\n\t/** Find all brace expressions containing yield* and replace with placeholders. */\n\tconst work = sanitize_markup(source_scan);\n\n\tif (work.candidates.length === 0) {\n\t\treturn { code: content, has_yield: false };\n\t}\n\n\tconst effect_context = collect_effect_callback_bindings(source_scan.scripts);\n\tconst helper_context = make_markup_helper_bindings(source_scan, options.target ?? \"client\");\n\n\t/** Parse the sanitized markup with Svelte's AST. */\n\tconst ast = parse(work.parse_code, { filename, modern: true }) as AST.Root;\n\n\t/** Match placeholders to their AST context and build replacements. */\n\tconst classified = classify_candidates(ast, work.candidates);\n\tconst matched = new Set(classified.map(({ candidate }) => candidate.placeholder));\n\tconst unmatched = work.candidates.find((candidate) => !matched.has(candidate.placeholder));\n\n\tif (unmatched) {\n\t\tthrow new UnsupportedMarkupEffectPositionError(filename, unmatched.expr_text);\n\t}\n\n\tconst replacements = emit_replacements(\n\t\tclassified,\n\t\teffect_context,\n\t\thelper_context.bindings,\n\t\thelper_context.name_allocator,\n\t\toptions.target ?? \"client\",\n\t);\n\tconst helpers = replacements.flatMap((replacement) => replacement.helpers ?? []);\n\n\tconst magic = new MagicString(content);\n\n\treplacements.sort((a, b) => b.start - a.start);\n\n\tfor (const r of replacements) {\n\t\tmagic.overwrite(r.start, r.end, r.text);\n\t}\n\n\tconst helper_insertion = inject_helpers(\n\t\tmagic,\n\t\tsource_scan,\n\t\thelpers,\n\t\thelper_context.bindings,\n\t\thelper_context.scope_wiring,\n\t);\n\tconst relocations = create_relocations(replacements, helper_insertion);\n\n\treturn {\n\t\tcode: magic.toString(),\n\t\thas_yield: true,\n\t\tmap: create_source_map(magic, filename),\n\t\trelocations,\n\t};\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { SvelteEffectSourceScan } from "./source-scan.js";
2
+ export declare function collect_markup_identifier_names(source_scan: SvelteEffectSourceScan): ReadonlySet<string>;
@@ -1,24 +1,6 @@
1
1
  interface RemoteClientRewriteOptions {
2
2
  debug?: boolean;
3
3
  }
4
- /**
5
- * Rewrites SvelteKit's generated client remote module into Effect-aware
6
- * wrappers while preserving the native remote factory calls.
7
- *
8
- * @example
9
- * ```ts
10
- * const rewritten = rewrite_remote_client_exports(
11
- * `export const get_post = __remote.query("hash/get_post")`,
12
- * );
13
- * ```
14
- *
15
- * @since 2.0.0
16
- * @param code - Generated SvelteKit remote client module source to inspect and
17
- * rewrite.
18
- * @param options - Optional rewrite options forwarded from the SER Vite plugin.
19
- * @returns The rewritten module source, or the original source when no remote
20
- * exports are found.
21
- * @internal
22
- */
4
+ /** Rewrites SvelteKit's generated remote client exports to SER adapters. */
23
5
  export declare function rewrite_remote_client_exports(code: string, options?: RemoteClientRewriteOptions): string;
24
6
  export {};
@@ -1,36 +1,9 @@
1
- /**
2
- * Half-open source range in a Svelte component.
3
- *
4
- * @example
5
- * ```ts
6
- * const range: SourceRange = { start: 0, end: 10 };
7
- * ```
8
- *
9
- * @since 4.0.0
10
- */
11
1
  export interface SourceRange {
12
2
  /** Inclusive start offset. */
13
3
  start: number;
14
4
  /** Exclusive end offset. */
15
5
  end: number;
16
6
  }
17
- /**
18
- * Attribute found in a Svelte opening tag.
19
- *
20
- * @example
21
- * ```ts
22
- * const attribute: SourceAttribute = {
23
- * name: "lang",
24
- * start: 8,
25
- * end: 17,
26
- * name_start: 9,
27
- * name_end: 13,
28
- * value: "ts",
29
- * };
30
- * ```
31
- *
32
- * @since 4.0.0
33
- */
34
7
  export interface SourceAttribute extends SourceRange {
35
8
  /** Attribute name exactly as written in source. */
36
9
  name: string;
@@ -39,19 +12,8 @@ export interface SourceAttribute extends SourceRange {
39
12
  /** Exclusive offset where the attribute name ends. */
40
13
  name_end: number;
41
14
  /** Parsed string value when the attribute has one. */
42
- value?: string;
15
+ value?: string | undefined;
43
16
  }
44
- /**
45
- * Complete `<script>` region discovered by the shared source scanner.
46
- *
47
- * @example
48
- * ```ts
49
- * const script = scan_svelte_effect_source(source).effect_script;
50
- * script?.text;
51
- * ```
52
- *
53
- * @since 4.0.0
54
- */
55
17
  export interface ScriptRegion extends SourceRange {
56
18
  /** Offset where the opening `<script` tag starts. */
57
19
  opening_tag_start: number;
@@ -78,25 +40,14 @@ export interface ScriptRegion extends SourceRange {
78
40
  /** Whether the script has a `lang` attribute. */
79
41
  has_lang: boolean;
80
42
  /** Parsed `lang` value when present. */
81
- lang?: string;
43
+ lang?: string | undefined;
82
44
  /** Whether this script should be parsed as TypeScript. */
83
45
  is_typescript: boolean;
84
46
  /** Whether this script has SER's `effect` attribute. */
85
47
  has_effect: boolean;
86
48
  /** Range of the `effect` attribute, including leading whitespace. */
87
- effect_attribute?: SourceRange;
49
+ effect_attribute?: SourceRange | undefined;
88
50
  }
89
- /**
90
- * Markup brace expression outside scripts, styles, and HTML comments.
91
- *
92
- * @example
93
- * ```ts
94
- * const [expression] = scan_svelte_effect_source(`<p>{name}</p>`).markup_expressions;
95
- * expression.expression_text;
96
- * ```
97
- *
98
- * @since 4.0.0
99
- */
100
51
  export interface MarkupBraceExpression {
101
52
  /** Offset of the opening `{`. */
102
53
  open: number;
@@ -111,19 +62,8 @@ export interface MarkupBraceExpression {
111
62
  /** Trimmed expression body. */
112
63
  expression_text: string;
113
64
  /** Attribute name when the expression is an attribute value. */
114
- attribute_name?: string;
65
+ attribute_name?: string | undefined;
115
66
  }
116
- /**
117
- * Bare declaration tag that the editor projection should normalize.
118
- *
119
- * @example
120
- * ```ts
121
- * const tags = scan_svelte_effect_source(`{const value = 1}`).bare_const_tags;
122
- * tags[0]?.insert_position;
123
- * ```
124
- *
125
- * @since 4.0.0
126
- */
127
67
  export interface BareConstDeclarationTag {
128
68
  /** Offset of the opening `{`. */
129
69
  open: number;
@@ -132,25 +72,14 @@ export interface BareConstDeclarationTag {
132
72
  /** Brace expression that contains the bare declaration. */
133
73
  expression: MarkupBraceExpression;
134
74
  }
135
- /**
136
- * Shared lexical facts for a Svelte source document.
137
- *
138
- * @example
139
- * ```ts
140
- * const scan = scan_svelte_effect_source(source, "App.svelte");
141
- * scan.effect_script?.text;
142
- * ```
143
- *
144
- * @since 4.0.0
145
- */
146
75
  export interface SvelteEffectSourceScan {
147
76
  /** Source filename used for diagnostics and debugging. */
148
77
  filename: string;
149
78
  /** Full component source that was scanned. */
150
79
  source: string;
151
- /** All complete script regions in source order. */
80
+ /** Complete root-level script regions in source order. */
152
81
  scripts: readonly ScriptRegion[];
153
- /** Complete style tag ranges in source order. */
82
+ /** Complete root-level style tag ranges in source order. */
154
83
  styles: readonly SourceRange[];
155
84
  /** HTML comment ranges in source order. */
156
85
  comments: readonly SourceRange[];
@@ -158,41 +87,15 @@ export interface SvelteEffectSourceScan {
158
87
  excluded_ranges: readonly SourceRange[];
159
88
  /** Markup brace expressions outside excluded ranges. */
160
89
  markup_expressions: readonly MarkupBraceExpression[];
90
+ /** Lexical binding names introduced by markup blocks and directives. */
91
+ markup_binding_names: readonly string[];
161
92
  /** Bare `{const ...}` tags outside excluded ranges. */
162
93
  bare_const_tags: readonly BareConstDeclarationTag[];
163
94
  /** First non-module script, if present. */
164
- instance_script?: ScriptRegion;
95
+ instance_script?: ScriptRegion | undefined;
165
96
  /** First non-module script with SER's `effect` attribute, if present. */
166
- effect_script?: ScriptRegion;
97
+ effect_script?: ScriptRegion | undefined;
167
98
  }
168
- /**
169
- * Scans a Svelte component once for shared lexical facts used by transforms,
170
- * diagnostics, and editor projections.
171
- *
172
- * @example
173
- * ```ts
174
- * const scan = scan_svelte_effect_source(`<script effect>yield* run()</script>`);
175
- * scan.effect_script?.has_effect;
176
- * ```
177
- *
178
- * @since 4.0.0
179
- * @param source - Full Svelte component source to scan.
180
- * @param filename - Optional filename associated with the source.
181
- * @returns Shared source facts for SER consumers.
182
- */
183
99
  export declare function scan_svelte_effect_source(source: string, filename?: string): SvelteEffectSourceScan;
184
- /**
185
- * Reuses a source scan after bare-const normalization inserts `@` characters.
186
- *
187
- * @example
188
- * ```ts
189
- * const shifted = shift_scan_after_at_insertions(scan, normalized, [tag.insert_position]);
190
- * ```
191
- *
192
- * @since 4.0.0
193
- * @param scan - Scan produced from the pre-normalization source.
194
- * @param normalized_source - Source after `@` insertions.
195
- * @param insert_positions - Offsets where `@` was inserted.
196
- * @returns A scan aligned to the normalized source without rescanning markup.
197
- */
100
+ /** Reuses scan offsets after bare-const normalization inserts characters. */
198
101
  export declare function shift_scan_after_at_insertions(scan: SvelteEffectSourceScan, normalized_source: string, insert_positions: readonly number[]): SvelteEffectSourceScan;
@@ -0,0 +1,3 @@
1
+ export declare function is_sveltekit_remote_runtime_index(id: string): boolean;
2
+ export declare function append_sveltekit_remote_transport_bridge(code: string): string;
3
+ export declare function make_missing_sveltekit_remote_runtime_message(): string;
@@ -2,6 +2,12 @@ import type { Plugin } from "vite";
2
2
  /**
3
3
  * Options for the {@link effect} Vite plugin.
4
4
  *
5
+ * @example
6
+ * ```ts
7
+ * const options: EffectOptions = { debug: true };
8
+ * const plugins = effect(options);
9
+ * ```
10
+ *
5
11
  * @since 2.0.0
6
12
  */
7
13
  export interface EffectOptions {
package/.dist/compiler.js CHANGED
@@ -1,2 +1,2 @@
1
- import { n as rewrite_remote_client_exports, t as effect } from "./chunks/compiler-BBPNyXmQ.js";
1
+ import { n as rewrite_remote_client_exports, t as effect } from "./chunks/compiler-Dpyu4Owd.js";
2
2
  export { effect, rewrite_remote_client_exports };
package/.dist/detect.d.ts CHANGED
@@ -1,34 +1,3 @@
1
1
  import ts from "typescript";
2
- /**
3
- * Returns `true` when the node tree contains a `yield*` expression that is
4
- * not inside any function boundary (arrow function, function declaration,
5
- * function expression, method).
6
- *
7
- * @example
8
- * ```ts
9
- * const sf = ts.createSourceFile("test.ts", "yield* foo()", ...);
10
- * contains_top_level_yield_star(sf.statements[0]); // true
11
- * ```
12
- *
13
- * @since 2.0.0
14
- * @param node - The root node to search from.
15
- * @returns Whether a top-level yield* expression was found.
16
- */
17
2
  export declare function contains_top_level_yield_star(node: ts.Node): boolean;
18
- /**
19
- * Returns `true` when the node is a function-like boundary that owns its
20
- * own yield/yield* semantics. A function boundary includes arrow functions,
21
- * function declarations, function expressions, methods, get accessors, and
22
- * set accessors.
23
- *
24
- * @example
25
- * ```ts
26
- * const stmt = parseStatement("function foo() {}");
27
- * is_function_boundary(stmt); // true
28
- * ```
29
- *
30
- * @since 2.0.0
31
- * @param node - The node to check.
32
- * @returns Whether the node is a function boundary.
33
- */
34
3
  export declare function is_function_boundary(node: ts.Node): boolean;