svelte-effect-runtime 4.2.0 → 4.2.2
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.
- package/.dist/chunks/{server-NeyeDSax.js → server-BNxq-pUH.js} +29 -14
- package/.dist/chunks/server-BNxq-pUH.js.map +1 -0
- package/.dist/chunks/{transform-C0jW8Qta.js → transform-CASuYezS.js} +89 -23
- package/.dist/chunks/transform-CASuYezS.js.map +1 -0
- package/.dist/internal/remote-server.js +1 -1
- package/.dist/markup/transform/expressions.d.ts +8 -0
- package/.dist/markup/transform.js +1 -1
- package/.dist/remote/diagnostics.d.ts +17 -1
- package/.dist/remote/server.d.ts +3 -3
- package/.dist/remote/server.js +1 -1
- package/.dist/runtime/transform.js +9 -3
- package/.dist/runtime/transform.js.map +1 -1
- package/.dist/server.js +4 -4
- package/.dist/server.js.map +1 -1
- package/package.json +1 -1
- package/.dist/chunks/server-NeyeDSax.js.map +0 -1
- package/.dist/chunks/transform-C0jW8Qta.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-CASuYezS.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\tallow_namespace_import = true,\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 allow_namespace_import && 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\n\t\t\t\t? [{ start: instance_script.content_start, text: scope_text }]\n\t\t\t\t: [],\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 detected_scope_name = extract_script_scope_binding(source_scan.scripts);\n\tconst name_allocator = make_name_allocator([\n\t\t...script_binding_names,\n\t\t...markup_identifier_names,\n\t]);\n\n\tconst scope = detected_scope_name ?? name_allocator.reserve(default_helper_bindings.scope);\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,\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 = detected_scope_name !== undefined;\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 ? {} : { 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 extract_script_scope_binding(\n\tscripts: ReadonlyArray<{ readonly text: string }>,\n): string | undefined {\n\tfor (const { text } of scripts) {\n\t\tconst source_file = ts.createSourceFile(\n\t\t\t\"markup-script.ts\",\n\t\t\ttext,\n\t\t\tts.ScriptTarget.Latest,\n\t\t\ttrue,\n\t\t\tts.ScriptKind.TS,\n\t\t);\n\n\t\tconst component_scope_refs = collect_component_scope_ref_names(source_file);\n\n\t\tfor (const stmt of source_file.statements) {\n\t\t\tif (!ts.isVariableStatement(stmt)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tfor (const decl of stmt.declarationList.declarations) {\n\t\t\t\tif (!ts.isIdentifier(decl.name)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (!is_generated_scope_name(decl.name.text)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (!decl.initializer || !ts.isNewExpression(decl.initializer)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tts.isIdentifier(decl.initializer.expression) &&\n\t\t\t\t\tcomponent_scope_refs.has(decl.initializer.expression.text)\n\t\t\t\t) {\n\t\t\t\t\treturn decl.name.text;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tts.isPropertyAccessExpression(decl.initializer.expression) &&\n\t\t\t\t\tts.isIdentifier(decl.initializer.expression.expression) &&\n\t\t\t\t\tcomponent_scope_refs.has(decl.initializer.expression.expression.text) &&\n\t\t\t\t\tdecl.initializer.expression.name.text === \"ComponentScopeRef\"\n\t\t\t\t) {\n\t\t\t\t\treturn decl.name.text;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nfunction collect_component_scope_ref_names(source_file: ts.SourceFile): Set<string> {\n\tconst scope_ref_names = new Set([\"ComponentScopeRef\"]);\n\n\tfor (const stmt of source_file.statements) {\n\t\tif (\n\t\t\t!ts.isImportDeclaration(stmt) ||\n\t\t\t!ts.isStringLiteral(stmt.moduleSpecifier) ||\n\t\t\tstmt.moduleSpecifier.text !== \"svelte-effect-runtime/internal/generators\"\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst clause = stmt.importClause;\n\n\t\tif (!clause || clause.isTypeOnly) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst named_bindings = clause.namedBindings;\n\n\t\tif (!named_bindings || !ts.isNamedImports(named_bindings)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (const element of named_bindings.elements) {\n\t\t\tif (element.propertyName?.text === \"ComponentScopeRef\") {\n\t\t\t\tscope_ref_names.add(element.name.text);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn scope_ref_names;\n}\n\nfunction is_generated_scope_name(name: string): boolean {\n\treturn /^__SER___scope(?:_\\d+)?$/.test(name);\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\nconst callback_prefix = \"const __SER___callback = \";\n\n/**\n * Splits a callback expression into its parameter list and body.\n *\n * The split is syntactic rather than textual: locating the body by searching\n * for `=>` finds the first arrow anywhere in the string, including one nested\n * inside the callback's own body, which silently truncates the body and hides\n * whatever it contained.\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 callback = parse_callback_expression(expr);\n\n\tif (!callback) {\n\t\treturn { params: \"()\", body: expr, body_start: 0, body_end: expr.length };\n\t}\n\n\tconst offset = callback_prefix.length;\n\tconst parameters = callback.parameters;\n\tconst params = `(${expr.slice(parameters.pos - offset, parameters.end - offset).trim()})`;\n\tconst is_block = ts.isBlock(callback.body);\n\n\tlet body_start = callback.body.getStart() - offset + (is_block ? 1 : 0);\n\tlet body_end = callback.body.end - offset - (is_block ? 1 : 0);\n\n\tconst raw = expr.slice(body_start, body_end);\n\n\tbody_start += raw.length - raw.trimStart().length;\n\tbody_end -= raw.length - raw.trimEnd().length;\n\n\tlet body = raw.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\nfunction parse_callback_expression(\n\texpr: string,\n): (ts.ArrowFunction | ts.FunctionExpression) | undefined {\n\tconst source_file = ts.createSourceFile(\n\t\t\"callback.ts\",\n\t\tcallback_prefix + expr,\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 undefined;\n\t}\n\n\tconst initializer = stmt.declarationList.declarations[0]?.initializer;\n\n\tif (\n\t\tinitializer === undefined ||\n\t\t!(ts.isArrowFunction(initializer) || ts.isFunctionExpression(initializer))\n\t) {\n\t\treturn undefined;\n\t}\n\n\treturn initializer;\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 (ts.isFunctionLike(node)) {\n\t\tconst scoped = new Set(locals);\n\n\t\tif (\n\t\t\t(ts.isFunctionDeclaration(node) || ts.isFunctionExpression(node)) &&\n\t\t\tnode.name !== undefined\n\t\t) {\n\t\t\tscoped.add(node.name.text);\n\t\t}\n\n\t\t/**\n\t\t * A computed member name is evaluated in the enclosing scope, so it stays\n\t\t * a dependency even though the member itself introduces a new scope.\n\t\t */\n\t\tif (\"name\" in node && node.name !== undefined && ts.isComputedPropertyName(node.name)) {\n\t\t\tvisit_ids(node.name.expression, locals, seen, ids);\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\t/**\n\t\t * Defaults are evaluated in parameter scope: they can reference the values\n\t\t * this expression depends on, so skipping them drops a dependency and the\n\t\t * effect silently stops re-running.\n\t\t */\n\t\tfor (const parameter of node.parameters) {\n\t\t\tif (parameter.initializer) {\n\t\t\t\tvisit_ids(parameter.initializer, scoped, seen, ids);\n\t\t\t}\n\t\t}\n\n\t\tif (\"body\" in node && node.body) {\n\t\t\tvisit_ids(node.body, scoped, seen, ids);\n\t\t}\n\n\t\treturn;\n\t}\n\n\t/** A block-scoped declaration must not leak into the enclosing scope. */\n\tif (ts.isBlock(node) || ts.isCaseBlock(node)) {\n\t\tconst scoped = new Set(locals);\n\n\t\tnode.forEachChild((child) => visit_ids(child, scoped, seen, ids));\n\n\t\treturn;\n\t}\n\n\t/**\n\t * The iterable is evaluated before the loop binding exists, so it has to be\n\t * walked in the enclosing scope. Binding first would silently swallow a\n\t * dependency that happens to share the loop variable's name.\n\t */\n\tif (ts.isForOfStatement(node) || ts.isForInStatement(node)) {\n\t\tconst scoped = new Set(locals);\n\n\t\tvisit_ids(node.expression, locals, seen, ids);\n\t\tvisit_ids(node.initializer, scoped, seen, ids);\n\t\tvisit_ids(node.statement, scoped, seen, ids);\n\n\t\treturn;\n\t}\n\n\tif (ts.isForStatement(node)) {\n\t\tconst scoped = new Set(locals);\n\n\t\tfor (const part of [node.initializer, node.condition, node.incrementor]) {\n\t\t\tif (part) {\n\t\t\t\tvisit_ids(part, scoped, seen, ids);\n\t\t\t}\n\t\t}\n\n\t\tvisit_ids(node.statement, scoped, seen, ids);\n\n\t\treturn;\n\t}\n\n\tif (ts.isCatchClause(node)) {\n\t\tconst scoped = new Set(locals);\n\n\t\tif (node.variableDeclaration) {\n\t\t\tvisit_ids(node.variableDeclaration, scoped, seen, ids);\n\t\t}\n\n\t\tvisit_ids(node.block, scoped, seen, ids);\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\t/**\n\t\t * Statement text reaches this collector through an expression-shaped\n\t\t * wrapper, so parser error recovery can synthesise a nameless identifier.\n\t\t * Emitting it produces a bare `;` in the generated dependency reads.\n\t\t */\n\t\tif (node.text === \"\") {\n\t\t\treturn;\n\t\t}\n\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\n/**\n * Declaration names are not references. Emitting one as a dependency makes the\n * generated code read an identifier that was never declared, which fails at\n * runtime rather than merely re-running too often.\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.isPropertyDeclaration(parent) && parent.name === node) ||\n\t\t(ts.isClassDeclaration(parent) && parent.name === node) ||\n\t\t(ts.isClassExpression(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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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as to_remote_failure_context, i as throw_remote_cause, n as run_remote_effect, o as encode_remote_failure, r as throw_form_error, t as normalize_remote_helper_error } from "../chunks/server-
|
|
1
|
+
import { a as to_remote_failure_context, i as throw_remote_cause, n as run_remote_effect, o as encode_remote_failure, r as throw_form_error, t as normalize_remote_helper_error } from "../chunks/server-BNxq-pUH.js";
|
|
2
2
|
export { encode_remote_failure, normalize_remote_helper_error, run_remote_effect, throw_form_error, throw_remote_cause, to_remote_failure_context };
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Splits a callback expression into its parameter list and body.
|
|
3
|
+
*
|
|
4
|
+
* The split is syntactic rather than textual: locating the body by searching
|
|
5
|
+
* for `=>` finds the first arrow anywhere in the string, including one nested
|
|
6
|
+
* inside the callback's own body, which silently truncates the body and hides
|
|
7
|
+
* whatever it contained.
|
|
8
|
+
*/
|
|
1
9
|
export declare function strip_arrow_function(expr: string): {
|
|
2
10
|
params: string;
|
|
3
11
|
body: string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as transform_markup_effect } from "../chunks/transform-
|
|
1
|
+
import { t as transform_markup_effect } from "../chunks/transform-CASuYezS.js";
|
|
2
2
|
export { transform_markup_effect };
|
|
@@ -26,6 +26,22 @@ export type RemoteFailureContext = {
|
|
|
26
26
|
readonly route?: string;
|
|
27
27
|
readonly url?: string;
|
|
28
28
|
};
|
|
29
|
+
/**
|
|
30
|
+
* Defers building a {@link RemoteFailureContext} until a report is actually
|
|
31
|
+
* rendered.
|
|
32
|
+
*
|
|
33
|
+
* The context describes a request SER never otherwise inspects, so resolving
|
|
34
|
+
* it eagerly would read request-event properties on every remote call to
|
|
35
|
+
* describe the few that fail.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* const resolve: ResolveRemoteFailureContext = () => ({ url: event.url.pathname });
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @since 4.2.1
|
|
43
|
+
*/
|
|
44
|
+
export type ResolveRemoteFailureContext = () => RemoteFailureContext | undefined;
|
|
29
45
|
type Reporter = (message: string) => void;
|
|
30
46
|
/**
|
|
31
47
|
* Reports a remote failure that had to be replaced with an opaque envelope.
|
|
@@ -47,7 +63,7 @@ type Reporter = (message: string) => void;
|
|
|
47
63
|
* @param context - Optional request detail for the log header.
|
|
48
64
|
* @param report - Sink for the rendered report; defaults to `console.error`.
|
|
49
65
|
*/
|
|
50
|
-
export declare function report_opaque_remote_failure(reason: OpaqueRemoteFailureReason, cause: Cause.Cause<unknown>, value: unknown,
|
|
66
|
+
export declare function report_opaque_remote_failure(reason: OpaqueRemoteFailureReason, cause: Cause.Cause<unknown>, value: unknown, resolve_context?: ResolveRemoteFailureContext, report?: Reporter): void;
|
|
51
67
|
/**
|
|
52
68
|
* Renders the report emitted by {@link report_opaque_remote_failure}.
|
|
53
69
|
*
|
package/.dist/remote/server.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { RemoteFailureContext } from "./diagnostics.js";
|
|
1
|
+
import type { RemoteFailureContext, ResolveRemoteFailureContext } from "./diagnostics.js";
|
|
2
2
|
import type { FormIssue } from "./shared.js";
|
|
3
3
|
import { Cause, Effect } from "effect";
|
|
4
4
|
type SvelteInvalid = (...issues: readonly (FormIssue | string)[]) => never;
|
|
@@ -7,9 +7,9 @@ export { encode_remote_failure } from "./cause-codec.js";
|
|
|
7
7
|
/** Maps a remote Effect exit into the control flow expected by SvelteKit. */
|
|
8
8
|
export declare function run_remote_effect<A>(effect: Effect.Effect<A, unknown, unknown>, runtime: {
|
|
9
9
|
runPromise: (e: Effect.Effect<unknown, unknown, unknown>) => Promise<unknown>;
|
|
10
|
-
}, invalid: SvelteInvalid, error: SvelteError,
|
|
10
|
+
}, invalid: SvelteInvalid, error: SvelteError, resolve_context?: ResolveRemoteFailureContext): Promise<A>;
|
|
11
11
|
/** Applies a classified remote Cause decision to SvelteKit's server helpers. */
|
|
12
|
-
export declare function throw_remote_cause(cause: Cause.Cause<unknown>, invalid: SvelteInvalid, error: SvelteError,
|
|
12
|
+
export declare function throw_remote_cause(cause: Cause.Cause<unknown>, invalid: SvelteInvalid, error: SvelteError, resolve_context?: ResolveRemoteFailureContext, report?: (message: string) => void): never;
|
|
13
13
|
/**
|
|
14
14
|
* Describes the request a remote failure occurred in.
|
|
15
15
|
*
|
package/.dist/remote/server.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as to_remote_failure_context, i as throw_remote_cause, n as run_remote_effect, o as encode_remote_failure, r as throw_form_error, t as normalize_remote_helper_error } from "../chunks/server-
|
|
1
|
+
import { a as to_remote_failure_context, i as throw_remote_cause, n as run_remote_effect, o as encode_remote_failure, r as throw_form_error, t as normalize_remote_helper_error } from "../chunks/server-BNxq-pUH.js";
|
|
2
2
|
export { encode_remote_failure, normalize_remote_helper_error, run_remote_effect, throw_form_error, throw_remote_cause, to_remote_failure_context };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { m as PreprocessError, r as AwaitInEffectWorkError } from "../chunks/errors-qhcbUH6o.js";
|
|
2
|
-
import { a as slice_start, c as find_yield_star_node, d as collect_top_level_binding_names, f as has_local_import_binding, i as slice, l as is_yield_star_expression, n as validate_rune_yield_usage, o as collect_yield_star_nodes, p as make_imports, r as create_source_map, s as contains_top_level_await, t as transform_markup_effect, u as collect_free_identifiers } from "../chunks/transform-
|
|
2
|
+
import { a as slice_start, c as find_yield_star_node, d as collect_top_level_binding_names, f as has_local_import_binding, i as slice, l as is_yield_star_expression, n as validate_rune_yield_usage, o as collect_yield_star_nodes, p as make_imports, r as create_source_map, s as contains_top_level_await, t as transform_markup_effect, u as collect_free_identifiers } from "../chunks/transform-CASuYezS.js";
|
|
3
3
|
import { t as scan_svelte_effect_source } from "../chunks/source-scan-cSawCvsg.js";
|
|
4
4
|
import { contains_top_level_yield_star } from "../detect.js";
|
|
5
5
|
import ts from "typescript";
|
|
@@ -47,6 +47,7 @@ function lower_variable_statement(stmt, content, context) {
|
|
|
47
47
|
const rewritten_decls = [];
|
|
48
48
|
const decl_list = stmt.declarationList;
|
|
49
49
|
const kind = (decl_list.flags & ts.NodeFlags.Let) !== 0 ? "let" : "const";
|
|
50
|
+
const modifiers = ts.getModifiers(stmt) ?? [];
|
|
50
51
|
let uses_dispatcher_promise = false;
|
|
51
52
|
for (const decl of decl_list.declarations) {
|
|
52
53
|
if (!contains_top_level_yield_star(decl)) {
|
|
@@ -61,7 +62,7 @@ function lower_variable_statement(stmt, content, context) {
|
|
|
61
62
|
return {
|
|
62
63
|
temps: [],
|
|
63
64
|
type_helpers: helper_declarations,
|
|
64
|
-
rewritten_text: `${kind} ${rewritten_decls.join(", ")}
|
|
65
|
+
rewritten_text: [modifiers.map((modifier) => slice_start(content, modifier)).join(" "), `${kind} ${rewritten_decls.join(", ")};`].filter(Boolean).join(" "),
|
|
65
66
|
effect_blocks: [],
|
|
66
67
|
uses_dispatcher_promise,
|
|
67
68
|
range: {
|
|
@@ -82,7 +83,12 @@ function lower_expression_statement(stmt, content, context) {
|
|
|
82
83
|
}
|
|
83
84
|
};
|
|
84
85
|
if (is_yield_star_expression(expr)) {
|
|
85
|
-
|
|
86
|
+
/**
|
|
87
|
+
* Leading trivia must stay out of the sliced expression: a comment ahead
|
|
88
|
+
* of the yield* would defeat the anchored strip in wrap_yield_text and
|
|
89
|
+
* leave a second yield* nested inside the ToEffect argument.
|
|
90
|
+
*/
|
|
91
|
+
const text = slice_start(content, expr).trim();
|
|
86
92
|
return {
|
|
87
93
|
temps: [],
|
|
88
94
|
rewritten_text: "",
|