svelte-effect-runtime 4.2.1 → 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/{transform-C0jW8Qta.js → transform-CASuYezS.js} +89 -23
- package/.dist/chunks/transform-CASuYezS.js.map +1 -0
- package/.dist/markup/transform/expressions.d.ts +8 -0
- package/.dist/markup/transform.js +1 -1
- package/.dist/runtime/transform.js +3 -2
- package/.dist/runtime/transform.js.map +1 -1
- package/package.json +1 -1
- package/.dist/chunks/transform-C0jW8Qta.js.map +0 -1
|
@@ -648,30 +648,33 @@ function is_record(value) {
|
|
|
648
648
|
}
|
|
649
649
|
//#endregion
|
|
650
650
|
//#region src/markup/transform/expressions.ts
|
|
651
|
+
const callback_prefix = "const __SER___callback = ";
|
|
652
|
+
/**
|
|
653
|
+
* Splits a callback expression into its parameter list and body.
|
|
654
|
+
*
|
|
655
|
+
* The split is syntactic rather than textual: locating the body by searching
|
|
656
|
+
* for `=>` finds the first arrow anywhere in the string, including one nested
|
|
657
|
+
* inside the callback's own body, which silently truncates the body and hides
|
|
658
|
+
* whatever it contained.
|
|
659
|
+
*/
|
|
651
660
|
function strip_arrow_function(expr) {
|
|
652
|
-
const
|
|
653
|
-
if (
|
|
661
|
+
const callback = parse_callback_expression(expr);
|
|
662
|
+
if (!callback) return {
|
|
654
663
|
params: "()",
|
|
655
664
|
body: expr,
|
|
656
665
|
body_start: 0,
|
|
657
666
|
body_end: expr.length
|
|
658
667
|
};
|
|
659
|
-
const
|
|
660
|
-
const
|
|
661
|
-
const
|
|
662
|
-
|
|
663
|
-
let
|
|
664
|
-
let
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
}
|
|
670
|
-
const body_leading_ws = body.length - body.trimStart().length;
|
|
671
|
-
const body_trailing_ws = body.length - body.trimEnd().length;
|
|
672
|
-
body_start += body_leading_ws;
|
|
673
|
-
body_end -= body_trailing_ws;
|
|
674
|
-
body = body.trim();
|
|
668
|
+
const offset = 25;
|
|
669
|
+
const parameters = callback.parameters;
|
|
670
|
+
const params = `(${expr.slice(parameters.pos - offset, parameters.end - offset).trim()})`;
|
|
671
|
+
const is_block = ts.isBlock(callback.body);
|
|
672
|
+
let body_start = callback.body.getStart() - offset + (is_block ? 1 : 0);
|
|
673
|
+
let body_end = callback.body.end - offset - (is_block ? 1 : 0);
|
|
674
|
+
const raw = expr.slice(body_start, body_end);
|
|
675
|
+
body_start += raw.length - raw.trimStart().length;
|
|
676
|
+
body_end -= raw.length - raw.trimEnd().length;
|
|
677
|
+
let body = raw.trim();
|
|
675
678
|
if (body.endsWith(";")) {
|
|
676
679
|
body = body.slice(0, -1);
|
|
677
680
|
body_end -= 1;
|
|
@@ -683,6 +686,13 @@ function strip_arrow_function(expr) {
|
|
|
683
686
|
body_end
|
|
684
687
|
};
|
|
685
688
|
}
|
|
689
|
+
function parse_callback_expression(expr) {
|
|
690
|
+
const stmt = ts.createSourceFile("callback.ts", callback_prefix + expr, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS).statements[0];
|
|
691
|
+
if (!stmt || !ts.isVariableStatement(stmt)) return;
|
|
692
|
+
const initializer = stmt.declarationList.declarations[0]?.initializer;
|
|
693
|
+
if (initializer === void 0 || !(ts.isArrowFunction(initializer) || ts.isFunctionExpression(initializer))) return;
|
|
694
|
+
return initializer;
|
|
695
|
+
}
|
|
686
696
|
function is_callback_function_expression(expr) {
|
|
687
697
|
const wrapped = `const __SER___callback = ${expr};`;
|
|
688
698
|
const stmt = ts.createSourceFile("callback.ts", wrapped, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS).statements[0];
|
|
@@ -721,11 +731,56 @@ function collect_free_identifiers(expr_text) {
|
|
|
721
731
|
return ids;
|
|
722
732
|
}
|
|
723
733
|
function visit_ids(node, locals, seen, ids) {
|
|
724
|
-
if (ts.
|
|
734
|
+
if (ts.isFunctionLike(node)) {
|
|
725
735
|
const scoped = new Set(locals);
|
|
726
|
-
if (ts.isFunctionDeclaration(node) && node.name) scoped.add(node.name.text);
|
|
736
|
+
if ((ts.isFunctionDeclaration(node) || ts.isFunctionExpression(node)) && node.name !== void 0) scoped.add(node.name.text);
|
|
737
|
+
/**
|
|
738
|
+
* A computed member name is evaluated in the enclosing scope, so it stays
|
|
739
|
+
* a dependency even though the member itself introduces a new scope.
|
|
740
|
+
*/
|
|
741
|
+
if ("name" in node && node.name !== void 0 && ts.isComputedPropertyName(node.name)) visit_ids(node.name.expression, locals, seen, ids);
|
|
727
742
|
for (const parameter of node.parameters) add_binding_names(parameter.name, scoped);
|
|
728
|
-
|
|
743
|
+
/**
|
|
744
|
+
* Defaults are evaluated in parameter scope: they can reference the values
|
|
745
|
+
* this expression depends on, so skipping them drops a dependency and the
|
|
746
|
+
* effect silently stops re-running.
|
|
747
|
+
*/
|
|
748
|
+
for (const parameter of node.parameters) if (parameter.initializer) visit_ids(parameter.initializer, scoped, seen, ids);
|
|
749
|
+
if ("body" in node && node.body) visit_ids(node.body, scoped, seen, ids);
|
|
750
|
+
return;
|
|
751
|
+
}
|
|
752
|
+
/** A block-scoped declaration must not leak into the enclosing scope. */
|
|
753
|
+
if (ts.isBlock(node) || ts.isCaseBlock(node)) {
|
|
754
|
+
const scoped = new Set(locals);
|
|
755
|
+
node.forEachChild((child) => visit_ids(child, scoped, seen, ids));
|
|
756
|
+
return;
|
|
757
|
+
}
|
|
758
|
+
/**
|
|
759
|
+
* The iterable is evaluated before the loop binding exists, so it has to be
|
|
760
|
+
* walked in the enclosing scope. Binding first would silently swallow a
|
|
761
|
+
* dependency that happens to share the loop variable's name.
|
|
762
|
+
*/
|
|
763
|
+
if (ts.isForOfStatement(node) || ts.isForInStatement(node)) {
|
|
764
|
+
const scoped = new Set(locals);
|
|
765
|
+
visit_ids(node.expression, locals, seen, ids);
|
|
766
|
+
visit_ids(node.initializer, scoped, seen, ids);
|
|
767
|
+
visit_ids(node.statement, scoped, seen, ids);
|
|
768
|
+
return;
|
|
769
|
+
}
|
|
770
|
+
if (ts.isForStatement(node)) {
|
|
771
|
+
const scoped = new Set(locals);
|
|
772
|
+
for (const part of [
|
|
773
|
+
node.initializer,
|
|
774
|
+
node.condition,
|
|
775
|
+
node.incrementor
|
|
776
|
+
]) if (part) visit_ids(part, scoped, seen, ids);
|
|
777
|
+
visit_ids(node.statement, scoped, seen, ids);
|
|
778
|
+
return;
|
|
779
|
+
}
|
|
780
|
+
if (ts.isCatchClause(node)) {
|
|
781
|
+
const scoped = new Set(locals);
|
|
782
|
+
if (node.variableDeclaration) visit_ids(node.variableDeclaration, scoped, seen, ids);
|
|
783
|
+
visit_ids(node.block, scoped, seen, ids);
|
|
729
784
|
return;
|
|
730
785
|
}
|
|
731
786
|
if (ts.isVariableDeclaration(node)) {
|
|
@@ -735,6 +790,12 @@ function visit_ids(node, locals, seen, ids) {
|
|
|
735
790
|
}
|
|
736
791
|
if (ts.isTypeReferenceNode(node)) return;
|
|
737
792
|
if (ts.isIdentifier(node)) {
|
|
793
|
+
/**
|
|
794
|
+
* Statement text reaches this collector through an expression-shaped
|
|
795
|
+
* wrapper, so parser error recovery can synthesise a nameless identifier.
|
|
796
|
+
* Emitting it produces a bare `;` in the generated dependency reads.
|
|
797
|
+
*/
|
|
798
|
+
if (node.text === "") return;
|
|
738
799
|
if (node.text === "yield" || node.text === "undefined" || node.text === "null" || node.text === "true" || node.text === "false" || node.text === "this") return;
|
|
739
800
|
if (is_property_access_name(node)) return;
|
|
740
801
|
if (!locals.has(node.text) && !seen.has(node.text)) {
|
|
@@ -779,9 +840,14 @@ function is_yield_star_expression$1(node) {
|
|
|
779
840
|
if (ts.isYieldExpression(node)) return node.asteriskToken !== void 0;
|
|
780
841
|
return ts.isBinaryExpression(node) && node.operatorToken.kind === ts.SyntaxKind.AsteriskToken && ts.isIdentifier(node.left) && node.left.text === "yield";
|
|
781
842
|
}
|
|
843
|
+
/**
|
|
844
|
+
* Declaration names are not references. Emitting one as a dependency makes the
|
|
845
|
+
* generated code read an identifier that was never declared, which fails at
|
|
846
|
+
* runtime rather than merely re-running too often.
|
|
847
|
+
*/
|
|
782
848
|
function is_property_access_name(node) {
|
|
783
849
|
const parent = node.parent;
|
|
784
|
-
return ts.isPropertyAccessExpression(parent) && parent.name === node || ts.isPropertyAssignment(parent) && parent.name === node || ts.isBindingElement(parent) && parent.propertyName === node || ts.isImportSpecifier(parent) || ts.isExportSpecifier(parent);
|
|
850
|
+
return ts.isPropertyAccessExpression(parent) && parent.name === node || ts.isPropertyAssignment(parent) && parent.name === node || ts.isPropertyDeclaration(parent) && parent.name === node || ts.isClassDeclaration(parent) && parent.name === node || ts.isClassExpression(parent) && parent.name === node || ts.isBindingElement(parent) && parent.propertyName === node || ts.isImportSpecifier(parent) || ts.isExportSpecifier(parent);
|
|
785
851
|
}
|
|
786
852
|
//#endregion
|
|
787
853
|
//#region src/markup/transform/effect-callbacks.ts
|
|
@@ -1594,4 +1660,4 @@ function transform_markup_effect(content, filename, options = {}) {
|
|
|
1594
1660
|
//#endregion
|
|
1595
1661
|
export { slice_start as a, find_yield_star_node as c, collect_top_level_binding_names as d, has_local_import_binding as f, slice as i, is_yield_star_expression as l, validate_rune_yield_usage as n, collect_yield_star_nodes as o, make_imports as p, create_source_map as r, contains_top_level_await as s, transform_markup_effect as t, collect_free_identifiers as u };
|
|
1596
1662
|
|
|
1597
|
-
//# sourceMappingURL=transform-
|
|
1663
|
+
//# sourceMappingURL=transform-CASuYezS.js.map
|
|
@@ -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,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 };
|
|
@@ -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: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.js","names":[],"sources":["../../../modules/svelte-effect-runtime/src/script-transform/runtime-block.ts","../../../modules/svelte-effect-runtime/src/script-transform/lower.ts","../../../modules/svelte-effect-runtime/src/script-transform/index.ts","../../../modules/svelte-effect-runtime/src/runtime/transform.ts"],"sourcesContent":["import type { EffectBlock, RuntimeImportBindings } from \"./types.ts\";\n\nexport function make_runtime_block_with_bindings(\n\tblocks: EffectBlock[],\n\tbindings: RuntimeImportBindings,\n): string {\n\treturn blocks.map((block) => make_runtime_effect_block(block, bindings)).join(\"\\n\");\n}\n\nfunction make_runtime_effect_block(block: EffectBlock, bindings: RuntimeImportBindings): string {\n\tconst dep_reads = block.deps.map((dep) => ` ${dep};`);\n\n\tconst body = block.statements.map((statement) => ` ${statement}`).join(\"\\n\");\n\n\treturn [\n\t\t\"\",\n\t\t\"$effect(() => {\",\n\t\t...dep_reads,\n\t\t` const ${bindings.dispatcher_value} = ${bindings.dispatcher}();`,\n\t\t` const ${bindings.program} = ${bindings.effect}.gen(function* () {`,\n\t\tbody,\n\t\t\" });\",\n\t\t` const ${bindings.cancel} = ${bindings.untrack}(() => ${bindings.dispatcher_value}.run_scoped(${bindings.scope}.scope, ${bindings.program}));`,\n\t\t` import.meta.hot?.dispose(${bindings.cancel});`,\n\t\t` return ${bindings.cancel};`,\n\t\t\"});\",\n\t\t\"\",\n\t].join(\"\\n\");\n}\n","import type {\n\tEffectBlock,\n\tLoweredExpression,\n\tLoweredStatement,\n\tScriptLoweringContext,\n\tTempBinding,\n} from \"./types.ts\";\nimport { collect_yield_star_nodes, find_yield_star_node, is_yield_star_expression } from \"./ast.ts\";\nimport { collect_free_identifiers } from \"$/markup/transform/expressions.ts\";\nimport { contains_top_level_yield_star } from \"$/detect.ts\";\nimport { slice, slice_start } from \"./source.ts\";\n\nimport ts from \"typescript\";\n\nexport function lower_statement(\n\tstmt: ts.Statement,\n\tcontent: string,\n\tcontext: ScriptLoweringContext,\n): LoweredStatement {\n\tif (ts.isExpressionStatement(stmt)) {\n\t\treturn lower_expression_statement(stmt, content, context);\n\t}\n\n\tif (ts.isVariableStatement(stmt)) {\n\t\treturn lower_variable_statement(stmt, content, context);\n\t}\n\n\tconst text = slice(content, stmt);\n\tconst wrapped_text = wrap_yield_stars_in_node(stmt, content, context);\n\n\treturn {\n\t\ttemps: [],\n\t\trewritten_text: \"\",\n\t\teffect_blocks: [make_effect_block([wrapped_text], collect_deps(text))],\n\t\trange: { start: stmt.getFullStart(), end: stmt.end },\n\t};\n}\n\nfunction lower_variable_statement(\n\tstmt: ts.VariableStatement,\n\tcontent: string,\n\tcontext: ScriptLoweringContext,\n): LoweredStatement {\n\tconst helper_declarations: string[] = [];\n\tconst rewritten_decls: string[] = [];\n\n\tconst decl_list = stmt.declarationList;\n\tconst kind = (decl_list.flags & ts.NodeFlags.Let) !== 0 ? \"let\" : \"const\";\n\tlet uses_dispatcher_promise = false;\n\n\tfor (const decl of decl_list.declarations) {\n\t\tif (!contains_top_level_yield_star(decl)) {\n\t\t\trewritten_decls.push(slice(content, decl).trim());\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst lowered = lower_node_yields_to_await(\n\t\t\tdecl,\n\t\t\tcontent,\n\t\t\tmake_binding_hint(decl.name),\n\t\t\tcontext,\n\t\t);\n\n\t\thelper_declarations.push(...lowered.helper_declarations);\n\t\trewritten_decls.push(lowered.rewritten_text);\n\t\tuses_dispatcher_promise ||= lowered.uses_dispatcher_promise;\n\t}\n\n\tconst rewritten_text = `${kind} ${rewritten_decls.join(\", \")};`;\n\n\treturn {\n\t\ttemps: [],\n\t\ttype_helpers: helper_declarations,\n\t\trewritten_text,\n\t\teffect_blocks: [],\n\t\tuses_dispatcher_promise,\n\t\trange: { start: stmt.getStart(), end: stmt.end },\n\t};\n}\n\nfunction lower_expression_statement(\n\tstmt: ts.ExpressionStatement,\n\tcontent: string,\n\tcontext: ScriptLoweringContext,\n): LoweredStatement {\n\tconst expr = stmt.expression;\n\n\tif (!contains_top_level_yield_star(expr)) {\n\t\treturn {\n\t\t\ttemps: [],\n\t\t\trewritten_text: slice(content, stmt).trim(),\n\t\t\teffect_blocks: [],\n\t\t\trange: { start: stmt.getStart(), end: stmt.end },\n\t\t};\n\t}\n\n\tif (is_yield_star_expression(expr)) {\n\t\t/**\n\t\t * Leading trivia must stay out of the sliced expression: a comment ahead\n\t\t * of the yield* would defeat the anchored strip in wrap_yield_text and\n\t\t * leave a second yield* nested inside the ToEffect argument.\n\t\t */\n\t\tconst text = slice_start(content, expr).trim();\n\t\tconst yield_text = wrap_yield_text(text, context);\n\n\t\treturn {\n\t\t\ttemps: [],\n\t\t\trewritten_text: \"\",\n\t\t\teffect_blocks: [make_effect_block([yield_text + \";\"], collect_deps(text))],\n\t\t\trange: { start: stmt.getFullStart(), end: stmt.end },\n\t\t};\n\t}\n\n\tif (ts.isBinaryExpression(expr) && is_assignment_operator(expr)) {\n\t\tconst target = slice(content, expr.left).trim();\n\t\tconst target_names = collect_assignment_target_names(expr.left);\n\n\t\tif (\n\t\t\texpr.operatorToken.kind === ts.SyntaxKind.EqualsToken &&\n\t\t\tis_yield_star_expression(expr.right)\n\t\t) {\n\t\t\tconst yield_text = extract_yield_star_full_text(expr.right, content);\n\t\t\tconst wrapped_yield_text = wrap_yield_text(yield_text, context);\n\n\t\t\treturn {\n\t\t\t\ttemps: [],\n\t\t\t\trewritten_text: \"\",\n\t\t\t\teffect_blocks: [\n\t\t\t\t\tmake_effect_block(\n\t\t\t\t\t\t[`${target} = ${wrapped_yield_text};`],\n\t\t\t\t\t\tcollect_deps(yield_text, target_names),\n\t\t\t\t\t),\n\t\t\t\t],\n\t\t\t\trange: { start: stmt.getStart(), end: stmt.end },\n\t\t\t};\n\t\t}\n\n\t\tconst lowered = lower_expression_yields(\n\t\t\texpr.right,\n\t\t\tcontent,\n\t\t\tmake_temp_hint(target),\n\t\t\tcontext,\n\t\t);\n\t\tconst temp_names = lowered.temps.map((temp) => temp.name);\n\t\tconst statement = `${target} ${slice(\n\t\t\tcontent,\n\t\t\texpr.operatorToken,\n\t\t).trim()} ${lowered.rewritten_expr};`;\n\n\t\treturn {\n\t\t\ttemps: lowered.temps,\n\t\t\ttype_helpers: lowered.type_helpers,\n\t\t\trewritten_text: \"\",\n\t\t\teffect_blocks: [\n\t\t\t\tmake_effect_block(\n\t\t\t\t\t[...lowered.effect_blocks.flatMap((block) => block.statements), statement],\n\t\t\t\t\t[\n\t\t\t\t\t\t...lowered.effect_blocks.flatMap((block) => block.deps),\n\t\t\t\t\t\t...collect_deps(lowered.rewritten_expr, [...target_names, ...temp_names]),\n\t\t\t\t\t],\n\t\t\t\t),\n\t\t\t],\n\t\t\trange: { start: stmt.getStart(), end: stmt.end },\n\t\t};\n\t}\n\n\tconst lowered = lower_expression_yields(expr, content, \"call\", context);\n\n\tif (is_top_level_rune_call(expr)) {\n\t\treturn {\n\t\t\ttemps: lowered.temps,\n\t\t\ttype_helpers: lowered.type_helpers,\n\t\t\trewritten_text: lowered.rewritten_expr + \";\",\n\t\t\teffect_blocks: lowered.effect_blocks,\n\t\t\trange: { start: stmt.getStart(), end: stmt.end },\n\t\t};\n\t}\n\n\tconst temp_names = lowered.temps.map((temp) => temp.name);\n\n\treturn {\n\t\ttemps: lowered.temps,\n\t\ttype_helpers: lowered.type_helpers,\n\t\trewritten_text: \"\",\n\t\teffect_blocks: [\n\t\t\tmake_effect_block(\n\t\t\t\t[\n\t\t\t\t\t...lowered.effect_blocks.flatMap((block) => block.statements),\n\t\t\t\t\tlowered.rewritten_expr + \";\",\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t...lowered.effect_blocks.flatMap((block) => block.deps),\n\t\t\t\t\t...collect_deps(lowered.rewritten_expr, temp_names),\n\t\t\t\t],\n\t\t\t),\n\t\t],\n\t\trange: { start: stmt.getStart(), end: stmt.end },\n\t};\n}\n\nfunction lower_expression_yields(\n\texpr: ts.Expression,\n\tcontent: string,\n\thint: string,\n\tcontext: ScriptLoweringContext,\n): LoweredExpression {\n\tconst replacements: Array<{\n\t\tstart: number;\n\t\tend: number;\n\t\ttext: string;\n\t}> = [];\n\n\tconst temps: TempBinding[] = [];\n\tconst type_helpers: string[] = [];\n\tconst statements: string[] = [];\n\tconst deps: string[] = [];\n\n\tcollect_yield_star_nodes(expr, (node) => {\n\t\tconst temp_name = context.next_temp_name(hint);\n\t\tconst yield_text = slice_start(content, node).trim();\n\t\tconst type_helper = make_yield_type_helper(yield_text, hint, context);\n\n\t\tif (type_helper) {\n\t\t\ttype_helpers.push(type_helper.declaration);\n\t\t\ttemps.push({ name: temp_name, type: type_helper.type });\n\t\t} else {\n\t\t\ttemps.push({ name: temp_name });\n\t\t}\n\n\t\tstatements.push(`${temp_name} = ${wrap_yield_text(yield_text, context)};`);\n\t\tdeps.push(...collect_deps(yield_text));\n\t\treplacements.push({\n\t\t\tstart: node.getStart(),\n\t\t\tend: node.end,\n\t\t\ttext: temp_name,\n\t\t});\n\t});\n\n\tif (replacements.length === 0) {\n\t\treturn {\n\t\t\ttemps,\n\t\t\ttype_helpers,\n\t\t\trewritten_expr: slice(content, expr).trim(),\n\t\t\teffect_blocks: [],\n\t\t};\n\t}\n\n\treplacements.sort((a, b) => b.start - a.start);\n\n\tlet text = slice(content, expr);\n\n\tconst offset_in_expr = expr.getFullStart();\n\n\tfor (const replacement of replacements) {\n\t\ttext =\n\t\t\ttext.slice(0, replacement.start - offset_in_expr) +\n\t\t\treplacement.text +\n\t\t\ttext.slice(replacement.end - offset_in_expr);\n\t}\n\n\treturn {\n\t\ttemps,\n\t\ttype_helpers,\n\t\trewritten_expr: text.trim(),\n\t\teffect_blocks: [make_effect_block(statements, deps)],\n\t};\n}\n\nfunction lower_node_yields_to_await(\n\tnode: ts.Node,\n\tcontent: string,\n\thint: string,\n\tcontext: ScriptLoweringContext,\n): {\n\thelper_declarations: string[];\n\trewritten_text: string;\n\tuses_dispatcher_promise: boolean;\n} {\n\tconst helper_declarations: string[] = [];\n\tconst replacements: Array<{\n\t\tstart: number;\n\t\tend: number;\n\t\ttext: string;\n\t}> = [];\n\n\tcollect_yield_star_nodes(node, (yield_node) => {\n\t\tconst awaited = make_awaited_yield_expression(yield_node, content, hint, context);\n\n\t\thelper_declarations.push(awaited.declaration);\n\t\treplacements.push({\n\t\t\tstart: yield_node.getStart(),\n\t\t\tend: yield_node.end,\n\t\t\ttext: awaited.expression,\n\t\t});\n\t});\n\n\treplacements.sort((a, b) => b.start - a.start);\n\n\tlet text = slice_start(content, node);\n\tconst offset_in_node = node.getStart();\n\n\tfor (const replacement of replacements) {\n\t\ttext =\n\t\t\ttext.slice(0, replacement.start - offset_in_node) +\n\t\t\treplacement.text +\n\t\t\ttext.slice(replacement.end - offset_in_node);\n\t}\n\n\treturn {\n\t\thelper_declarations,\n\t\trewritten_text: text.trim(),\n\t\tuses_dispatcher_promise: replacements.length > 0,\n\t};\n}\n\nfunction make_awaited_yield_expression(\n\tnode: ts.Node,\n\tcontent: string,\n\thint: string,\n\tcontext: ScriptLoweringContext,\n): { declaration: string; expression: string } {\n\tconst yield_text = slice_start(content, node).trim();\n\tconst helper_name = context.next_helper_name(`effect_${hint}`);\n\tconst helper_id = make_script_effect_id(node, context);\n\tconst deps = collect_deps(yield_text);\n\tconst deps_text = `[${deps.join(\", \")}]`;\n\tconst wrapped_yield_text = wrap_yield_text(yield_text, context);\n\n\treturn {\n\t\tdeclaration: `function* ${helper_name}() { return (${wrapped_yield_text}); }`,\n\t\texpression: [\n\t\t\t`await ${context.dispatcher_name}().with_scope(${context.scope_name}.scope, () => ${context.dispatcher_name}().promise({`,\n\t\t\t`id: ${JSON.stringify(helper_id)}, `,\n\t\t\t`deps: ${deps_text}, `,\n\t\t\t`factory: () => ${helper_name}()`,\n\t\t\t`}))`,\n\t\t].join(\"\"),\n\t};\n}\n\nfunction make_yield_type_helper(\n\tyield_text: string,\n\thint: string,\n\tcontext: ScriptLoweringContext,\n): { declaration: string; type: string } | undefined {\n\tif (!context.emit_types) {\n\t\treturn undefined;\n\t}\n\n\tconst helper_name = context.next_type_helper_name(hint);\n\tconst effect_text = strip_yield_star(yield_text);\n\n\treturn {\n\t\tdeclaration: `function ${helper_name}() { return (${effect_text}); }`,\n\t\ttype: `${context.yield_success_name}<ReturnType<typeof ${helper_name}>> | undefined`,\n\t};\n}\n\nfunction strip_yield_star(yield_text: string): string {\n\treturn yield_text.replace(/^yield\\s*\\*\\s*/, \"\");\n}\n\nfunction wrap_yield_text(yield_text: string, context: ScriptLoweringContext): string {\n\treturn `yield* ${context.yieldable_name}(${strip_yield_star(yield_text)})`;\n}\n\nfunction wrap_yield_stars_in_node(\n\tnode: ts.Node,\n\tcontent: string,\n\tcontext: ScriptLoweringContext,\n): string {\n\tconst replacements: Array<{\n\t\tstart: number;\n\t\tend: number;\n\t\ttext: string;\n\t}> = [];\n\n\tcollect_yield_star_nodes(node, (yield_node) => {\n\t\tconst yield_text = slice_start(content, yield_node).trim();\n\n\t\treplacements.push({\n\t\t\tstart: yield_node.getStart(),\n\t\t\tend: yield_node.end,\n\t\t\ttext: wrap_yield_text(yield_text, context),\n\t\t});\n\t});\n\n\treplacements.sort((a, b) => b.start - a.start);\n\n\tconst offset = node.getFullStart();\n\tlet text = slice(content, node);\n\n\tfor (const replacement of replacements) {\n\t\ttext =\n\t\t\ttext.slice(0, replacement.start - offset) +\n\t\t\treplacement.text +\n\t\t\ttext.slice(replacement.end - offset);\n\t}\n\n\treturn text.trim();\n}\n\nfunction make_script_effect_id(expr: ts.Node, context: ScriptLoweringContext): string {\n\treturn `${context.filename}:${expr.getStart()}:${expr.end}`;\n}\n\nfunction is_assignment_operator(expr: ts.BinaryExpression): boolean {\n\treturn (\n\t\texpr.operatorToken.kind >= ts.SyntaxKind.FirstAssignment &&\n\t\texpr.operatorToken.kind <= ts.SyntaxKind.LastAssignment\n\t);\n}\n\nfunction is_top_level_rune_call(expr: ts.Expression): boolean {\n\tif (!ts.isCallExpression(expr)) {\n\t\treturn false;\n\t}\n\n\tconst callee = expr.expression;\n\n\tif (ts.isIdentifier(callee)) {\n\t\treturn callee.text.startsWith(\"$\");\n\t}\n\n\treturn (\n\t\tts.isPropertyAccessExpression(callee) &&\n\t\tts.isIdentifier(callee.expression) &&\n\t\tcallee.expression.text.startsWith(\"$\")\n\t);\n}\n\nfunction make_temp_hint(target: string): string {\n\tconst match = target.match(/[A-Za-z_$][\\w$]*$/);\n\n\treturn match?.[0] ?? \"assignment\";\n}\n\nfunction make_binding_hint(name: ts.BindingName): string {\n\tif (ts.isIdentifier(name)) {\n\t\treturn name.text;\n\t}\n\n\treturn \"destructure\";\n}\n\nfunction extract_yield_star_full_text(expr: ts.Expression, content: string): string {\n\tlet found: string | undefined;\n\n\tfind_yield_star_node(expr, (node) => {\n\t\tfound = slice_start(content, node).trim();\n\t});\n\n\treturn found ?? \"undefined\";\n}\n\nfunction make_effect_block(statements: string[], deps: string[]): EffectBlock {\n\treturn {\n\t\tstatements,\n\t\tdeps: [...new Set(deps)],\n\t};\n}\n\nfunction collect_deps(expr_text: string, excluded_names: readonly string[] = []): string[] {\n\tconst excluded = new Set(excluded_names);\n\n\treturn collect_free_identifiers(expr_text).filter(\n\t\t(identifier) => !identifier.startsWith(\"__SER___\") && !excluded.has(identifier),\n\t);\n}\n\nfunction collect_assignment_target_names(node: ts.Node): string[] {\n\tif (ts.isIdentifier(node)) {\n\t\treturn [node.text];\n\t}\n\n\tif (ts.isParenthesizedExpression(node)) {\n\t\treturn collect_assignment_target_names(node.expression);\n\t}\n\n\tif (ts.isPropertyAccessExpression(node) || ts.isElementAccessExpression(node)) {\n\t\treturn collect_assignment_target_names(node.expression);\n\t}\n\n\tif (ts.isObjectLiteralExpression(node)) {\n\t\treturn node.properties.flatMap((property) => {\n\t\t\tif (ts.isShorthandPropertyAssignment(property)) {\n\t\t\t\treturn [property.name.text];\n\t\t\t}\n\n\t\t\tif (ts.isPropertyAssignment(property)) {\n\t\t\t\treturn collect_assignment_target_names(property.initializer);\n\t\t\t}\n\n\t\t\tif (ts.isSpreadAssignment(property)) {\n\t\t\t\treturn collect_assignment_target_names(property.expression);\n\t\t\t}\n\n\t\t\treturn [];\n\t\t});\n\t}\n\n\tif (ts.isArrayLiteralExpression(node)) {\n\t\treturn node.elements.flatMap((element) =>\n\t\t\tts.isSpreadElement(element)\n\t\t\t\t? collect_assignment_target_names(element.expression)\n\t\t\t\t: collect_assignment_target_names(element),\n\t\t);\n\t}\n\n\treturn [];\n}\n","import type {\n\tBlockRef,\n\tEffectBlock,\n\tRelocation,\n\tRuntimeImportBindings,\n\tScriptLoweringContext,\n\tScriptTransformResult,\n} from \"./types.ts\";\nimport {\n\tcollect_top_level_binding_names,\n\thas_local_import_binding,\n\tmake_imports,\n} from \"./imports.ts\";\nimport { collect_yield_star_nodes, contains_top_level_await } from \"./ast.ts\";\nimport { AwaitInEffectWorkError, PreprocessError } from \"$/errors.ts\";\nimport { make_runtime_block_with_bindings } from \"./runtime-block.ts\";\nimport { contains_top_level_yield_star } from \"$/detect.ts\";\nimport { create_source_map, slice } from \"./source.ts\";\nimport { validate_rune_yield_usage } from \"./runes.ts\";\nimport { lower_statement } from \"./lower.ts\";\nimport type { MarkupTransformTarget } from \"$/markup/transform.ts\";\n\nimport MagicString from \"magic-string\";\nimport ts from \"typescript\";\n\nexport type { BlockRef, ScriptTransformResult } from \"./types.ts\";\n\ninterface ScriptTransformOptions {\n\temit_types?: boolean;\n\ttarget?: MarkupTransformTarget;\n}\n\n/**\n * Transforms a `<script effect>` body by lowering top-level `yield*`\n * expressions into Svelte-compatible async rendering declarations or into\n * dependency-tracked `$effect` blocks for effectful statements.\n *\n * @example\n * ```ts\n * const result = transform_script_effect(\n * `let user = $state(yield* getUser(id));`,\n * \"App.svelte\",\n * );\n * ```\n *\n * @since 2.0.0\n * @param content - The raw `<script effect>` body content.\n * @param filename - The source filename, used in error messages.\n * @param options - Optional transform settings for generated script code.\n * @returns The transformed code and any block references.\n */\nexport function transform_script_effect(\n\tcontent: string,\n\tfilename: string,\n\toptions: ScriptTransformOptions = {},\n): ScriptTransformResult {\n\tlet temp_counter = 0;\n\tconst target = options.target ?? \"client\";\n\n\tconst source_file = ts.createSourceFile(\n\t\tfilename,\n\t\tcontent,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tts.ScriptKind.TS,\n\t);\n\n\tconst magic = new MagicString(content);\n\tconst effect_blocks: EffectBlock[] = [];\n\tconst block_refs: BlockRef[] = [];\n\tconst top_level_binding_names = collect_top_level_binding_names(source_file);\n\tconst top_level_binding_names_set = new Set(top_level_binding_names);\n\tconst name_allocator = make_name_allocator(top_level_binding_names);\n\tconst emit_types = options.emit_types ?? true;\n\n\tlet has_effect = false;\n\tlet first_effect_statement_start = content.length;\n\tlet uses_dispatcher_promise = false;\n\tlet uses_yield_success_types = false;\n\n\t/** Phase 1: detect imports already provided by the user. */\n\tconst has_effect_import = has_local_import_binding(source_file, \"effect\", \"Effect\");\n\n\tconst has_dispatcher_import = has_local_import_binding(\n\t\tsource_file,\n\t\t\"svelte-effect-runtime/internal/generators\",\n\t\t\"get_dispatcher\",\n\t);\n\n\tconst has_untrack_import = has_local_import_binding(source_file, \"svelte\", \"untrack\");\n\tconst has_on_destroy_import = has_local_import_binding(\n\t\tsource_file,\n\t\t\"svelte\",\n\t\t\"onDestroy\",\n\t\tfalse,\n\t);\n\n\tconst reserve_runtime_import = (name: string) =>\n\t\ttop_level_binding_names_set.has(name)\n\t\t\t? name_allocator.reserve(make_generated_name(name, \"\"))\n\t\t\t: name_allocator.reserve(name);\n\n\tconst runtime_bindings: RuntimeImportBindings = {\n\t\tcancel: name_allocator.reserve(\"__SER___cancel\"),\n\t\tcomponent_scope_ref: reserve_runtime_import(\"ComponentScopeRef\"),\n\t\tdispatcher: has_dispatcher_import\n\t\t\t? \"get_dispatcher\"\n\t\t\t: reserve_runtime_import(\"get_dispatcher\"),\n\t\tdispatcher_value: name_allocator.reserve(\"__SER___dispatcher\"),\n\t\teffect: has_effect_import ? \"Effect\" : reserve_runtime_import(\"Effect\"),\n\t\ton_destroy: has_on_destroy_import ? \"onDestroy\" : reserve_runtime_import(\"onDestroy\"),\n\t\tprogram: name_allocator.reserve(\"__SER___program\"),\n\t\tscope: name_allocator.reserve(\"__SER___scope\"),\n\t\tuntrack: has_untrack_import ? \"untrack\" : reserve_runtime_import(\"untrack\"),\n\t\tyield_success: reserve_runtime_import(\"YieldSuccess\"),\n\t\tyieldable: reserve_runtime_import(\"ToEffect\"),\n\t};\n\n\tconst context: ScriptLoweringContext = {\n\t\tfilename,\n\t\tdispatcher_name: runtime_bindings.dispatcher,\n\t\tscope_name: runtime_bindings.scope,\n\t\teffect_name: runtime_bindings.effect,\n\t\temit_types,\n\t\tyield_success_name: runtime_bindings.yield_success,\n\t\tyieldable_name: runtime_bindings.yieldable,\n\t\tnext_helper_name(hint?: string) {\n\t\t\treturn name_allocator.reserve(make_generated_name(hint ?? \"helper\", \"\"));\n\t\t},\n\t\tnext_temp_name(hint?: string) {\n\t\t\tconst suffix = temp_counter === 0 ? \"\" : `_${temp_counter}`;\n\t\t\tconst name = make_generated_name(hint ?? String(temp_counter), suffix);\n\n\t\t\ttemp_counter += 1;\n\n\t\t\treturn name_allocator.reserve(name);\n\t\t},\n\t\tnext_type_helper_name(hint?: string) {\n\t\t\treturn name_allocator.reserve(make_generated_name(`type_${hint ?? \"effect\"}`, \"\"));\n\t\t},\n\t};\n\n\t/** Phase 2: lower every top-level statement that contains `yield*`. */\n\tfor (const stmt of source_file.statements) {\n\t\tvalidate_rune_yield_usage(stmt, content, filename);\n\t\tvalidate_script_yield_boundaries(stmt, content, filename);\n\n\t\tconst has_top_level_yield_star = contains_top_level_yield_star(stmt);\n\n\t\tif (!has_top_level_yield_star) {\n\t\t\tcontinue;\n\t\t}\n\n\t\thas_effect = true;\n\n\t\tconst lowered = lower_statement(stmt, content, context);\n\n\t\tfirst_effect_statement_start = Math.min(first_effect_statement_start, lowered.range.start);\n\n\t\tif (lowered.effect_blocks.length > 0 && contains_top_level_await(stmt)) {\n\t\t\tconst text = slice(content, stmt);\n\t\t\tthrow new AwaitInEffectWorkError(filename, text);\n\t\t}\n\n\t\tmagic.overwrite(lowered.range.start, lowered.range.end, lowered.rewritten_text);\n\n\t\tif (lowered.temps.length > 0 || lowered.type_helpers?.length) {\n\t\t\tconst temp_declarations = lowered.temps.map((temp) =>\n\t\t\t\ttemp.type\n\t\t\t\t\t? `let ${temp.name} = $state<${temp.type}>(undefined);`\n\t\t\t\t\t: `let ${temp.name} = $state(undefined);`,\n\t\t\t);\n\n\t\t\tconst prefix = [...(lowered.type_helpers ?? []), ...temp_declarations].join(\"\\n\");\n\n\t\t\tmagic.appendLeft(lowered.range.start, prefix + \"\\n\");\n\t\t}\n\n\t\teffect_blocks.push(...lowered.effect_blocks);\n\t\tuses_dispatcher_promise ||= lowered.uses_dispatcher_promise ?? false;\n\t\tuses_yield_success_types ||= lowered.temps.some(\n\t\t\t(temp) => temp.type?.includes(runtime_bindings.yield_success) ?? false,\n\t\t);\n\t}\n\n\tif (!has_effect) {\n\t\tblock_refs.push({ id: filename, kind: \"script\" });\n\n\t\treturn { code: content, blocks: block_refs };\n\t}\n\n\t/** Phase 3: inject runtime imports after the last user import. */\n\tconst imports = make_imports(\n\t\thas_effect_import,\n\t\thas_dispatcher_import,\n\t\thas_untrack_import,\n\t\thas_on_destroy_import,\n\t\truntime_bindings,\n\t\t{\n\t\t\tneeds_dispatcher: effect_blocks.length > 0 || uses_dispatcher_promise,\n\t\t\tneeds_effect: effect_blocks.length > 0,\n\t\t\tneeds_untrack: effect_blocks.length > 0,\n\t\t\t/** The server never registers disposal, so it never needs the import. */\n\t\t\tneeds_on_destroy: target !== \"server\",\n\t\t\tneeds_yield_success: uses_yield_success_types,\n\t\t\tneeds_yieldable: effect_blocks.length > 0 || uses_dispatcher_promise,\n\t\t\tneeds_scope_ref: true,\n\t\t},\n\t);\n\n\tconst last_import = [...source_file.statements].reverse().find(ts.isImportDeclaration);\n\tconst injection_point = last_import\n\t\t? Math.min(last_import.end, first_effect_statement_start)\n\t\t: first_effect_statement_start;\n\n\t/**\n\t * The scope holder is created synchronously with the imports so it exists\n\t * before any top-level `await`, and disposal is registered through\n\t * `onDestroy` during component initialisation. Emitting both here keeps\n\t * them ahead of every lowered statement that references the scope.\n\t */\n\tconst scope_wiring = [\n\t\t`const ${runtime_bindings.scope} = new ${runtime_bindings.component_scope_ref}(${runtime_bindings.dispatcher});`,\n\t\t...(target === \"server\"\n\t\t\t? []\n\t\t\t: [`${runtime_bindings.on_destroy}(() => ${runtime_bindings.scope}.dispose());`]),\n\t].join(\"\\n\");\n\n\tconst injected = [imports, scope_wiring].filter(Boolean).join(\"\\n\");\n\n\tif (last_import && last_import.end <= first_effect_statement_start) {\n\t\tmagic.appendRight(last_import.end, \"\\n\" + injected);\n\t} else if (injection_point >= 0) {\n\t\tmagic.appendLeft(injection_point, injected + \"\\n\");\n\t} else {\n\t\tmagic.appendLeft(first_effect_statement_start, injected + \"\\n\");\n\t}\n\n\t/** Phase 4: append the runtime program blocks. */\n\n\tif (effect_blocks.length > 0) {\n\t\tconst runtime_block = make_runtime_block_with_bindings(effect_blocks, runtime_bindings);\n\n\t\tmagic.append(\"\\n\" + runtime_block);\n\t}\n\n\tblock_refs.push({ id: filename, kind: \"script\" });\n\n\tconst code = magic.toString();\n\n\treturn {\n\t\tcode,\n\t\tblocks: block_refs,\n\t\tmap: create_source_map(magic, filename),\n\t\trelocations: create_script_relocations(\n\t\t\tcontent,\n\t\t\tcode,\n\t\t\tsource_file,\n\t\t\truntime_bindings.yieldable,\n\t\t),\n\t};\n}\n\nfunction create_script_relocations(\n\tcontent: string,\n\tcode: string,\n\tsource_file: ts.SourceFile,\n\tyieldable_name: string,\n): Relocation[] {\n\tconst candidates = source_file.statements.flatMap((stmt) => {\n\t\tconst relocations: RelocationCandidate[] = [];\n\n\t\tif (contains_top_level_yield_star(stmt) && ts.isVariableStatement(stmt)) {\n\t\t\tfor (const decl of stmt.declarationList.declarations) {\n\t\t\t\tcollect_binding_relocation_candidates(decl.name, relocations);\n\t\t\t}\n\t\t}\n\n\t\tcollect_yield_star_nodes(stmt, (node) => {\n\t\t\tconst expression = ts.isBinaryExpression(node) ? node.right : node;\n\t\t\tconst text = content.slice(expression.getStart(), expression.end).trim();\n\n\t\t\trelocations.push({\n\t\t\t\toriginalStart: expression.getStart(),\n\t\t\t\toriginalEnd: expression.end,\n\t\t\t\ttext,\n\t\t\t\tmatch: \"yield_operand\",\n\t\t\t\twrapper: `${yieldable_name}(${text})`,\n\t\t\t});\n\t\t});\n\n\t\treturn relocations;\n\t});\n\n\tconst used_ranges: Array<{ start: number; end: number }> = [];\n\tconst search_cursors = new Map<string, number>();\n\n\treturn candidates.flatMap((candidate) => {\n\t\tconst search_key = make_relocation_search_key(candidate);\n\t\tconst generated_start = find_available_generated_text(\n\t\t\tcode,\n\t\t\tcandidate,\n\t\t\tused_ranges,\n\t\t\tsearch_cursors.get(search_key) ?? 0,\n\t\t);\n\n\t\tif (generated_start < 0) {\n\t\t\tsearch_cursors.set(search_key, code.length);\n\n\t\t\treturn [];\n\t\t}\n\n\t\tconst generated_end = generated_start + candidate.text.length;\n\t\tused_ranges.push({ start: generated_start, end: generated_end });\n\t\tsearch_cursors.set(search_key, generated_end);\n\n\t\treturn [\n\t\t\t{\n\t\t\t\toriginalStart: candidate.originalStart,\n\t\t\t\toriginalEnd: candidate.originalEnd,\n\t\t\t\tgeneratedStart: generated_start,\n\t\t\t\tgeneratedEnd: generated_end,\n\t\t\t},\n\t\t];\n\t});\n}\n\ntype RelocationCandidate = {\n\toriginalStart: number;\n\toriginalEnd: number;\n\ttext: string;\n\tmatch: \"exact\" | \"identifier\" | \"yield_operand\";\n\twrapper?: string;\n};\n\nfunction make_relocation_search_key(candidate: RelocationCandidate): string {\n\treturn `${candidate.match}:${candidate.text}`;\n}\n\nfunction collect_binding_relocation_candidates(\n\tname: ts.BindingName,\n\tcandidates: RelocationCandidate[],\n): void {\n\tif (ts.isIdentifier(name)) {\n\t\tcandidates.push({\n\t\t\toriginalStart: name.getStart(),\n\t\t\toriginalEnd: name.end,\n\t\t\ttext: name.text,\n\t\t\tmatch: \"identifier\",\n\t\t});\n\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_relocation_candidates(element.name, candidates);\n\t}\n}\n\nfunction find_available_generated_text(\n\tcode: string,\n\tcandidate: RelocationCandidate,\n\tused_ranges: Array<{ start: number; end: number }>,\n\tsearch_start: number,\n): number {\n\twhile (search_start < code.length) {\n\t\tconst search_text =\n\t\t\tcandidate.match === \"yield_operand\" ? candidate.wrapper : candidate.text;\n\n\t\tif (!search_text) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tconst index = code.indexOf(search_text, search_start);\n\n\t\tif (index < 0) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tconst operand_offset =\n\t\t\tcandidate.match === \"yield_operand\" && candidate.wrapper\n\t\t\t\t? candidate.wrapper.indexOf(candidate.text)\n\t\t\t\t: 0;\n\t\tconst start = index + Math.max(operand_offset, 0);\n\t\tconst end = start + candidate.text.length;\n\t\tconst overlaps_used_range = used_ranges.some(\n\t\t\t(range) => start < range.end && end > range.start,\n\t\t);\n\t\tconst is_text_match =\n\t\t\tcandidate.match !== \"identifier\" || is_identifier_text_match(code, start, end);\n\n\t\tif (!overlaps_used_range && is_text_match) {\n\t\t\treturn start;\n\t\t}\n\n\t\tsearch_start = candidate.match === \"identifier\" ? index + 1 : index + search_text.length;\n\t}\n\n\treturn -1;\n}\n\nfunction is_identifier_text_match(code: string, start: number, end: number): boolean {\n\tconst before = start === 0 ? 0 : code.charCodeAt(start - 1);\n\tconst after = end >= code.length ? 0 : code.charCodeAt(end);\n\n\treturn !is_identifier_part(before) && !is_identifier_part(after);\n}\n\nfunction is_identifier_part(char_code: number): boolean {\n\treturn (\n\t\t(char_code >= 65 && char_code <= 90) ||\n\t\t(char_code >= 97 && char_code <= 122) ||\n\t\t(char_code >= 48 && char_code <= 57) ||\n\t\tchar_code === 36 ||\n\t\tchar_code === 95\n\t);\n}\n\nfunction validate_script_yield_boundaries(\n\tstmt: ts.Statement,\n\tcontent: string,\n\tfilename: string,\n): void {\n\tconst bad_member = find_class_member_with_yield_star(stmt);\n\n\tif (!bad_member) {\n\t\treturn;\n\t}\n\n\tthrow new PreprocessError(\n\t\t[\n\t\t\t`[ASYNC_EFFECT_IN_CLASS_MEMBER]: ${filename}: yield* cannot be used inside class members.`,\n\t\t\t`Class fields and methods are not component top-level reactive work. Move the Effect work into a script effect statement before assigning it to the class instance.`,\n\t\t\t\"\",\n\t\t\t\"Problematic member:\",\n\t\t\tslice(content, bad_member),\n\t\t].join(\"\\n\"),\n\t\tfilename,\n\t);\n}\n\nfunction find_class_member_with_yield_star(stmt: ts.Statement): ts.Node | undefined {\n\tlet found: ts.Node | undefined;\n\n\tfunction visit(node: ts.Node): void {\n\t\tif (found) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\tts.isPropertyDeclaration(node) &&\n\t\t\tnode.initializer &&\n\t\t\tcontains_top_level_yield_star(node.initializer)\n\t\t) {\n\t\t\tfound = node;\n\t\t\treturn;\n\t\t}\n\n\t\tnode.forEachChild(visit);\n\t}\n\n\tvisit(stmt);\n\n\treturn found;\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\nfunction make_generated_name(hint: string, suffix: string): string {\n\tconst normalized_hint = hint.replace(/[^A-Za-z0-9_$]/g, \"_\");\n\tconst safe_hint = /^[A-Za-z_$]/.test(normalized_hint)\n\t\t? normalized_hint\n\t\t: `temp_${normalized_hint}`;\n\n\treturn `__SER___${safe_hint}${suffix}`;\n}\n","import { type MarkupTransformTarget, transform_markup_effect } from \"$/markup/transform.ts\";\nimport { scan_svelte_effect_source } from \"$/compiler/source-scan.ts\";\nimport { transform_script_effect } from \"$/script-transform/index.ts\";\n\n/**\n * Result returned by the direct whole-file Svelte transform.\n *\n * @example\n * ```ts\n * const result = transform_svelte_effect(\"<p>{yield* load()}</p>\", \"App.svelte\");\n * result.code;\n * ```\n *\n * @since 2.5.0\n */\nexport interface SvelteTransformResult {\n\t/** Transformed Svelte source. */\n\tcode: string;\n}\n\n/**\n * Options accepted by the direct whole-file Svelte transform.\n *\n * @example\n * ```ts\n * const options: SvelteTransformOptions = { target: \"client\" };\n * ```\n *\n * @since 2.5.0\n */\nexport interface SvelteTransformOptions {\n\t/** Markup emission target passed through to the markup transform. */\n\ttarget?: MarkupTransformTarget;\n}\n\n/**\n * Lowers SER syntax in a complete Svelte component without using Svelte's\n * adapter API.\n *\n * @example\n * ```ts\n * const result = transform_svelte_effect(\n * \"<script effect>const value = yield* load()</script>\",\n * \"App.svelte\",\n * );\n * ```\n *\n * @since 2.5.0\n * @param content - Full Svelte component source to lower before Svelte parses\n * it.\n * @param filename - Component filename used in generated cache identifiers and\n * diagnostics.\n * @param options - Optional target configuration for markup lowering.\n * @returns The transformed component source.\n */\nexport function transform_svelte_effect(\n\tcontent: string,\n\tfilename = \"unknown.svelte\",\n\toptions: SvelteTransformOptions = {},\n): SvelteTransformResult {\n\tconst scan = scan_svelte_effect_source(content, filename);\n\tconst script = scan.effect_script;\n\n\tlet combined = content;\n\n\tif (script) {\n\t\tconst effect_attribute = script.effect_attribute;\n\t\tconst effect_attribute_start = effect_attribute?.start ?? script.opening_tag_end;\n\t\tconst effect_attribute_end = effect_attribute?.end ?? script.opening_tag_end;\n\t\tconst result = transform_script_effect(script.text, filename, {\n\t\t\temit_types: script.is_typescript,\n\t\t\ttarget: options.target ?? \"client\",\n\t\t});\n\n\t\tcombined =\n\t\t\tcontent.slice(0, effect_attribute_start) +\n\t\t\tcontent.slice(effect_attribute_end, script.opening_tag_end) +\n\t\t\tresult.code +\n\t\t\tcontent.slice(script.closing_tag_start);\n\t}\n\n\tconst markup_options = options.target === undefined ? {} : { target: options.target };\n\tconst result = transform_markup_effect(combined, filename, markup_options);\n\n\treturn { code: result.code };\n}\n\nexport {\n\ttype MarkupTransformOptions,\n\ttype MarkupTransformResult,\n\ttype MarkupTransformTarget,\n\ttransform_markup_effect,\n} from \"$/markup/transform.ts\";\n\nexport {\n\ttype BlockRef,\n\ttype ScriptTransformResult,\n\ttransform_script_effect,\n} from \"$/script-transform/index.ts\";\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transform.js","names":[],"sources":["../../../modules/svelte-effect-runtime/src/script-transform/runtime-block.ts","../../../modules/svelte-effect-runtime/src/script-transform/lower.ts","../../../modules/svelte-effect-runtime/src/script-transform/index.ts","../../../modules/svelte-effect-runtime/src/runtime/transform.ts"],"sourcesContent":["import type { EffectBlock, RuntimeImportBindings } from \"./types.ts\";\n\nexport function make_runtime_block_with_bindings(\n\tblocks: EffectBlock[],\n\tbindings: RuntimeImportBindings,\n): string {\n\treturn blocks.map((block) => make_runtime_effect_block(block, bindings)).join(\"\\n\");\n}\n\nfunction make_runtime_effect_block(block: EffectBlock, bindings: RuntimeImportBindings): string {\n\tconst dep_reads = block.deps.map((dep) => ` ${dep};`);\n\n\tconst body = block.statements.map((statement) => ` ${statement}`).join(\"\\n\");\n\n\treturn [\n\t\t\"\",\n\t\t\"$effect(() => {\",\n\t\t...dep_reads,\n\t\t` const ${bindings.dispatcher_value} = ${bindings.dispatcher}();`,\n\t\t` const ${bindings.program} = ${bindings.effect}.gen(function* () {`,\n\t\tbody,\n\t\t\" });\",\n\t\t` const ${bindings.cancel} = ${bindings.untrack}(() => ${bindings.dispatcher_value}.run_scoped(${bindings.scope}.scope, ${bindings.program}));`,\n\t\t` import.meta.hot?.dispose(${bindings.cancel});`,\n\t\t` return ${bindings.cancel};`,\n\t\t\"});\",\n\t\t\"\",\n\t].join(\"\\n\");\n}\n","import type {\n\tEffectBlock,\n\tLoweredExpression,\n\tLoweredStatement,\n\tScriptLoweringContext,\n\tTempBinding,\n} from \"./types.ts\";\nimport { collect_yield_star_nodes, find_yield_star_node, is_yield_star_expression } from \"./ast.ts\";\nimport { collect_free_identifiers } from \"$/markup/transform/expressions.ts\";\nimport { contains_top_level_yield_star } from \"$/detect.ts\";\nimport { slice, slice_start } from \"./source.ts\";\n\nimport ts from \"typescript\";\n\nexport function lower_statement(\n\tstmt: ts.Statement,\n\tcontent: string,\n\tcontext: ScriptLoweringContext,\n): LoweredStatement {\n\tif (ts.isExpressionStatement(stmt)) {\n\t\treturn lower_expression_statement(stmt, content, context);\n\t}\n\n\tif (ts.isVariableStatement(stmt)) {\n\t\treturn lower_variable_statement(stmt, content, context);\n\t}\n\n\tconst text = slice(content, stmt);\n\tconst wrapped_text = wrap_yield_stars_in_node(stmt, content, context);\n\n\treturn {\n\t\ttemps: [],\n\t\trewritten_text: \"\",\n\t\teffect_blocks: [make_effect_block([wrapped_text], collect_deps(text))],\n\t\trange: { start: stmt.getFullStart(), end: stmt.end },\n\t};\n}\n\nfunction lower_variable_statement(\n\tstmt: ts.VariableStatement,\n\tcontent: string,\n\tcontext: ScriptLoweringContext,\n): LoweredStatement {\n\tconst helper_declarations: string[] = [];\n\tconst rewritten_decls: string[] = [];\n\n\tconst decl_list = stmt.declarationList;\n\tconst kind = (decl_list.flags & ts.NodeFlags.Let) !== 0 ? \"let\" : \"const\";\n\tconst modifiers = ts.getModifiers(stmt) ?? [];\n\tlet uses_dispatcher_promise = false;\n\n\tfor (const decl of decl_list.declarations) {\n\t\tif (!contains_top_level_yield_star(decl)) {\n\t\t\trewritten_decls.push(slice(content, decl).trim());\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst lowered = lower_node_yields_to_await(\n\t\t\tdecl,\n\t\t\tcontent,\n\t\t\tmake_binding_hint(decl.name),\n\t\t\tcontext,\n\t\t);\n\n\t\thelper_declarations.push(...lowered.helper_declarations);\n\t\trewritten_decls.push(lowered.rewritten_text);\n\t\tuses_dispatcher_promise ||= lowered.uses_dispatcher_promise;\n\t}\n\n\t/**\n\t * The rewritten range starts at the statement itself, which covers any\n\t * modifiers, so `export` has to be re-emitted or the binding silently stops\n\t * being a component export.\n\t */\n\tconst modifier_prefix = modifiers.map((modifier) => slice_start(content, modifier)).join(\" \");\n\n\tconst rewritten_text = [modifier_prefix, `${kind} ${rewritten_decls.join(\", \")};`]\n\t\t.filter(Boolean)\n\t\t.join(\" \");\n\n\treturn {\n\t\ttemps: [],\n\t\ttype_helpers: helper_declarations,\n\t\trewritten_text,\n\t\teffect_blocks: [],\n\t\tuses_dispatcher_promise,\n\t\trange: { start: stmt.getStart(), end: stmt.end },\n\t};\n}\n\nfunction lower_expression_statement(\n\tstmt: ts.ExpressionStatement,\n\tcontent: string,\n\tcontext: ScriptLoweringContext,\n): LoweredStatement {\n\tconst expr = stmt.expression;\n\n\tif (!contains_top_level_yield_star(expr)) {\n\t\treturn {\n\t\t\ttemps: [],\n\t\t\trewritten_text: slice(content, stmt).trim(),\n\t\t\teffect_blocks: [],\n\t\t\trange: { start: stmt.getStart(), end: stmt.end },\n\t\t};\n\t}\n\n\tif (is_yield_star_expression(expr)) {\n\t\t/**\n\t\t * Leading trivia must stay out of the sliced expression: a comment ahead\n\t\t * of the yield* would defeat the anchored strip in wrap_yield_text and\n\t\t * leave a second yield* nested inside the ToEffect argument.\n\t\t */\n\t\tconst text = slice_start(content, expr).trim();\n\t\tconst yield_text = wrap_yield_text(text, context);\n\n\t\treturn {\n\t\t\ttemps: [],\n\t\t\trewritten_text: \"\",\n\t\t\teffect_blocks: [make_effect_block([yield_text + \";\"], collect_deps(text))],\n\t\t\trange: { start: stmt.getFullStart(), end: stmt.end },\n\t\t};\n\t}\n\n\tif (ts.isBinaryExpression(expr) && is_assignment_operator(expr)) {\n\t\tconst target = slice(content, expr.left).trim();\n\t\tconst target_names = collect_assignment_target_names(expr.left);\n\n\t\tif (\n\t\t\texpr.operatorToken.kind === ts.SyntaxKind.EqualsToken &&\n\t\t\tis_yield_star_expression(expr.right)\n\t\t) {\n\t\t\tconst yield_text = extract_yield_star_full_text(expr.right, content);\n\t\t\tconst wrapped_yield_text = wrap_yield_text(yield_text, context);\n\n\t\t\treturn {\n\t\t\t\ttemps: [],\n\t\t\t\trewritten_text: \"\",\n\t\t\t\teffect_blocks: [\n\t\t\t\t\tmake_effect_block(\n\t\t\t\t\t\t[`${target} = ${wrapped_yield_text};`],\n\t\t\t\t\t\tcollect_deps(yield_text, target_names),\n\t\t\t\t\t),\n\t\t\t\t],\n\t\t\t\trange: { start: stmt.getStart(), end: stmt.end },\n\t\t\t};\n\t\t}\n\n\t\tconst lowered = lower_expression_yields(\n\t\t\texpr.right,\n\t\t\tcontent,\n\t\t\tmake_temp_hint(target),\n\t\t\tcontext,\n\t\t);\n\t\tconst temp_names = lowered.temps.map((temp) => temp.name);\n\t\tconst statement = `${target} ${slice(\n\t\t\tcontent,\n\t\t\texpr.operatorToken,\n\t\t).trim()} ${lowered.rewritten_expr};`;\n\n\t\treturn {\n\t\t\ttemps: lowered.temps,\n\t\t\ttype_helpers: lowered.type_helpers,\n\t\t\trewritten_text: \"\",\n\t\t\teffect_blocks: [\n\t\t\t\tmake_effect_block(\n\t\t\t\t\t[...lowered.effect_blocks.flatMap((block) => block.statements), statement],\n\t\t\t\t\t[\n\t\t\t\t\t\t...lowered.effect_blocks.flatMap((block) => block.deps),\n\t\t\t\t\t\t...collect_deps(lowered.rewritten_expr, [...target_names, ...temp_names]),\n\t\t\t\t\t],\n\t\t\t\t),\n\t\t\t],\n\t\t\trange: { start: stmt.getStart(), end: stmt.end },\n\t\t};\n\t}\n\n\tconst lowered = lower_expression_yields(expr, content, \"call\", context);\n\n\tif (is_top_level_rune_call(expr)) {\n\t\treturn {\n\t\t\ttemps: lowered.temps,\n\t\t\ttype_helpers: lowered.type_helpers,\n\t\t\trewritten_text: lowered.rewritten_expr + \";\",\n\t\t\teffect_blocks: lowered.effect_blocks,\n\t\t\trange: { start: stmt.getStart(), end: stmt.end },\n\t\t};\n\t}\n\n\tconst temp_names = lowered.temps.map((temp) => temp.name);\n\n\treturn {\n\t\ttemps: lowered.temps,\n\t\ttype_helpers: lowered.type_helpers,\n\t\trewritten_text: \"\",\n\t\teffect_blocks: [\n\t\t\tmake_effect_block(\n\t\t\t\t[\n\t\t\t\t\t...lowered.effect_blocks.flatMap((block) => block.statements),\n\t\t\t\t\tlowered.rewritten_expr + \";\",\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t...lowered.effect_blocks.flatMap((block) => block.deps),\n\t\t\t\t\t...collect_deps(lowered.rewritten_expr, temp_names),\n\t\t\t\t],\n\t\t\t),\n\t\t],\n\t\trange: { start: stmt.getStart(), end: stmt.end },\n\t};\n}\n\nfunction lower_expression_yields(\n\texpr: ts.Expression,\n\tcontent: string,\n\thint: string,\n\tcontext: ScriptLoweringContext,\n): LoweredExpression {\n\tconst replacements: Array<{\n\t\tstart: number;\n\t\tend: number;\n\t\ttext: string;\n\t}> = [];\n\n\tconst temps: TempBinding[] = [];\n\tconst type_helpers: string[] = [];\n\tconst statements: string[] = [];\n\tconst deps: string[] = [];\n\n\tcollect_yield_star_nodes(expr, (node) => {\n\t\tconst temp_name = context.next_temp_name(hint);\n\t\tconst yield_text = slice_start(content, node).trim();\n\t\tconst type_helper = make_yield_type_helper(yield_text, hint, context);\n\n\t\tif (type_helper) {\n\t\t\ttype_helpers.push(type_helper.declaration);\n\t\t\ttemps.push({ name: temp_name, type: type_helper.type });\n\t\t} else {\n\t\t\ttemps.push({ name: temp_name });\n\t\t}\n\n\t\tstatements.push(`${temp_name} = ${wrap_yield_text(yield_text, context)};`);\n\t\tdeps.push(...collect_deps(yield_text));\n\t\treplacements.push({\n\t\t\tstart: node.getStart(),\n\t\t\tend: node.end,\n\t\t\ttext: temp_name,\n\t\t});\n\t});\n\n\tif (replacements.length === 0) {\n\t\treturn {\n\t\t\ttemps,\n\t\t\ttype_helpers,\n\t\t\trewritten_expr: slice(content, expr).trim(),\n\t\t\teffect_blocks: [],\n\t\t};\n\t}\n\n\treplacements.sort((a, b) => b.start - a.start);\n\n\tlet text = slice(content, expr);\n\n\tconst offset_in_expr = expr.getFullStart();\n\n\tfor (const replacement of replacements) {\n\t\ttext =\n\t\t\ttext.slice(0, replacement.start - offset_in_expr) +\n\t\t\treplacement.text +\n\t\t\ttext.slice(replacement.end - offset_in_expr);\n\t}\n\n\treturn {\n\t\ttemps,\n\t\ttype_helpers,\n\t\trewritten_expr: text.trim(),\n\t\teffect_blocks: [make_effect_block(statements, deps)],\n\t};\n}\n\nfunction lower_node_yields_to_await(\n\tnode: ts.Node,\n\tcontent: string,\n\thint: string,\n\tcontext: ScriptLoweringContext,\n): {\n\thelper_declarations: string[];\n\trewritten_text: string;\n\tuses_dispatcher_promise: boolean;\n} {\n\tconst helper_declarations: string[] = [];\n\tconst replacements: Array<{\n\t\tstart: number;\n\t\tend: number;\n\t\ttext: string;\n\t}> = [];\n\n\tcollect_yield_star_nodes(node, (yield_node) => {\n\t\tconst awaited = make_awaited_yield_expression(yield_node, content, hint, context);\n\n\t\thelper_declarations.push(awaited.declaration);\n\t\treplacements.push({\n\t\t\tstart: yield_node.getStart(),\n\t\t\tend: yield_node.end,\n\t\t\ttext: awaited.expression,\n\t\t});\n\t});\n\n\treplacements.sort((a, b) => b.start - a.start);\n\n\tlet text = slice_start(content, node);\n\tconst offset_in_node = node.getStart();\n\n\tfor (const replacement of replacements) {\n\t\ttext =\n\t\t\ttext.slice(0, replacement.start - offset_in_node) +\n\t\t\treplacement.text +\n\t\t\ttext.slice(replacement.end - offset_in_node);\n\t}\n\n\treturn {\n\t\thelper_declarations,\n\t\trewritten_text: text.trim(),\n\t\tuses_dispatcher_promise: replacements.length > 0,\n\t};\n}\n\nfunction make_awaited_yield_expression(\n\tnode: ts.Node,\n\tcontent: string,\n\thint: string,\n\tcontext: ScriptLoweringContext,\n): { declaration: string; expression: string } {\n\tconst yield_text = slice_start(content, node).trim();\n\tconst helper_name = context.next_helper_name(`effect_${hint}`);\n\tconst helper_id = make_script_effect_id(node, context);\n\tconst deps = collect_deps(yield_text);\n\tconst deps_text = `[${deps.join(\", \")}]`;\n\tconst wrapped_yield_text = wrap_yield_text(yield_text, context);\n\n\treturn {\n\t\tdeclaration: `function* ${helper_name}() { return (${wrapped_yield_text}); }`,\n\t\texpression: [\n\t\t\t`await ${context.dispatcher_name}().with_scope(${context.scope_name}.scope, () => ${context.dispatcher_name}().promise({`,\n\t\t\t`id: ${JSON.stringify(helper_id)}, `,\n\t\t\t`deps: ${deps_text}, `,\n\t\t\t`factory: () => ${helper_name}()`,\n\t\t\t`}))`,\n\t\t].join(\"\"),\n\t};\n}\n\nfunction make_yield_type_helper(\n\tyield_text: string,\n\thint: string,\n\tcontext: ScriptLoweringContext,\n): { declaration: string; type: string } | undefined {\n\tif (!context.emit_types) {\n\t\treturn undefined;\n\t}\n\n\tconst helper_name = context.next_type_helper_name(hint);\n\tconst effect_text = strip_yield_star(yield_text);\n\n\treturn {\n\t\tdeclaration: `function ${helper_name}() { return (${effect_text}); }`,\n\t\ttype: `${context.yield_success_name}<ReturnType<typeof ${helper_name}>> | undefined`,\n\t};\n}\n\nfunction strip_yield_star(yield_text: string): string {\n\treturn yield_text.replace(/^yield\\s*\\*\\s*/, \"\");\n}\n\nfunction wrap_yield_text(yield_text: string, context: ScriptLoweringContext): string {\n\treturn `yield* ${context.yieldable_name}(${strip_yield_star(yield_text)})`;\n}\n\nfunction wrap_yield_stars_in_node(\n\tnode: ts.Node,\n\tcontent: string,\n\tcontext: ScriptLoweringContext,\n): string {\n\tconst replacements: Array<{\n\t\tstart: number;\n\t\tend: number;\n\t\ttext: string;\n\t}> = [];\n\n\tcollect_yield_star_nodes(node, (yield_node) => {\n\t\tconst yield_text = slice_start(content, yield_node).trim();\n\n\t\treplacements.push({\n\t\t\tstart: yield_node.getStart(),\n\t\t\tend: yield_node.end,\n\t\t\ttext: wrap_yield_text(yield_text, context),\n\t\t});\n\t});\n\n\treplacements.sort((a, b) => b.start - a.start);\n\n\tconst offset = node.getFullStart();\n\tlet text = slice(content, node);\n\n\tfor (const replacement of replacements) {\n\t\ttext =\n\t\t\ttext.slice(0, replacement.start - offset) +\n\t\t\treplacement.text +\n\t\t\ttext.slice(replacement.end - offset);\n\t}\n\n\treturn text.trim();\n}\n\nfunction make_script_effect_id(expr: ts.Node, context: ScriptLoweringContext): string {\n\treturn `${context.filename}:${expr.getStart()}:${expr.end}`;\n}\n\nfunction is_assignment_operator(expr: ts.BinaryExpression): boolean {\n\treturn (\n\t\texpr.operatorToken.kind >= ts.SyntaxKind.FirstAssignment &&\n\t\texpr.operatorToken.kind <= ts.SyntaxKind.LastAssignment\n\t);\n}\n\nfunction is_top_level_rune_call(expr: ts.Expression): boolean {\n\tif (!ts.isCallExpression(expr)) {\n\t\treturn false;\n\t}\n\n\tconst callee = expr.expression;\n\n\tif (ts.isIdentifier(callee)) {\n\t\treturn callee.text.startsWith(\"$\");\n\t}\n\n\treturn (\n\t\tts.isPropertyAccessExpression(callee) &&\n\t\tts.isIdentifier(callee.expression) &&\n\t\tcallee.expression.text.startsWith(\"$\")\n\t);\n}\n\nfunction make_temp_hint(target: string): string {\n\tconst match = target.match(/[A-Za-z_$][\\w$]*$/);\n\n\treturn match?.[0] ?? \"assignment\";\n}\n\nfunction make_binding_hint(name: ts.BindingName): string {\n\tif (ts.isIdentifier(name)) {\n\t\treturn name.text;\n\t}\n\n\treturn \"destructure\";\n}\n\nfunction extract_yield_star_full_text(expr: ts.Expression, content: string): string {\n\tlet found: string | undefined;\n\n\tfind_yield_star_node(expr, (node) => {\n\t\tfound = slice_start(content, node).trim();\n\t});\n\n\treturn found ?? \"undefined\";\n}\n\nfunction make_effect_block(statements: string[], deps: string[]): EffectBlock {\n\treturn {\n\t\tstatements,\n\t\tdeps: [...new Set(deps)],\n\t};\n}\n\nfunction collect_deps(expr_text: string, excluded_names: readonly string[] = []): string[] {\n\tconst excluded = new Set(excluded_names);\n\n\treturn collect_free_identifiers(expr_text).filter(\n\t\t(identifier) => !identifier.startsWith(\"__SER___\") && !excluded.has(identifier),\n\t);\n}\n\nfunction collect_assignment_target_names(node: ts.Node): string[] {\n\tif (ts.isIdentifier(node)) {\n\t\treturn [node.text];\n\t}\n\n\tif (ts.isParenthesizedExpression(node)) {\n\t\treturn collect_assignment_target_names(node.expression);\n\t}\n\n\tif (ts.isPropertyAccessExpression(node) || ts.isElementAccessExpression(node)) {\n\t\treturn collect_assignment_target_names(node.expression);\n\t}\n\n\tif (ts.isObjectLiteralExpression(node)) {\n\t\treturn node.properties.flatMap((property) => {\n\t\t\tif (ts.isShorthandPropertyAssignment(property)) {\n\t\t\t\treturn [property.name.text];\n\t\t\t}\n\n\t\t\tif (ts.isPropertyAssignment(property)) {\n\t\t\t\treturn collect_assignment_target_names(property.initializer);\n\t\t\t}\n\n\t\t\tif (ts.isSpreadAssignment(property)) {\n\t\t\t\treturn collect_assignment_target_names(property.expression);\n\t\t\t}\n\n\t\t\treturn [];\n\t\t});\n\t}\n\n\tif (ts.isArrayLiteralExpression(node)) {\n\t\treturn node.elements.flatMap((element) =>\n\t\t\tts.isSpreadElement(element)\n\t\t\t\t? collect_assignment_target_names(element.expression)\n\t\t\t\t: collect_assignment_target_names(element),\n\t\t);\n\t}\n\n\treturn [];\n}\n","import type {\n\tBlockRef,\n\tEffectBlock,\n\tRelocation,\n\tRuntimeImportBindings,\n\tScriptLoweringContext,\n\tScriptTransformResult,\n} from \"./types.ts\";\nimport {\n\tcollect_top_level_binding_names,\n\thas_local_import_binding,\n\tmake_imports,\n} from \"./imports.ts\";\nimport { collect_yield_star_nodes, contains_top_level_await } from \"./ast.ts\";\nimport { AwaitInEffectWorkError, PreprocessError } from \"$/errors.ts\";\nimport { make_runtime_block_with_bindings } from \"./runtime-block.ts\";\nimport { contains_top_level_yield_star } from \"$/detect.ts\";\nimport { create_source_map, slice } from \"./source.ts\";\nimport { validate_rune_yield_usage } from \"./runes.ts\";\nimport { lower_statement } from \"./lower.ts\";\nimport type { MarkupTransformTarget } from \"$/markup/transform.ts\";\n\nimport MagicString from \"magic-string\";\nimport ts from \"typescript\";\n\nexport type { BlockRef, ScriptTransformResult } from \"./types.ts\";\n\ninterface ScriptTransformOptions {\n\temit_types?: boolean;\n\ttarget?: MarkupTransformTarget;\n}\n\n/**\n * Transforms a `<script effect>` body by lowering top-level `yield*`\n * expressions into Svelte-compatible async rendering declarations or into\n * dependency-tracked `$effect` blocks for effectful statements.\n *\n * @example\n * ```ts\n * const result = transform_script_effect(\n * `let user = $state(yield* getUser(id));`,\n * \"App.svelte\",\n * );\n * ```\n *\n * @since 2.0.0\n * @param content - The raw `<script effect>` body content.\n * @param filename - The source filename, used in error messages.\n * @param options - Optional transform settings for generated script code.\n * @returns The transformed code and any block references.\n */\nexport function transform_script_effect(\n\tcontent: string,\n\tfilename: string,\n\toptions: ScriptTransformOptions = {},\n): ScriptTransformResult {\n\tlet temp_counter = 0;\n\tconst target = options.target ?? \"client\";\n\n\tconst source_file = ts.createSourceFile(\n\t\tfilename,\n\t\tcontent,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tts.ScriptKind.TS,\n\t);\n\n\tconst magic = new MagicString(content);\n\tconst effect_blocks: EffectBlock[] = [];\n\tconst block_refs: BlockRef[] = [];\n\tconst top_level_binding_names = collect_top_level_binding_names(source_file);\n\tconst top_level_binding_names_set = new Set(top_level_binding_names);\n\tconst name_allocator = make_name_allocator(top_level_binding_names);\n\tconst emit_types = options.emit_types ?? true;\n\n\tlet has_effect = false;\n\tlet first_effect_statement_start = content.length;\n\tlet uses_dispatcher_promise = false;\n\tlet uses_yield_success_types = false;\n\n\t/** Phase 1: detect imports already provided by the user. */\n\tconst has_effect_import = has_local_import_binding(source_file, \"effect\", \"Effect\");\n\n\tconst has_dispatcher_import = has_local_import_binding(\n\t\tsource_file,\n\t\t\"svelte-effect-runtime/internal/generators\",\n\t\t\"get_dispatcher\",\n\t);\n\n\tconst has_untrack_import = has_local_import_binding(source_file, \"svelte\", \"untrack\");\n\tconst has_on_destroy_import = has_local_import_binding(\n\t\tsource_file,\n\t\t\"svelte\",\n\t\t\"onDestroy\",\n\t\tfalse,\n\t);\n\n\tconst reserve_runtime_import = (name: string) =>\n\t\ttop_level_binding_names_set.has(name)\n\t\t\t? name_allocator.reserve(make_generated_name(name, \"\"))\n\t\t\t: name_allocator.reserve(name);\n\n\tconst runtime_bindings: RuntimeImportBindings = {\n\t\tcancel: name_allocator.reserve(\"__SER___cancel\"),\n\t\tcomponent_scope_ref: reserve_runtime_import(\"ComponentScopeRef\"),\n\t\tdispatcher: has_dispatcher_import\n\t\t\t? \"get_dispatcher\"\n\t\t\t: reserve_runtime_import(\"get_dispatcher\"),\n\t\tdispatcher_value: name_allocator.reserve(\"__SER___dispatcher\"),\n\t\teffect: has_effect_import ? \"Effect\" : reserve_runtime_import(\"Effect\"),\n\t\ton_destroy: has_on_destroy_import ? \"onDestroy\" : reserve_runtime_import(\"onDestroy\"),\n\t\tprogram: name_allocator.reserve(\"__SER___program\"),\n\t\tscope: name_allocator.reserve(\"__SER___scope\"),\n\t\tuntrack: has_untrack_import ? \"untrack\" : reserve_runtime_import(\"untrack\"),\n\t\tyield_success: reserve_runtime_import(\"YieldSuccess\"),\n\t\tyieldable: reserve_runtime_import(\"ToEffect\"),\n\t};\n\n\tconst context: ScriptLoweringContext = {\n\t\tfilename,\n\t\tdispatcher_name: runtime_bindings.dispatcher,\n\t\tscope_name: runtime_bindings.scope,\n\t\teffect_name: runtime_bindings.effect,\n\t\temit_types,\n\t\tyield_success_name: runtime_bindings.yield_success,\n\t\tyieldable_name: runtime_bindings.yieldable,\n\t\tnext_helper_name(hint?: string) {\n\t\t\treturn name_allocator.reserve(make_generated_name(hint ?? \"helper\", \"\"));\n\t\t},\n\t\tnext_temp_name(hint?: string) {\n\t\t\tconst suffix = temp_counter === 0 ? \"\" : `_${temp_counter}`;\n\t\t\tconst name = make_generated_name(hint ?? String(temp_counter), suffix);\n\n\t\t\ttemp_counter += 1;\n\n\t\t\treturn name_allocator.reserve(name);\n\t\t},\n\t\tnext_type_helper_name(hint?: string) {\n\t\t\treturn name_allocator.reserve(make_generated_name(`type_${hint ?? \"effect\"}`, \"\"));\n\t\t},\n\t};\n\n\t/** Phase 2: lower every top-level statement that contains `yield*`. */\n\tfor (const stmt of source_file.statements) {\n\t\tvalidate_rune_yield_usage(stmt, content, filename);\n\t\tvalidate_script_yield_boundaries(stmt, content, filename);\n\n\t\tconst has_top_level_yield_star = contains_top_level_yield_star(stmt);\n\n\t\tif (!has_top_level_yield_star) {\n\t\t\tcontinue;\n\t\t}\n\n\t\thas_effect = true;\n\n\t\tconst lowered = lower_statement(stmt, content, context);\n\n\t\tfirst_effect_statement_start = Math.min(first_effect_statement_start, lowered.range.start);\n\n\t\tif (lowered.effect_blocks.length > 0 && contains_top_level_await(stmt)) {\n\t\t\tconst text = slice(content, stmt);\n\t\t\tthrow new AwaitInEffectWorkError(filename, text);\n\t\t}\n\n\t\tmagic.overwrite(lowered.range.start, lowered.range.end, lowered.rewritten_text);\n\n\t\tif (lowered.temps.length > 0 || lowered.type_helpers?.length) {\n\t\t\tconst temp_declarations = lowered.temps.map((temp) =>\n\t\t\t\ttemp.type\n\t\t\t\t\t? `let ${temp.name} = $state<${temp.type}>(undefined);`\n\t\t\t\t\t: `let ${temp.name} = $state(undefined);`,\n\t\t\t);\n\n\t\t\tconst prefix = [...(lowered.type_helpers ?? []), ...temp_declarations].join(\"\\n\");\n\n\t\t\tmagic.appendLeft(lowered.range.start, prefix + \"\\n\");\n\t\t}\n\n\t\teffect_blocks.push(...lowered.effect_blocks);\n\t\tuses_dispatcher_promise ||= lowered.uses_dispatcher_promise ?? false;\n\t\tuses_yield_success_types ||= lowered.temps.some(\n\t\t\t(temp) => temp.type?.includes(runtime_bindings.yield_success) ?? false,\n\t\t);\n\t}\n\n\tif (!has_effect) {\n\t\tblock_refs.push({ id: filename, kind: \"script\" });\n\n\t\treturn { code: content, blocks: block_refs };\n\t}\n\n\t/** Phase 3: inject runtime imports after the last user import. */\n\tconst imports = make_imports(\n\t\thas_effect_import,\n\t\thas_dispatcher_import,\n\t\thas_untrack_import,\n\t\thas_on_destroy_import,\n\t\truntime_bindings,\n\t\t{\n\t\t\tneeds_dispatcher: effect_blocks.length > 0 || uses_dispatcher_promise,\n\t\t\tneeds_effect: effect_blocks.length > 0,\n\t\t\tneeds_untrack: effect_blocks.length > 0,\n\t\t\t/** The server never registers disposal, so it never needs the import. */\n\t\t\tneeds_on_destroy: target !== \"server\",\n\t\t\tneeds_yield_success: uses_yield_success_types,\n\t\t\tneeds_yieldable: effect_blocks.length > 0 || uses_dispatcher_promise,\n\t\t\tneeds_scope_ref: true,\n\t\t},\n\t);\n\n\tconst last_import = [...source_file.statements].reverse().find(ts.isImportDeclaration);\n\tconst injection_point = last_import\n\t\t? Math.min(last_import.end, first_effect_statement_start)\n\t\t: first_effect_statement_start;\n\n\t/**\n\t * The scope holder is created synchronously with the imports so it exists\n\t * before any top-level `await`, and disposal is registered through\n\t * `onDestroy` during component initialisation. Emitting both here keeps\n\t * them ahead of every lowered statement that references the scope.\n\t */\n\tconst scope_wiring = [\n\t\t`const ${runtime_bindings.scope} = new ${runtime_bindings.component_scope_ref}(${runtime_bindings.dispatcher});`,\n\t\t...(target === \"server\"\n\t\t\t? []\n\t\t\t: [`${runtime_bindings.on_destroy}(() => ${runtime_bindings.scope}.dispose());`]),\n\t].join(\"\\n\");\n\n\tconst injected = [imports, scope_wiring].filter(Boolean).join(\"\\n\");\n\n\tif (last_import && last_import.end <= first_effect_statement_start) {\n\t\tmagic.appendRight(last_import.end, \"\\n\" + injected);\n\t} else if (injection_point >= 0) {\n\t\tmagic.appendLeft(injection_point, injected + \"\\n\");\n\t} else {\n\t\tmagic.appendLeft(first_effect_statement_start, injected + \"\\n\");\n\t}\n\n\t/** Phase 4: append the runtime program blocks. */\n\n\tif (effect_blocks.length > 0) {\n\t\tconst runtime_block = make_runtime_block_with_bindings(effect_blocks, runtime_bindings);\n\n\t\tmagic.append(\"\\n\" + runtime_block);\n\t}\n\n\tblock_refs.push({ id: filename, kind: \"script\" });\n\n\tconst code = magic.toString();\n\n\treturn {\n\t\tcode,\n\t\tblocks: block_refs,\n\t\tmap: create_source_map(magic, filename),\n\t\trelocations: create_script_relocations(\n\t\t\tcontent,\n\t\t\tcode,\n\t\t\tsource_file,\n\t\t\truntime_bindings.yieldable,\n\t\t),\n\t};\n}\n\nfunction create_script_relocations(\n\tcontent: string,\n\tcode: string,\n\tsource_file: ts.SourceFile,\n\tyieldable_name: string,\n): Relocation[] {\n\tconst candidates = source_file.statements.flatMap((stmt) => {\n\t\tconst relocations: RelocationCandidate[] = [];\n\n\t\tif (contains_top_level_yield_star(stmt) && ts.isVariableStatement(stmt)) {\n\t\t\tfor (const decl of stmt.declarationList.declarations) {\n\t\t\t\tcollect_binding_relocation_candidates(decl.name, relocations);\n\t\t\t}\n\t\t}\n\n\t\tcollect_yield_star_nodes(stmt, (node) => {\n\t\t\tconst expression = ts.isBinaryExpression(node) ? node.right : node;\n\t\t\tconst text = content.slice(expression.getStart(), expression.end).trim();\n\n\t\t\trelocations.push({\n\t\t\t\toriginalStart: expression.getStart(),\n\t\t\t\toriginalEnd: expression.end,\n\t\t\t\ttext,\n\t\t\t\tmatch: \"yield_operand\",\n\t\t\t\twrapper: `${yieldable_name}(${text})`,\n\t\t\t});\n\t\t});\n\n\t\treturn relocations;\n\t});\n\n\tconst used_ranges: Array<{ start: number; end: number }> = [];\n\tconst search_cursors = new Map<string, number>();\n\n\treturn candidates.flatMap((candidate) => {\n\t\tconst search_key = make_relocation_search_key(candidate);\n\t\tconst generated_start = find_available_generated_text(\n\t\t\tcode,\n\t\t\tcandidate,\n\t\t\tused_ranges,\n\t\t\tsearch_cursors.get(search_key) ?? 0,\n\t\t);\n\n\t\tif (generated_start < 0) {\n\t\t\tsearch_cursors.set(search_key, code.length);\n\n\t\t\treturn [];\n\t\t}\n\n\t\tconst generated_end = generated_start + candidate.text.length;\n\t\tused_ranges.push({ start: generated_start, end: generated_end });\n\t\tsearch_cursors.set(search_key, generated_end);\n\n\t\treturn [\n\t\t\t{\n\t\t\t\toriginalStart: candidate.originalStart,\n\t\t\t\toriginalEnd: candidate.originalEnd,\n\t\t\t\tgeneratedStart: generated_start,\n\t\t\t\tgeneratedEnd: generated_end,\n\t\t\t},\n\t\t];\n\t});\n}\n\ntype RelocationCandidate = {\n\toriginalStart: number;\n\toriginalEnd: number;\n\ttext: string;\n\tmatch: \"exact\" | \"identifier\" | \"yield_operand\";\n\twrapper?: string;\n};\n\nfunction make_relocation_search_key(candidate: RelocationCandidate): string {\n\treturn `${candidate.match}:${candidate.text}`;\n}\n\nfunction collect_binding_relocation_candidates(\n\tname: ts.BindingName,\n\tcandidates: RelocationCandidate[],\n): void {\n\tif (ts.isIdentifier(name)) {\n\t\tcandidates.push({\n\t\t\toriginalStart: name.getStart(),\n\t\t\toriginalEnd: name.end,\n\t\t\ttext: name.text,\n\t\t\tmatch: \"identifier\",\n\t\t});\n\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_relocation_candidates(element.name, candidates);\n\t}\n}\n\nfunction find_available_generated_text(\n\tcode: string,\n\tcandidate: RelocationCandidate,\n\tused_ranges: Array<{ start: number; end: number }>,\n\tsearch_start: number,\n): number {\n\twhile (search_start < code.length) {\n\t\tconst search_text =\n\t\t\tcandidate.match === \"yield_operand\" ? candidate.wrapper : candidate.text;\n\n\t\tif (!search_text) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tconst index = code.indexOf(search_text, search_start);\n\n\t\tif (index < 0) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tconst operand_offset =\n\t\t\tcandidate.match === \"yield_operand\" && candidate.wrapper\n\t\t\t\t? candidate.wrapper.indexOf(candidate.text)\n\t\t\t\t: 0;\n\t\tconst start = index + Math.max(operand_offset, 0);\n\t\tconst end = start + candidate.text.length;\n\t\tconst overlaps_used_range = used_ranges.some(\n\t\t\t(range) => start < range.end && end > range.start,\n\t\t);\n\t\tconst is_text_match =\n\t\t\tcandidate.match !== \"identifier\" || is_identifier_text_match(code, start, end);\n\n\t\tif (!overlaps_used_range && is_text_match) {\n\t\t\treturn start;\n\t\t}\n\n\t\tsearch_start = candidate.match === \"identifier\" ? index + 1 : index + search_text.length;\n\t}\n\n\treturn -1;\n}\n\nfunction is_identifier_text_match(code: string, start: number, end: number): boolean {\n\tconst before = start === 0 ? 0 : code.charCodeAt(start - 1);\n\tconst after = end >= code.length ? 0 : code.charCodeAt(end);\n\n\treturn !is_identifier_part(before) && !is_identifier_part(after);\n}\n\nfunction is_identifier_part(char_code: number): boolean {\n\treturn (\n\t\t(char_code >= 65 && char_code <= 90) ||\n\t\t(char_code >= 97 && char_code <= 122) ||\n\t\t(char_code >= 48 && char_code <= 57) ||\n\t\tchar_code === 36 ||\n\t\tchar_code === 95\n\t);\n}\n\nfunction validate_script_yield_boundaries(\n\tstmt: ts.Statement,\n\tcontent: string,\n\tfilename: string,\n): void {\n\tconst bad_member = find_class_member_with_yield_star(stmt);\n\n\tif (!bad_member) {\n\t\treturn;\n\t}\n\n\tthrow new PreprocessError(\n\t\t[\n\t\t\t`[ASYNC_EFFECT_IN_CLASS_MEMBER]: ${filename}: yield* cannot be used inside class members.`,\n\t\t\t`Class fields and methods are not component top-level reactive work. Move the Effect work into a script effect statement before assigning it to the class instance.`,\n\t\t\t\"\",\n\t\t\t\"Problematic member:\",\n\t\t\tslice(content, bad_member),\n\t\t].join(\"\\n\"),\n\t\tfilename,\n\t);\n}\n\nfunction find_class_member_with_yield_star(stmt: ts.Statement): ts.Node | undefined {\n\tlet found: ts.Node | undefined;\n\n\tfunction visit(node: ts.Node): void {\n\t\tif (found) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\tts.isPropertyDeclaration(node) &&\n\t\t\tnode.initializer &&\n\t\t\tcontains_top_level_yield_star(node.initializer)\n\t\t) {\n\t\t\tfound = node;\n\t\t\treturn;\n\t\t}\n\n\t\tnode.forEachChild(visit);\n\t}\n\n\tvisit(stmt);\n\n\treturn found;\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\nfunction make_generated_name(hint: string, suffix: string): string {\n\tconst normalized_hint = hint.replace(/[^A-Za-z0-9_$]/g, \"_\");\n\tconst safe_hint = /^[A-Za-z_$]/.test(normalized_hint)\n\t\t? normalized_hint\n\t\t: `temp_${normalized_hint}`;\n\n\treturn `__SER___${safe_hint}${suffix}`;\n}\n","import { type MarkupTransformTarget, transform_markup_effect } from \"$/markup/transform.ts\";\nimport { scan_svelte_effect_source } from \"$/compiler/source-scan.ts\";\nimport { transform_script_effect } from \"$/script-transform/index.ts\";\n\n/**\n * Result returned by the direct whole-file Svelte transform.\n *\n * @example\n * ```ts\n * const result = transform_svelte_effect(\"<p>{yield* load()}</p>\", \"App.svelte\");\n * result.code;\n * ```\n *\n * @since 2.5.0\n */\nexport interface SvelteTransformResult {\n\t/** Transformed Svelte source. */\n\tcode: string;\n}\n\n/**\n * Options accepted by the direct whole-file Svelte transform.\n *\n * @example\n * ```ts\n * const options: SvelteTransformOptions = { target: \"client\" };\n * ```\n *\n * @since 2.5.0\n */\nexport interface SvelteTransformOptions {\n\t/** Markup emission target passed through to the markup transform. */\n\ttarget?: MarkupTransformTarget;\n}\n\n/**\n * Lowers SER syntax in a complete Svelte component without using Svelte's\n * adapter API.\n *\n * @example\n * ```ts\n * const result = transform_svelte_effect(\n * \"<script effect>const value = yield* load()</script>\",\n * \"App.svelte\",\n * );\n * ```\n *\n * @since 2.5.0\n * @param content - Full Svelte component source to lower before Svelte parses\n * it.\n * @param filename - Component filename used in generated cache identifiers and\n * diagnostics.\n * @param options - Optional target configuration for markup lowering.\n * @returns The transformed component source.\n */\nexport function transform_svelte_effect(\n\tcontent: string,\n\tfilename = \"unknown.svelte\",\n\toptions: SvelteTransformOptions = {},\n): SvelteTransformResult {\n\tconst scan = scan_svelte_effect_source(content, filename);\n\tconst script = scan.effect_script;\n\n\tlet combined = content;\n\n\tif (script) {\n\t\tconst effect_attribute = script.effect_attribute;\n\t\tconst effect_attribute_start = effect_attribute?.start ?? script.opening_tag_end;\n\t\tconst effect_attribute_end = effect_attribute?.end ?? script.opening_tag_end;\n\t\tconst result = transform_script_effect(script.text, filename, {\n\t\t\temit_types: script.is_typescript,\n\t\t\ttarget: options.target ?? \"client\",\n\t\t});\n\n\t\tcombined =\n\t\t\tcontent.slice(0, effect_attribute_start) +\n\t\t\tcontent.slice(effect_attribute_end, script.opening_tag_end) +\n\t\t\tresult.code +\n\t\t\tcontent.slice(script.closing_tag_start);\n\t}\n\n\tconst markup_options = options.target === undefined ? {} : { target: options.target };\n\tconst result = transform_markup_effect(combined, filename, markup_options);\n\n\treturn { code: result.code };\n}\n\nexport {\n\ttype MarkupTransformOptions,\n\ttype MarkupTransformResult,\n\ttype MarkupTransformTarget,\n\ttransform_markup_effect,\n} from \"$/markup/transform.ts\";\n\nexport {\n\ttype BlockRef,\n\ttype ScriptTransformResult,\n\ttransform_script_effect,\n} from \"$/script-transform/index.ts\";\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transform-C0jW8Qta.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\nexport function strip_arrow_function(expr: string): {\n\tparams: string;\n\tbody: string;\n\tbody_start: number;\n\tbody_end: number;\n} {\n\tconst arrow_idx = expr.indexOf(\"=>\");\n\n\tif (arrow_idx === -1) {\n\t\treturn { params: \"()\", body: expr, body_start: 0, body_end: expr.length };\n\t}\n\n\tconst params = expr.slice(0, arrow_idx).trim();\n\tconst raw_body = expr.slice(arrow_idx + 2);\n\tconst leading_ws = raw_body.length - raw_body.trimStart().length;\n\tlet body_start = arrow_idx + 2 + leading_ws;\n\tlet body_end = expr.length - (raw_body.length - raw_body.trimEnd().length);\n\tlet body = expr.slice(body_start, body_end);\n\n\tif (body.startsWith(\"{\") && body.endsWith(\"}\")) {\n\t\tbody_start += 1;\n\t\tbody_end -= 1;\n\t\tbody = body.slice(1, -1);\n\t}\n\n\tconst body_leading_ws = body.length - body.trimStart().length;\n\tconst body_trailing_ws = body.length - body.trimEnd().length;\n\n\tbody_start += body_leading_ws;\n\tbody_end -= body_trailing_ws;\n\tbody = body.trim();\n\n\tif (body.endsWith(\";\")) {\n\t\tbody = body.slice(0, -1);\n\t\tbody_end -= 1;\n\t}\n\n\treturn { params, body, body_start, body_end };\n}\n\nexport function is_callback_function_expression(expr: string): boolean {\n\tconst wrapped = `const __SER___callback = ${expr};`;\n\tconst sf = ts.createSourceFile(\n\t\t\"callback.ts\",\n\t\twrapped,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tts.ScriptKind.TS,\n\t);\n\tconst stmt = sf.statements[0];\n\n\tif (!ts.isVariableStatement(stmt)) {\n\t\treturn false;\n\t}\n\n\tconst initializer = stmt.declarationList.declarations[0]?.initializer;\n\n\treturn (\n\t\tinitializer !== undefined &&\n\t\t(ts.isArrowFunction(initializer) || ts.isFunctionExpression(initializer))\n\t);\n}\n\nexport function analyze_event_body_yield_star(body: string): {\n\thas_top_level_yield_star: boolean;\n\thas_nested_invalid_yield_star: boolean;\n} {\n\tconst wrapped = `function* __SER___event() { ${body}; }`;\n\tconst sf = ts.createSourceFile(\n\t\t\"event.ts\",\n\t\twrapped,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tts.ScriptKind.TS,\n\t);\n\tconst stmt = sf.statements[0];\n\n\tif (!ts.isFunctionDeclaration(stmt) || !stmt.body) {\n\t\treturn {\n\t\t\thas_top_level_yield_star: false,\n\t\t\thas_nested_invalid_yield_star: /\\byield\\s*\\*/.test(body),\n\t\t};\n\t}\n\n\tconst result = {\n\t\thas_top_level_yield_star: false,\n\t\thas_nested_invalid_yield_star: false,\n\t};\n\n\tvisit_event_body(stmt.body, \"top_level\", result);\n\n\treturn result;\n}\n\nexport function collect_free_identifiers(expr_text: string): string[] {\n\tconst wrapped = `function* __SER___w() { return (${expr_text}); }`;\n\tlet sf: ts.SourceFile;\n\n\ttry {\n\t\tsf = ts.createSourceFile(\n\t\t\t\"expr.ts\",\n\t\t\twrapped,\n\t\t\tts.ScriptTarget.Latest,\n\t\t\ttrue,\n\t\t\tts.ScriptKind.TS,\n\t\t);\n\t} catch {\n\t\treturn [];\n\t}\n\n\tconst fn = sf.statements[0];\n\n\tif (!ts.isFunctionDeclaration(fn) || !fn.body) {\n\t\treturn [];\n\t}\n\n\tconst ids: string[] = [];\n\tconst locals = new Set<string>();\n\tconst seen = new Set<string>();\n\n\tvisit_ids(fn.body, locals, seen, ids);\n\n\treturn ids;\n}\n\nfunction visit_ids(node: ts.Node, locals: Set<string>, seen: Set<string>, ids: string[]): void {\n\tif (\n\t\tts.isArrowFunction(node) ||\n\t\tts.isFunctionExpression(node) ||\n\t\tts.isFunctionDeclaration(node)\n\t) {\n\t\tconst scoped = new Set(locals);\n\n\t\tif (ts.isFunctionDeclaration(node) && node.name) {\n\t\t\tscoped.add(node.name.text);\n\t\t}\n\n\t\tfor (const parameter of node.parameters) {\n\t\t\tadd_binding_names(parameter.name, scoped);\n\t\t}\n\n\t\tif (node.body) {\n\t\t\tvisit_ids(node.body, scoped, seen, ids);\n\t\t}\n\n\t\treturn;\n\t}\n\n\tif (ts.isVariableDeclaration(node)) {\n\t\tif (node.initializer) {\n\t\t\tvisit_ids(node.initializer, locals, seen, ids);\n\t\t}\n\n\t\tadd_binding_names(node.name, locals);\n\n\t\treturn;\n\t}\n\n\tif (ts.isTypeReferenceNode(node)) {\n\t\treturn;\n\t}\n\n\tif (ts.isIdentifier(node)) {\n\t\tif (\n\t\t\tnode.text === \"yield\" ||\n\t\t\tnode.text === \"undefined\" ||\n\t\t\tnode.text === \"null\" ||\n\t\t\tnode.text === \"true\" ||\n\t\t\tnode.text === \"false\" ||\n\t\t\tnode.text === \"this\"\n\t\t) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (is_property_access_name(node)) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!locals.has(node.text) && !seen.has(node.text)) {\n\t\t\tseen.add(node.text);\n\t\t\tids.push(node.text);\n\t\t}\n\t\treturn;\n\t}\n\n\tnode.forEachChild((child) => visit_ids(child, locals, seen, ids));\n}\n\nfunction add_binding_names(name: ts.BindingName, locals: Set<string>): void {\n\tif (ts.isIdentifier(name)) {\n\t\tlocals.add(name.text);\n\t\treturn;\n\t}\n\n\tfor (const element of name.elements) {\n\t\tif (ts.isOmittedExpression(element)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tadd_binding_names(element.name, locals);\n\t}\n}\n\ntype EventYieldContext = \"top_level\" | \"nested_generator\" | \"nested_invalid\";\n\ninterface EventYieldAnalysis {\n\thas_top_level_yield_star: boolean;\n\thas_nested_invalid_yield_star: boolean;\n}\n\nfunction visit_event_body(\n\tnode: ts.Node,\n\tcontext: EventYieldContext,\n\tresult: EventYieldAnalysis,\n): void {\n\tif (is_yield_star_expression(node)) {\n\t\tif (context === \"top_level\") {\n\t\t\tresult.has_top_level_yield_star = true;\n\t\t} else if (context === \"nested_invalid\") {\n\t\t\tresult.has_nested_invalid_yield_star = true;\n\t\t}\n\n\t\tnode.forEachChild((child) => visit_event_body(child, context, result));\n\t\treturn;\n\t}\n\n\tif (is_nested_function_boundary(node)) {\n\t\tconst next_context = is_generator_function_boundary(node)\n\t\t\t? \"nested_generator\"\n\t\t\t: \"nested_invalid\";\n\n\t\tnode.forEachChild((child) => visit_event_body(child, next_context, result));\n\t\treturn;\n\t}\n\n\tnode.forEachChild((child) => visit_event_body(child, context, result));\n}\n\nfunction is_nested_function_boundary(node: ts.Node): boolean {\n\treturn (\n\t\tts.isArrowFunction(node) ||\n\t\tts.isFunctionExpression(node) ||\n\t\tts.isFunctionDeclaration(node) ||\n\t\tts.isMethodDeclaration(node) ||\n\t\tts.isGetAccessorDeclaration(node) ||\n\t\tts.isSetAccessorDeclaration(node)\n\t);\n}\n\nfunction is_generator_function_boundary(node: ts.Node): boolean {\n\treturn (\n\t\t(ts.isFunctionExpression(node) ||\n\t\t\tts.isFunctionDeclaration(node) ||\n\t\t\tts.isMethodDeclaration(node)) &&\n\t\tnode.asteriskToken !== undefined\n\t);\n}\n\nfunction is_yield_star_expression(node: ts.Node): boolean {\n\tif (ts.isYieldExpression(node)) {\n\t\treturn node.asteriskToken !== undefined;\n\t}\n\n\treturn (\n\t\tts.isBinaryExpression(node) &&\n\t\tnode.operatorToken.kind === ts.SyntaxKind.AsteriskToken &&\n\t\tts.isIdentifier(node.left) &&\n\t\tnode.left.text === \"yield\"\n\t);\n}\n\nfunction is_property_access_name(node: ts.Identifier): boolean {\n\tconst parent = node.parent;\n\n\treturn (\n\t\t(ts.isPropertyAccessExpression(parent) && parent.name === node) ||\n\t\t(ts.isPropertyAssignment(parent) && parent.name === node) ||\n\t\t(ts.isBindingElement(parent) && parent.propertyName === node) ||\n\t\tts.isImportSpecifier(parent) ||\n\t\tts.isExportSpecifier(parent)\n\t);\n}\n","import type { EffectCallbackRewriteContext } from \"./effect-bindings.ts\";\nimport { contains_top_level_yield_star } from \"$/detect.ts\";\nimport type { HelperDeclaration } from \"./types.ts\";\n\nimport MagicString from \"magic-string\";\nimport ts from \"typescript\";\n\nconst match_effect_members = new Map([\n\t[\"match\", \"matchEffect\"],\n\t[\"matchCause\", \"matchCauseEffect\"],\n]);\n\nconst effectful_callback_members = new Set([\n\t\"andThen\",\n\t\"catchAll\",\n\t\"catchAllCause\",\n\t\"catchCause\",\n\t\"catchTag\",\n\t\"flatMap\",\n\t\"forEach\",\n\t\"tap\",\n\t\"tapError\",\n\t\"tapErrorCause\",\n]);\n\nconst effectful_handler_members = new Set([\"matchCauseEffect\", \"matchEffect\", \"tapBoth\"]);\n\nconst effectful_handler_property_names = new Set([\"onFailure\", \"onSuccess\"]);\n\ninterface RewriteContext {\n\tsource_file: ts.SourceFile;\n\tsource_text: string;\n\tmagic: MagicString;\n\toffset: number;\n\tbindings: EffectCallbackRewriteContext;\n\tchanged: boolean;\n\tuses_wrapper: boolean;\n}\n\ninterface EffectMember {\n\tname: string;\n\tname_start: number;\n\tname_end: number;\n\tdirect: boolean;\n}\n\ntype EffectWrapperMember = \"gen\" | \"sync\";\n\nexport function normalize_effect_callback_yields(\n\texpr_text: string,\n\tbindings: EffectCallbackRewriteContext,\n): { expr_text: string; helpers: HelperDeclaration[] } {\n\tconst prefix = \"const __SER___expression = \";\n\tconst source_text = `${prefix}${expr_text};`;\n\tconst source_file = ts.createSourceFile(\n\t\t\"event-expression.ts\",\n\t\tsource_text,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tts.ScriptKind.TS,\n\t);\n\tconst statement = source_file.statements[0];\n\tconst magic = new MagicString(expr_text);\n\tconst context: RewriteContext = {\n\t\tsource_file,\n\t\tsource_text,\n\t\tmagic,\n\t\toffset: prefix.length,\n\t\tbindings,\n\t\tchanged: false,\n\t\tuses_wrapper: false,\n\t};\n\n\tif (!ts.isVariableStatement(statement)) {\n\t\treturn { expr_text, helpers: [] };\n\t}\n\n\tconst expression = statement.declarationList.declarations[0]?.initializer;\n\n\tif (!expression) {\n\t\treturn { expr_text, helpers: [] };\n\t}\n\n\tvisit_expression(expression, context);\n\n\tif (!context.changed) {\n\t\treturn { expr_text, helpers: [] };\n\t}\n\n\tconst helpers =\n\t\tcontext.uses_wrapper && bindings.wrapper_import ? [bindings.wrapper_import] : [];\n\n\treturn {\n\t\texpr_text: magic.toString(),\n\t\thelpers,\n\t};\n}\n\nfunction visit_expression(node: ts.Node, context: RewriteContext): void {\n\tif (is_non_generator_callback_with_top_level_yield(node)) {\n\t\treturn;\n\t}\n\n\tif (ts.isCallExpression(node)) {\n\t\trewrite_match_call(node, context);\n\t\trewrite_effectful_handler_call(node, context);\n\t\trewrite_effectful_callback_arguments(node, context);\n\t}\n\n\tnode.forEachChild((child) => {\n\t\tvisit_expression(child, context);\n\t});\n}\n\nfunction rewrite_match_call(call: ts.CallExpression, context: RewriteContext): void {\n\tconst member = get_effect_member(call.expression, context);\n\tconst upgraded_name = member && match_effect_members.get(member.name);\n\tconst options = get_last_object_argument(call);\n\n\tif (!member || !upgraded_name || !options) {\n\t\treturn;\n\t}\n\n\tconst handlers = get_handler_properties(options);\n\tconst should_upgrade = handlers.some(\n\t\t(handler) =>\n\t\t\thandler.callback && is_non_generator_callback_with_top_level_yield(handler.callback),\n\t);\n\n\tif (!should_upgrade) {\n\t\treturn;\n\t}\n\n\trewrite_effect_member_name(member, upgraded_name, context);\n\tcontext.changed = true;\n\n\tfor (const handler of handlers) {\n\t\tif (!handler.callback) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (is_non_generator_callback_with_top_level_yield(handler.callback)) {\n\t\t\trewrite_callback_to_effect_gen(handler.callback, context);\n\t\t} else {\n\t\t\trewrite_callback_to_effect_sync(handler.callback, context);\n\t\t}\n\t}\n}\n\nfunction rewrite_effectful_handler_call(call: ts.CallExpression, context: RewriteContext): void {\n\tconst member = get_effect_member(call.expression, context);\n\tconst options = get_last_object_argument(call);\n\n\tif (!member || !effectful_handler_members.has(member.name) || !options) {\n\t\treturn;\n\t}\n\n\tfor (const handler of get_handler_properties(options)) {\n\t\tif (handler.callback && is_non_generator_callback_with_top_level_yield(handler.callback)) {\n\t\t\trewrite_callback_to_effect_gen(handler.callback, context);\n\t\t}\n\t}\n}\n\nfunction rewrite_effectful_callback_arguments(\n\tcall: ts.CallExpression,\n\tcontext: RewriteContext,\n): void {\n\tconst member = get_effect_member(call.expression, context);\n\n\tif (!member || !effectful_callback_members.has(member.name)) {\n\t\treturn;\n\t}\n\n\tfor (const argument of call.arguments) {\n\t\tif (\n\t\t\tis_callback_expression(argument) &&\n\t\t\tis_non_generator_callback_with_top_level_yield(argument)\n\t\t) {\n\t\t\trewrite_callback_to_effect_gen(argument, context);\n\t\t}\n\t}\n}\n\nfunction rewrite_callback_to_effect_gen(\n\tcallback: ts.ArrowFunction | ts.FunctionExpression,\n\tcontext: RewriteContext,\n): void {\n\tif (is_async_function(callback)) {\n\t\treturn;\n\t}\n\n\tif (ts.isArrowFunction(callback)) {\n\t\trewrite_arrow_callback(callback, \"gen\", context);\n\t\treturn;\n\t}\n\n\trewrite_function_body(callback, \"gen\", context);\n}\n\nfunction rewrite_callback_to_effect_sync(\n\tcallback: ts.ArrowFunction | ts.FunctionExpression,\n\tcontext: RewriteContext,\n): void {\n\tif (is_async_function(callback)) {\n\t\treturn;\n\t}\n\n\tif (ts.isArrowFunction(callback)) {\n\t\trewrite_arrow_callback(callback, \"sync\", context);\n\t\treturn;\n\t}\n\n\trewrite_function_body(callback, \"sync\", context);\n}\n\nfunction rewrite_arrow_callback(\n\tcallback: ts.ArrowFunction,\n\twrapper: EffectWrapperMember,\n\tcontext: RewriteContext,\n): void {\n\tconst start = to_expr_pos(callback.getStart(context.source_file), context);\n\tconst end = to_expr_pos(callback.end, context);\n\tconst params_text = context.source_text\n\t\t.slice(\n\t\t\tcallback.getStart(context.source_file),\n\t\t\tcallback.equalsGreaterThanToken.getStart(context.source_file),\n\t\t)\n\t\t.trim();\n\tconst body_text = get_body_text(callback.body, context);\n\tconst rewritten_body = make_effect_body(callback.body, body_text, wrapper, context);\n\tconst replacement = `${params_text} => ${rewritten_body}`;\n\n\tcontext.magic.overwrite(start, end, replacement);\n\tcontext.changed = true;\n}\n\nfunction rewrite_function_body(\n\tcallback: ts.FunctionExpression,\n\twrapper: EffectWrapperMember,\n\tcontext: RewriteContext,\n): void {\n\tconst body_start = to_expr_pos(callback.body.getStart(context.source_file), context);\n\tconst body_end = to_expr_pos(callback.body.end, context);\n\tconst body_text = get_body_text(callback.body, context);\n\tconst rewritten_body = make_effect_body(callback.body, body_text, wrapper, context);\n\n\tcontext.magic.overwrite(body_start, body_end, `{ return ${rewritten_body}; }`);\n\tcontext.changed = true;\n}\n\nfunction make_effect_body(\n\tbody: ts.ConciseBody,\n\tbody_text: string,\n\twrapper: EffectWrapperMember,\n\tcontext: RewriteContext,\n): string {\n\tconst wrapper_access = make_effect_access(wrapper, context);\n\n\tif (wrapper === \"gen\") {\n\t\tif (ts.isBlock(body)) {\n\t\t\treturn `${wrapper_access}(function* () ${body_text})`;\n\t\t}\n\n\t\treturn `${wrapper_access}(function* () { return (${body_text}); })`;\n\t}\n\n\tif (ts.isBlock(body)) {\n\t\treturn `${wrapper_access}(() => ${body_text})`;\n\t}\n\n\treturn `${wrapper_access}(() => (${body_text}))`;\n}\n\nfunction get_body_text(body: ts.ConciseBody, context: RewriteContext): string {\n\treturn context.source_text.slice(body.getStart(context.source_file), body.end).trim();\n}\n\nfunction get_handler_properties(object_literal: ts.ObjectLiteralExpression): Array<{\n\tcallback: ts.ArrowFunction | ts.FunctionExpression | undefined;\n}> {\n\treturn object_literal.properties.flatMap((property) => {\n\t\tif (!ts.isPropertyAssignment(property)) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst name = get_property_name(property.name);\n\n\t\tif (!name || !effectful_handler_property_names.has(name)) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst callback = is_callback_expression(property.initializer)\n\t\t\t? property.initializer\n\t\t\t: undefined;\n\n\t\treturn [{ callback }];\n\t});\n}\n\nfunction get_last_object_argument(call: ts.CallExpression): ts.ObjectLiteralExpression | undefined {\n\tconst last_argument = call.arguments[call.arguments.length - 1];\n\n\tif (!last_argument || !ts.isObjectLiteralExpression(last_argument)) {\n\t\treturn undefined;\n\t}\n\n\treturn last_argument;\n}\n\nfunction get_effect_member(\n\texpression: ts.Expression,\n\tcontext: RewriteContext,\n): EffectMember | undefined {\n\tif (ts.isIdentifier(expression)) {\n\t\tconst direct_member = context.bindings.direct_members.get(expression.text);\n\n\t\tif (!direct_member) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn {\n\t\t\tname: direct_member,\n\t\t\tname_start: to_expr_pos(expression.getStart(context.source_file), context),\n\t\t\tname_end: to_expr_pos(expression.end, context),\n\t\t\tdirect: true,\n\t\t};\n\t}\n\n\tif (!ts.isPropertyAccessExpression(expression)) {\n\t\treturn undefined;\n\t}\n\n\tif (!is_effect_namespace_expression(expression.expression, context)) {\n\t\treturn undefined;\n\t}\n\n\treturn {\n\t\tname: expression.name.text,\n\t\tname_start: to_expr_pos(expression.name.getStart(context.source_file), context),\n\t\tname_end: to_expr_pos(expression.name.end, context),\n\t\tdirect: false,\n\t};\n}\n\nfunction rewrite_effect_member_name(\n\tmember: EffectMember,\n\tupgraded_name: string,\n\tcontext: RewriteContext,\n): void {\n\tif (member.direct) {\n\t\tcontext.magic.overwrite(\n\t\t\tmember.name_start,\n\t\t\tmember.name_end,\n\t\t\tmake_effect_access(upgraded_name, context),\n\t\t);\n\n\t\treturn;\n\t}\n\n\tcontext.magic.overwrite(member.name_start, member.name_end, upgraded_name);\n}\n\nfunction make_effect_access(member_name: string, context: RewriteContext): string {\n\tcontext.uses_wrapper = true;\n\n\treturn `${context.bindings.wrapper_expression}.${member_name}`;\n}\n\nfunction is_effect_namespace_expression(\n\texpression: ts.Expression,\n\tcontext: RewriteContext,\n): boolean {\n\tif (ts.isIdentifier(expression)) {\n\t\treturn (\n\t\t\tcontext.bindings.effect_object_names.has(expression.text) ||\n\t\t\tcontext.bindings.effect_module_names.has(expression.text)\n\t\t);\n\t}\n\n\tif (!ts.isPropertyAccessExpression(expression)) {\n\t\treturn false;\n\t}\n\n\tif (expression.name.text !== \"Effect\") {\n\t\treturn false;\n\t}\n\n\tif (!ts.isIdentifier(expression.expression)) {\n\t\treturn false;\n\t}\n\n\treturn context.bindings.effect_package_names.has(expression.expression.text);\n}\n\nfunction get_property_name(name: ts.PropertyName): string | undefined {\n\tif (ts.isIdentifier(name) || ts.isStringLiteral(name)) {\n\t\treturn name.text;\n\t}\n\n\treturn undefined;\n}\n\nfunction is_callback_expression(node: ts.Node): node is ts.ArrowFunction | ts.FunctionExpression {\n\treturn ts.isArrowFunction(node) || ts.isFunctionExpression(node);\n}\n\nfunction is_non_generator_callback_with_top_level_yield(\n\tnode: ts.Node,\n): node is ts.ArrowFunction | ts.FunctionExpression {\n\tif (!is_callback_expression(node)) {\n\t\treturn false;\n\t}\n\n\tif (ts.isFunctionExpression(node) && node.asteriskToken) {\n\t\treturn false;\n\t}\n\n\treturn contains_top_level_yield_star(node.body);\n}\n\nfunction is_async_function(node: ts.ArrowFunction | ts.FunctionExpression): boolean {\n\treturn (\n\t\tnode.modifiers?.some((modifier) => modifier.kind === ts.SyntaxKind.AsyncKeyword) ?? false\n\t);\n}\n\nfunction to_expr_pos(pos: number, context: RewriteContext): number {\n\treturn pos - context.offset;\n}\n","import ts from \"typescript\";\n\nexport function is_yield_star_expression(node: ts.Node): boolean {\n\treturn (\n\t\tts.isBinaryExpression(node) &&\n\t\tnode.operatorToken.kind === ts.SyntaxKind.AsteriskToken &&\n\t\tts.isIdentifier(node.left) &&\n\t\tnode.left.text === \"yield\"\n\t);\n}\n\nfunction is_function_boundary_node(node: ts.Node): boolean {\n\treturn (\n\t\tts.isArrowFunction(node) ||\n\t\tts.isFunctionDeclaration(node) ||\n\t\tts.isFunctionExpression(node) ||\n\t\tts.isMethodDeclaration(node) ||\n\t\tts.isGetAccessorDeclaration(node) ||\n\t\tts.isSetAccessorDeclaration(node)\n\t);\n}\n\nexport function contains_top_level_await(node: ts.Node): boolean {\n\tif (ts.isAwaitExpression(node)) {\n\t\treturn true;\n\t}\n\n\treturn node\n\t\t.getChildren()\n\t\t.some((child) => !is_function_boundary_node(child) && contains_top_level_await(child));\n}\n\nexport function collect_yield_star_nodes(node: ts.Node, on_found: (node: ts.Node) => void): void {\n\tif (is_function_boundary_node(node)) {\n\t\treturn;\n\t}\n\n\tif (is_yield_star_expression(node)) {\n\t\ton_found(node);\n\t\treturn;\n\t}\n\n\tnode.forEachChild((child) => {\n\t\tcollect_yield_star_nodes(child, on_found);\n\t});\n}\n\nexport function find_yield_star_node(node: ts.Node, on_found: (node: ts.Node) => void): void {\n\tif (is_function_boundary_node(node)) {\n\t\treturn;\n\t}\n\n\tif (is_yield_star_expression(node)) {\n\t\ton_found(node);\n\t\treturn;\n\t}\n\n\tnode.forEachChild((child) => {\n\t\tfind_yield_star_node(child, on_found);\n\t});\n}\n","import type {\n\tHelperDeclaration,\n\tMarkupCandidate,\n\tMarkupHelperBindings,\n\tMarkupNameAllocator,\n\tMarkupTransformTarget,\n\tPendingRelocation,\n\tReplacement,\n\tTagKind,\n} from \"./types.ts\";\nimport {\n\tanalyze_event_body_yield_star,\n\tcollect_free_identifiers,\n\tis_callback_function_expression,\n} from \"./expressions.ts\";\nimport { AsyncEffectInEventCallbackError, YieldStarInEventCallbackError } from \"$/errors.ts\";\nimport type { EffectCallbackRewriteContext } from \"./effect-bindings.ts\";\nimport { normalize_effect_callback_yields } from \"./effect-callbacks.ts\";\nimport { collect_yield_star_nodes } from \"$/script-transform/ast.ts\";\n\nimport ts from \"typescript\";\n\ninterface ClassifiedCandidate {\n\tcandidate: MarkupCandidate;\n\tkind: TagKind;\n\tattribute_name_replacement: AttributeNameReplacement | undefined;\n}\n\ninterface AttributeNameReplacement {\n\tstart: number;\n\tend: number;\n\ttext: string;\n}\n\ntype ExpressionRelocation = {\n\toriginalStart: number;\n\toriginalEnd: number;\n\tgeneratedStart: number;\n\tgeneratedEnd: number;\n};\n\nexport function emit_replacements(\n\tclassified: ClassifiedCandidate[],\n\teffect_context: EffectCallbackRewriteContext,\n\thelper_bindings: MarkupHelperBindings,\n\tname_allocator: MarkupNameAllocator,\n\ttarget: MarkupTransformTarget,\n): Replacement[] {\n\tconst expression_replacements = classified.map(({ candidate, kind }) =>\n\t\temit_replacement(candidate, kind, effect_context, helper_bindings, name_allocator, target),\n\t);\n\tconst attribute_replacements = unique_attribute_name_replacements(classified).map(\n\t\t(replacement) => ({\n\t\t\tstart: replacement.start,\n\t\t\tend: replacement.end,\n\t\t\ttext: replacement.text,\n\t\t}),\n\t);\n\n\treturn [...attribute_replacements, ...expression_replacements];\n}\n\nfunction unique_attribute_name_replacements(\n\tclassified: ClassifiedCandidate[],\n): AttributeNameReplacement[] {\n\tconst seen = new Set<string>();\n\n\treturn classified\n\t\t.map((entry) => entry.attribute_name_replacement)\n\t\t.filter((replacement): replacement is AttributeNameReplacement => {\n\t\t\tif (!replacement) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst key = `${replacement.start}:${replacement.end}:${replacement.text}`;\n\n\t\t\tif (seen.has(key)) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tseen.add(key);\n\n\t\t\treturn true;\n\t\t});\n}\n\nfunction emit_replacement(\n\tcandidate: MarkupCandidate,\n\tkind: TagKind,\n\teffect_context: EffectCallbackRewriteContext,\n\thelper_bindings: MarkupHelperBindings,\n\tname_allocator: MarkupNameAllocator,\n\ttarget: MarkupTransformTarget,\n): Replacement {\n\tconst normalized = normalize_effect_callback_yields(candidate.expr_text, effect_context);\n\tconst normalized_candidate = {\n\t\t...candidate,\n\t\texpr_text: normalized.expr_text,\n\t};\n\tconst id = make_cache_id(candidate);\n\tconst id_text = JSON.stringify(id);\n\tconst helper_name = make_helper_name(candidate, name_allocator);\n\tconst is_server_target = target === \"server\";\n\n\tlet replacement_text: string;\n\tlet helpers: HelperDeclaration[];\n\tlet relocation: PendingRelocation | undefined;\n\n\tif (kind === \"await\") {\n\t\tconst effect = make_effect_helper(normalized_candidate, helper_name, helper_bindings);\n\n\t\treplacement_text = emit_promise_expression(\n\t\t\tid_text,\n\t\t\teffect,\n\t\t\thelper_bindings,\n\t\t\t\"undefined\",\n\t\t\t`{ ssr: \"pending\" }`,\n\t\t);\n\t\thelpers = [...normalized.helpers, effect.helper];\n\t} else if (kind === \"render\") {\n\t\tconst effect = make_effect_helper(normalized_candidate, helper_name, helper_bindings);\n\n\t\treplacement_text = emit_render_expression(\n\t\t\tid_text,\n\t\t\teffect,\n\t\t\tcandidate,\n\t\t\thelper_bindings,\n\t\t\tis_server_target,\n\t\t);\n\t\thelpers = [...normalized.helpers, effect.helper];\n\t} else if (kind === \"render_argument\") {\n\t\tconst effect = make_effect_helper(normalized_candidate, helper_name, helper_bindings);\n\n\t\treplacement_text = emit_await_expression(\n\t\t\tid_text,\n\t\t\teffect,\n\t\t\thelper_bindings,\n\t\t\tserver_fallback(is_server_target, \"undefined\"),\n\t\t);\n\t\thelpers = [...normalized.helpers, effect.helper];\n\t} else if (kind === \"each\") {\n\t\tconst effect = make_effect_helper(normalized_candidate, helper_name, helper_bindings);\n\n\t\treplacement_text = emit_await_expression(\n\t\t\tid_text,\n\t\t\teffect,\n\t\t\thelper_bindings,\n\t\t\tserver_fallback(is_server_target, \"[]\"),\n\t\t);\n\t\thelpers = [...normalized.helpers, effect.helper];\n\t} else if (kind === \"event\") {\n\t\tconst event = make_event_handler(normalized_candidate, helper_bindings);\n\n\t\treplacement_text = event.text;\n\t\thelpers = normalized.helpers;\n\t\trelocation = make_pending_relocation(\n\t\t\tcandidate,\n\t\t\treplacement_text,\n\t\t\tevent.expr_text,\n\t\t\tevent.relocation,\n\t\t);\n\t} else if (kind === \"html\") {\n\t\tconst effect = make_inline_effect(normalized_candidate, helper_bindings);\n\n\t\treplacement_text = emit_await_expression(id_text, effect, helper_bindings);\n\t\thelpers = normalized.helpers;\n\t\trelocation = make_pending_relocation(\n\t\t\tcandidate,\n\t\t\treplacement_text,\n\t\t\teffect.effect_text,\n\t\t\teffect.relocation,\n\t\t);\n\t} else {\n\t\tconst effect = make_effect_helper(normalized_candidate, helper_name, helper_bindings);\n\n\t\treplacement_text = emit_await_expression(\n\t\t\tid_text,\n\t\t\teffect,\n\t\t\thelper_bindings,\n\t\t\tserver_fallback(is_server_target, \"undefined\"),\n\t\t);\n\t\thelpers = [...normalized.helpers, effect.helper];\n\t}\n\n\treturn {\n\t\tstart: candidate.start,\n\t\tend: candidate.end,\n\t\ttext: replacement_text,\n\t\thelpers,\n\t\t...(relocation ? { relocation } : {}),\n\t};\n}\n\nfunction make_event_handler(\n\tcandidate: MarkupCandidate,\n\thelper_bindings: MarkupHelperBindings,\n): { text: string; expr_text: string; relocation: ExpressionRelocation | undefined } {\n\tconst expr_text = candidate.expr_text;\n\n\tif (is_callback_function_expression(expr_text)) {\n\t\tthrow new YieldStarInEventCallbackError(candidate.filename, expr_text);\n\t}\n\n\tconst analysis = analyze_event_body_yield_star(expr_text);\n\n\tif (analysis.has_nested_invalid_yield_star) {\n\t\tthrow new AsyncEffectInEventCallbackError(candidate.filename, expr_text);\n\t}\n\n\tconst wrapped_expr_text = wrap_yield_stars(expr_text, helper_bindings);\n\n\treturn {\n\t\texpr_text: wrapped_expr_text,\n\t\trelocation: make_yield_operand_relocation(expr_text, wrapped_expr_text, helper_bindings),\n\t\ttext: `(event) => { ${helper_bindings.dispatcher}.with_scope(${helper_bindings.scope}.scope, () => ${helper_bindings.dispatcher}.emit({ type: ${helper_bindings.codes}.Markup.Run, fn: function* () { ${wrapped_expr_text}; } })); }`,\n\t};\n}\n\nfunction emit_promise_expression(\n\tid_text: string,\n\teffect: EffectHelper,\n\thelper_bindings: MarkupHelperBindings,\n\tssr_fallback?: string,\n\toptions?: string,\n): string {\n\tconst properties = [\n\t\t`type: ${helper_bindings.codes}.Markup.Promise`,\n\t\t`id: ${id_text}`,\n\t\t`deps: ${effect.deps_text}`,\n\t\t`fn: () => ${effect.call}`,\n\t\tssr_fallback !== undefined && `ssr_fallback: ${ssr_fallback}`,\n\t\toptions !== undefined && `options: ${options}`,\n\t].filter((property): property is string => property !== false);\n\n\treturn `${helper_bindings.dispatcher}.with_scope(${helper_bindings.scope}.scope, () => ${helper_bindings.dispatcher}.emit({ ${properties.join(\", \")} }))`;\n}\n\nfunction emit_render_expression(\n\tid_text: string,\n\teffect: EffectHelper,\n\tcandidate: MarkupCandidate,\n\thelper_bindings: MarkupHelperBindings,\n\tis_server_target: boolean,\n): string {\n\tconst expression = emit_promise_expression(\n\t\tid_text,\n\t\teffect,\n\t\thelper_bindings,\n\t\tserver_fallback(is_server_target, `() => undefined`),\n\t);\n\n\tif (/^\\s*yield\\s*\\*/.test(candidate.expr_text)) {\n\t\treturn `(await ${expression})()`;\n\t}\n\n\treturn `await ${expression}`;\n}\n\nfunction emit_await_expression(\n\tid_text: string,\n\teffect: EffectHelper,\n\thelper_bindings: MarkupHelperBindings,\n\tssr_fallback?: string,\n): string {\n\treturn `await ${emit_promise_expression(id_text, effect, helper_bindings, ssr_fallback)}`;\n}\n\nfunction server_fallback(is_server_target: boolean, fallback: string): string | undefined {\n\treturn is_server_target ? fallback : undefined;\n}\n\ninterface EffectHelper {\n\tcall: string;\n\tdeps_text: string;\n}\n\ninterface DeclaredEffectHelper extends EffectHelper {\n\thelper: HelperDeclaration;\n}\n\ninterface InlineEffectHelper extends EffectHelper {\n\teffect_text: string;\n\trelocation: ExpressionRelocation | undefined;\n}\n\nfunction make_effect_helper(\n\tcandidate: MarkupCandidate,\n\thelper_name: string,\n\thelper_bindings: Pick<MarkupHelperBindings, \"yieldable\">,\n): DeclaredEffectHelper {\n\tconst deps = collect_free_identifiers(candidate.expr_text);\n\tconst args_text = deps.join(\", \");\n\tconst deps_text = deps.length === 0 ? \"[]\" : `[${args_text}]`;\n\tconst call = `${helper_name}()`;\n\tconst effect_text = wrap_yield_stars(candidate.expr_text, helper_bindings);\n\tconst text = `function* ${helper_name}() { return (${effect_text}); }`;\n\tconst generated_start = text.indexOf(effect_text);\n\tconst operand_relocation = make_yield_operand_relocation(\n\t\tcandidate.expr_text,\n\t\teffect_text,\n\t\thelper_bindings,\n\t);\n\tconst relocation =\n\t\toperand_relocation ??\n\t\t({\n\t\t\toriginalStart: 0,\n\t\t\toriginalEnd: candidate.expr_text.length,\n\t\t\tgeneratedStart: 0,\n\t\t\tgeneratedEnd: effect_text.length,\n\t\t} satisfies ExpressionRelocation);\n\n\treturn {\n\t\tcall,\n\t\tdeps_text,\n\t\thelper: {\n\t\t\ttext,\n\t\t\trelocation: {\n\t\t\t\toriginalStart: candidate.start + relocation.originalStart,\n\t\t\t\toriginalEnd: candidate.start + relocation.originalEnd,\n\t\t\t\tgeneratedStartInReplacement: generated_start + relocation.generatedStart,\n\t\t\t\tgeneratedEndInReplacement: generated_start + relocation.generatedEnd,\n\t\t\t},\n\t\t},\n\t};\n}\n\nfunction make_inline_effect(\n\tcandidate: MarkupCandidate,\n\thelper_bindings: Pick<MarkupHelperBindings, \"yieldable\">,\n): InlineEffectHelper {\n\tconst deps = collect_free_identifiers(candidate.expr_text);\n\tconst deps_text = deps.length === 0 ? \"[]\" : `[${deps.join(\", \")}]`;\n\tconst effect_text = wrap_yield_stars(candidate.expr_text, helper_bindings);\n\tconst relocation = make_yield_operand_relocation(\n\t\tcandidate.expr_text,\n\t\teffect_text,\n\t\thelper_bindings,\n\t);\n\n\treturn {\n\t\tcall: `(function* () { return (${effect_text}); })()`,\n\t\tdeps_text,\n\t\teffect_text,\n\t\trelocation,\n\t};\n}\n\nfunction wrap_yield_stars(\n\ttext: string,\n\thelper_bindings: Pick<MarkupHelperBindings, \"yieldable\">,\n): string {\n\tconst source_file = ts.createSourceFile(\n\t\t\"markup-yield.ts\",\n\t\ttext,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tts.ScriptKind.TS,\n\t);\n\tconst replacements: Array<{\n\t\tstart: number;\n\t\tend: number;\n\t\ttext: string;\n\t}> = [];\n\n\tcollect_yield_star_nodes(source_file, (node) => {\n\t\tconst yield_text = text.slice(node.getStart(source_file), node.end).trim();\n\n\t\treplacements.push({\n\t\t\tstart: node.getStart(source_file),\n\t\t\tend: node.end,\n\t\t\ttext: `yield* ${helper_bindings.yieldable}(${strip_yield_star(yield_text)})`,\n\t\t});\n\t});\n\n\tif (replacements.length === 0) {\n\t\treturn text;\n\t}\n\n\treplacements.sort((a, b) => b.start - a.start);\n\n\tlet output = text;\n\n\tfor (const replacement of replacements) {\n\t\toutput =\n\t\t\toutput.slice(0, replacement.start) + replacement.text + output.slice(replacement.end);\n\t}\n\n\treturn output;\n}\n\nfunction strip_yield_star(yield_text: string): string {\n\treturn yield_text.replace(/^yield\\s*\\*\\s*/, \"\");\n}\n\nfunction make_yield_operand_relocation(\n\toriginal_text: string,\n\tgenerated_text: string,\n\thelper_bindings: Pick<MarkupHelperBindings, \"yieldable\">,\n): ExpressionRelocation | undefined {\n\tconst source_file = ts.createSourceFile(\n\t\t\"markup-yield-relocation.ts\",\n\t\toriginal_text,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tts.ScriptKind.TS,\n\t);\n\tlet yield_node: ts.Node | undefined;\n\n\tcollect_yield_star_nodes(source_file, (node) => {\n\t\tyield_node ??= node;\n\t});\n\n\tif (!yield_node || !ts.isBinaryExpression(yield_node)) {\n\t\treturn undefined;\n\t}\n\n\tconst operand = yield_node.right;\n\tconst original_start = operand.getStart(source_file);\n\tconst original_end = operand.end;\n\tconst operand_text = original_text.slice(original_start, original_end).trim();\n\tconst wrapper_text = `${helper_bindings.yieldable}(${operand_text})`;\n\tconst wrapper_start = generated_text.indexOf(wrapper_text);\n\n\tif (wrapper_start === -1) {\n\t\treturn undefined;\n\t}\n\n\tconst generated_start = wrapper_start + wrapper_text.indexOf(operand_text);\n\n\treturn {\n\t\toriginalStart: original_start,\n\t\toriginalEnd: original_end,\n\t\tgeneratedStart: generated_start,\n\t\tgeneratedEnd: generated_start + operand_text.length,\n\t};\n}\n\nfunction make_cache_id(candidate: MarkupCandidate): string {\n\tconst normalized_filename = candidate.filename.replace(/[?#].*$/, \"\");\n\n\treturn `${normalized_filename}:${candidate.start}:${candidate.end}`;\n}\n\nfunction make_helper_name(candidate: MarkupCandidate, name_allocator: MarkupNameAllocator): string {\n\treturn name_allocator.reserve(`__SER___markup_effect_${candidate.start}_${candidate.end}`);\n}\n\nfunction make_pending_relocation(\n\tcandidate: MarkupCandidate,\n\treplacement_text: string,\n\texpression_text: string,\n\trelocation: ExpressionRelocation | undefined,\n): PendingRelocation | undefined {\n\tif (!relocation) {\n\t\treturn undefined;\n\t}\n\n\tconst generated_start = replacement_text.indexOf(expression_text);\n\n\tif (generated_start === -1) {\n\t\treturn undefined;\n\t}\n\n\treturn {\n\t\toriginalStart: candidate.start + relocation.originalStart,\n\t\toriginalEnd: candidate.start + relocation.originalEnd,\n\t\tgeneratedStartInReplacement: generated_start + relocation.generatedStart,\n\t\tgeneratedEndInReplacement: generated_start + relocation.generatedEnd,\n\t};\n}\n","import type MagicString from \"magic-string\";\nimport type ts from \"typescript\";\n\nexport function create_source_map(magic: MagicString, filename: string): Record<string, unknown> {\n\tconst map = magic.generateMap({\n\t\thires: true,\n\t\tincludeContent: true,\n\t\tsource: filename,\n\t});\n\n\treturn map as unknown as Record<string, unknown>;\n}\n\nexport function slice(content: string, node: ts.Node): string {\n\treturn content.slice(node.getFullStart(), node.end);\n}\n\nexport function slice_start(content: string, node: ts.Node): string {\n\treturn content.slice(node.getStart(), node.end);\n}\n","import { contains_top_level_yield_star } from \"$/detect.ts\";\nimport { AsyncEffectInSyncRuneError } from \"$/errors.ts\";\nimport { slice } from \"./source.ts\";\n\nimport ts from \"typescript\";\n\nconst async_expression_runes = new Set([\n\t\"$derived\",\n\t\"$state\",\n\t\"$state.raw\",\n\t\"$state.snapshot\",\n\t\"$bindable\",\n]);\n\nconst callback_runes = new Set([\"$derived.by\", \"$effect\", \"$effect.pre\", \"$effect.root\"]);\n\nexport function validate_rune_yield_usage(node: ts.Node, content: string, filename: string): void {\n\tvisit_rune_yield_usage(node, content, filename);\n}\n\nfunction visit_rune_yield_usage(node: ts.Node, content: string, filename: string): void {\n\tif (ts.isCallExpression(node)) {\n\t\tvalidate_call_expression(node, content, filename);\n\t}\n\n\tnode.forEachChild((child) => {\n\t\tvisit_rune_yield_usage(child, content, filename);\n\t});\n}\n\nfunction validate_call_expression(\n\tcall: ts.CallExpression,\n\tcontent: string,\n\tfilename: string,\n): void {\n\tconst rune_name = get_rune_name(call.expression);\n\n\tif (!rune_name) {\n\t\treturn;\n\t}\n\n\tif (!async_expression_runes.has(rune_name) && contains_top_level_yield_star(call)) {\n\t\tthrow new AsyncEffectInSyncRuneError(rune_name, slice(content, call), filename);\n\t}\n\n\tif (!callback_runes.has(rune_name)) {\n\t\treturn;\n\t}\n\n\tconst callback = call.arguments[0];\n\n\tif (!callback || !callback_has_top_level_yield_star(callback)) {\n\t\treturn;\n\t}\n\n\tthrow new AsyncEffectInSyncRuneError(rune_name, slice(content, call), filename);\n}\n\nfunction callback_has_top_level_yield_star(node: ts.Expression): boolean {\n\tif ((ts.isArrowFunction(node) || ts.isFunctionExpression(node)) && node.body !== undefined) {\n\t\treturn contains_top_level_yield_star(node.body);\n\t}\n\n\treturn contains_top_level_yield_star(node);\n}\n\nfunction get_rune_name(expr: ts.Expression): string | undefined {\n\tif (ts.isIdentifier(expr) && is_rune_root(expr.text)) {\n\t\treturn expr.text;\n\t}\n\n\tif (!ts.isPropertyAccessExpression(expr)) {\n\t\treturn undefined;\n\t}\n\n\tconst root_name = get_rune_name(expr.expression);\n\n\tif (!root_name) {\n\t\treturn undefined;\n\t}\n\n\treturn `${root_name}.${expr.name.text}`;\n}\n\nfunction is_rune_root(name: string): boolean {\n\treturn (\n\t\tname === \"$bindable\" ||\n\t\tname === \"$derived\" ||\n\t\tname === \"$effect\" ||\n\t\tname === \"$host\" ||\n\t\tname === \"$inspect\" ||\n\t\tname === \"$props\" ||\n\t\tname === \"$state\"\n\t);\n}\n","import { analyze_event_body_yield_star, strip_arrow_function } from \"./expressions.ts\";\nimport { validate_rune_yield_usage } from \"$/script-transform/runes.ts\";\nimport type { SvelteEffectSourceScan } from \"$/compiler/source-scan.ts\";\nimport { collect_yield_star_nodes } from \"$/script-transform/ast.ts\";\nimport { contains_top_level_yield_star } from \"$/detect.ts\";\nimport type { MarkupCandidate, TagKind } from \"./types.ts\";\nimport { default_helper_bindings } from \"./constants.ts\";\n\nimport MagicString from \"magic-string\";\nimport ts from \"typescript\";\n\ninterface SanitizeResult {\n\tparse_code: string;\n\tcandidates: MarkupCandidate[];\n}\n\ninterface DeclarationYieldExpression {\n\tstart: number;\n\tend: number;\n\texpr_text: string;\n}\n\nexport function sanitize_markup(source_scan: SvelteEffectSourceScan): SanitizeResult {\n\tconst content = source_scan.source;\n\tconst filename = source_scan.filename;\n\tconst candidates: MarkupCandidate[] = [];\n\tconst magic = new MagicString(content);\n\tlet helper_index = 0;\n\n\tfor (const expression of source_scan.markup_expressions) {\n\t\tconst open = expression.open;\n\t\tconst close = expression.close;\n\t\tconst inner = expression.inner;\n\t\tconst trimmed = inner.trimStart();\n\t\tconst leading_ws = inner.length - trimmed.length;\n\t\tconst tag_info = get_tag_info(trimmed);\n\t\tconst declaration_yields = collect_declaration_yield_expressions(\n\t\t\tcontent,\n\t\t\topen,\n\t\t\tleading_ws,\n\t\t\ttrimmed,\n\t\t\tfilename,\n\t\t);\n\n\t\tif (declaration_yields.length > 0) {\n\t\t\tfor (const declaration_yield of declaration_yields) {\n\t\t\t\tconst placeholder = `__SER___markup_placeholder_${helper_index}`;\n\t\t\t\thelper_index += 1;\n\n\t\t\t\tcandidates.push({\n\t\t\t\t\tplaceholder,\n\t\t\t\t\tstart: declaration_yield.start,\n\t\t\t\t\tend: declaration_yield.end,\n\t\t\t\t\texpr_text: declaration_yield.expr_text,\n\t\t\t\t\tfilename,\n\t\t\t\t\tkey: \"plain\",\n\t\t\t\t});\n\n\t\t\t\tmagic.overwrite(declaration_yield.start, declaration_yield.end, placeholder);\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet expr_body = trimmed.slice(tag_info.prefix_length);\n\n\t\t/** For @const, only use the RHS after `=` as the expression body. */\n\t\tconst equal_idx =\n\t\t\ttag_info.kind === \"plain\" && trimmed.startsWith(\"@const \")\n\t\t\t\t? expr_body.indexOf(\"=\")\n\t\t\t\t: -1;\n\n\t\t/** Check if this is a callback handler containing yield*. */\n\t\tconst is_event_callback = is_event_callback_expression(inner);\n\n\t\t/** Determine if this brace contains yield* that needs lowering. */\n\t\tconst event_yield = is_event_callback ? analyze_event_yield(inner) : undefined;\n\t\tconst has_yield =\n\t\t\tevent_yield?.has_top_level_yield_star ?? contains_yield_star_in_text(expr_body);\n\n\t\tif (!has_yield) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t/** The expression starts after the tag prefix. For @const, after the `=`. */\n\t\tlet extra_prefix = 0;\n\n\t\tif (equal_idx !== -1) {\n\t\t\tconst after_eq_raw = expr_body.slice(equal_idx + 1);\n\t\t\texpr_body = after_eq_raw.trimStart();\n\t\t\textra_prefix = equal_idx + 1 + (after_eq_raw.length - expr_body.length);\n\t\t}\n\n\t\tconst expr_start = open + 1 + leading_ws + tag_info.prefix_length + extra_prefix;\n\n\t\t/** For each/await, the expression ends before ` as ` or ` then `/` catch `. */\n\t\tlet expr_end = close;\n\n\t\tconst key = tag_info.kind;\n\n\t\tif (key === \"each\") {\n\t\t\tconst as_idx = expr_body.lastIndexOf(\" as \");\n\t\t\tif (as_idx !== -1) expr_end = expr_start + as_idx;\n\t\t}\n\n\t\tif (key === \"await\") {\n\t\t\tconst then_idx = expr_body.indexOf(\" then \");\n\t\t\tconst catch_idx = expr_body.indexOf(\" catch \");\n\t\t\tconst boundary = Math.min(\n\t\t\t\tthen_idx === -1 ? Infinity : then_idx,\n\t\t\t\tcatch_idx === -1 ? Infinity : catch_idx,\n\t\t\t);\n\t\t\tif (boundary !== Infinity) expr_end = expr_start + boundary;\n\t\t}\n\n\t\tconst expr_text = content.slice(expr_start, expr_end).trim();\n\n\t\tif (expr_text.length === 0) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tvalidate_expression_yield_usage(expr_text, filename);\n\n\t\tif (key === \"render\" && !/^\\s*yield\\s*\\*/.test(expr_text)) {\n\t\t\tconst render_arg_yields = collect_expression_yield_expressions(\n\t\t\t\tcontent,\n\t\t\t\texpr_start,\n\t\t\t\texpr_text,\n\t\t\t\tfilename,\n\t\t\t);\n\n\t\t\tif (render_arg_yields.length > 0) {\n\t\t\t\tfor (const render_arg_yield of render_arg_yields) {\n\t\t\t\t\tconst placeholder = `__SER___markup_placeholder_${helper_index}`;\n\t\t\t\t\thelper_index += 1;\n\n\t\t\t\t\tcandidates.push({\n\t\t\t\t\t\tplaceholder,\n\t\t\t\t\t\tstart: render_arg_yield.start,\n\t\t\t\t\t\tend: render_arg_yield.end,\n\t\t\t\t\t\texpr_text: render_arg_yield.expr_text,\n\t\t\t\t\t\tfilename,\n\t\t\t\t\t\tkey: \"render_argument\",\n\t\t\t\t\t});\n\n\t\t\t\t\tmagic.overwrite(render_arg_yield.start, render_arg_yield.end, placeholder);\n\t\t\t\t}\n\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\t/** Create a placeholder and replace the expression (preserving tag prefixes). */\n\t\tconst placeholder = `__SER___markup_placeholder_${helper_index}`;\n\t\thelper_index += 1;\n\n\t\tcandidates.push({\n\t\t\tplaceholder,\n\t\t\tstart: expr_start,\n\t\t\tend: expr_end,\n\t\t\texpr_text,\n\t\t\tfilename,\n\t\t\tkey,\n\t\t});\n\n\t\tmagic.overwrite(expr_start, expr_end, key === \"render\" ? `${placeholder}()` : placeholder);\n\t}\n\n\tif (candidates.length === 0) {\n\t\treturn { parse_code: content, candidates };\n\t}\n\n\tfor (const region of source_scan.scripts) {\n\t\tconst region_source = content.slice(region.start, region.end);\n\n\t\tmagic.overwrite(\n\t\t\tregion.start,\n\t\t\tregion.end,\n\t\t\tblank_script_region(region_source, region.is_module, region.is_typescript),\n\t\t);\n\t}\n\n\tfor (const region of source_scan.styles) {\n\t\tconst region_source = content.slice(region.start, region.end);\n\n\t\tmagic.overwrite(region.start, region.end, blank_source_region(region_source));\n\t}\n\n\treturn { parse_code: magic.toString(), candidates };\n}\n\nfunction blank_source_region(source: string): string {\n\treturn source.replace(/[^\\r\\n]/g, \" \");\n}\n\nfunction blank_script_region(source: string, is_module: boolean, is_typescript: boolean): string {\n\tconst module_attribute = is_module ? \" module\" : \"\";\n\tconst lang_attribute = is_typescript ? \" lang=ts\" : \"\";\n\tconst scaffold = `<script${module_attribute}${lang_attribute}></script>`;\n\n\treturn scaffold + blank_source_region(source.slice(scaffold.length));\n}\n\nfunction collect_expression_yield_expressions(\n\tcontent: string,\n\texpr_start: number,\n\texpr_text: string,\n\tfilename: string,\n): DeclarationYieldExpression[] {\n\tconst source_file = ts.createSourceFile(\n\t\t\"markup-expression.ts\",\n\t\t`const __SER___expr = ${expr_text};`,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tts.ScriptKind.TS,\n\t);\n\tconst stmt = source_file.statements[0];\n\n\tif (!stmt || !ts.isVariableStatement(stmt)) {\n\t\treturn [];\n\t}\n\n\tvalidate_rune_yield_usage(stmt, source_file.text, filename);\n\n\tconst initializer = stmt.declarationList.declarations[0]?.initializer;\n\n\tif (!initializer || !contains_top_level_yield_star(initializer)) {\n\t\treturn [];\n\t}\n\n\tconst prefix_length = source_file.text.indexOf(expr_text);\n\tconst expressions: DeclarationYieldExpression[] = [];\n\n\tcollect_yield_star_nodes(initializer, (yield_node) => {\n\t\tconst start = expr_start + yield_node.getStart(source_file) - prefix_length;\n\t\tconst end = expr_start + yield_node.end - prefix_length;\n\t\tconst yielded_text = content.slice(start, end).trim();\n\n\t\texpressions.push({\n\t\t\tstart,\n\t\t\tend,\n\t\t\texpr_text: yielded_text,\n\t\t});\n\t});\n\n\treturn expressions;\n}\n\ninterface TagInfo {\n\tkind: TagKind;\n\tprefix_length: number;\n}\n\nfunction get_tag_info(trimmed: string): TagInfo {\n\tif (trimmed.startsWith(\"#each \")) {\n\t\treturn { kind: \"each\", prefix_length: \"#each \".length };\n\t}\n\tif (trimmed.startsWith(\"#await \")) {\n\t\treturn { kind: \"await\", prefix_length: \"#await \".length };\n\t}\n\tif (trimmed.startsWith(\"@render \")) {\n\t\treturn { kind: \"render\", prefix_length: \"@render \".length };\n\t}\n\n\t/** Strip prefix-only tags — the expression starts after the tag keyword. */\n\tif (trimmed.startsWith(\"@attach \")) {\n\t\treturn { kind: \"plain\", prefix_length: \"@attach \".length };\n\t}\n\tif (trimmed.startsWith(\"#if \")) {\n\t\treturn { kind: \"plain\", prefix_length: \"#if \".length };\n\t}\n\tif (trimmed.startsWith(\":else if \")) {\n\t\treturn { kind: \"plain\", prefix_length: \":else if \".length };\n\t}\n\tif (trimmed.startsWith(\"#key \")) {\n\t\treturn { kind: \"plain\", prefix_length: \"#key \".length };\n\t}\n\tif (trimmed.startsWith(\"@const \")) {\n\t\treturn { kind: \"plain\", prefix_length: \"@const \".length };\n\t}\n\tif (trimmed.startsWith(\"@html \")) {\n\t\treturn { kind: \"html\", prefix_length: \"@html \".length };\n\t}\n\tif (trimmed.startsWith(\"@debug \")) {\n\t\treturn { kind: \"plain\", prefix_length: \"@debug \".length };\n\t}\n\tif (trimmed.startsWith(\"...\")) {\n\t\treturn { kind: \"plain\", prefix_length: \"...\".length };\n\t}\n\n\treturn { kind: \"plain\", prefix_length: 0 };\n}\n\nfunction collect_declaration_yield_expressions(\n\tcontent: string,\n\topen: number,\n\tleading_ws: number,\n\ttrimmed: string,\n\tfilename: string,\n): DeclarationYieldExpression[] {\n\tif (!is_declaration_tag_text(trimmed)) {\n\t\treturn [];\n\t}\n\n\tconst source_text = `${trimmed};`;\n\tconst source_file = ts.createSourceFile(\n\t\t\"declaration-tag.ts\",\n\t\tsource_text,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tts.ScriptKind.TS,\n\t);\n\n\tconst stmt = source_file.statements[0];\n\n\tif (!stmt || !ts.isVariableStatement(stmt)) {\n\t\treturn [];\n\t}\n\n\tvalidate_rune_yield_usage(stmt, source_text, filename);\n\n\tconst tag_start = open + 1 + leading_ws;\n\n\treturn stmt.declarationList.declarations.flatMap((decl) => {\n\t\tconst expressions: DeclarationYieldExpression[] = [];\n\n\t\tcollect_yield_star_nodes(decl, (yield_node) => {\n\t\t\tconst start = tag_start + yield_node.getStart(source_file);\n\t\t\tconst end = tag_start + yield_node.end;\n\t\t\tconst expr_text = content.slice(start, end).trim();\n\n\t\t\texpressions.push({\n\t\t\t\tstart,\n\t\t\t\tend,\n\t\t\t\texpr_text,\n\t\t\t});\n\t\t});\n\n\t\treturn expressions;\n\t});\n}\n\nfunction is_declaration_tag_text(trimmed: string): boolean {\n\treturn /^(?:const|let)\\s/.test(trimmed);\n}\n\nfunction validate_expression_yield_usage(expr_text: string, filename: string): void {\n\tconst source_text = `const __SER___expr = ${expr_text};`;\n\tconst source_file = ts.createSourceFile(\n\t\t\"markup-expression.ts\",\n\t\tsource_text,\n\t\tts.ScriptTarget.Latest,\n\t\ttrue,\n\t\tts.ScriptKind.TS,\n\t);\n\tconst stmt = source_file.statements[0];\n\n\tif (!stmt) {\n\t\treturn;\n\t}\n\n\tvalidate_rune_yield_usage(stmt, source_text, filename);\n}\n\nfunction is_event_callback_expression(inner: string): boolean {\n\tconst trimmed = inner.trimStart();\n\n\treturn (\n\t\t/^(?:async\\s+)?(?:\\([^)]*\\)|[A-Za-z_$][\\w$]*)\\s*=>/.test(trimmed) ||\n\t\t/^(?:async\\s+)?function\\b/.test(trimmed)\n\t);\n}\n\nfunction analyze_event_yield(inner: string): {\n\thas_top_level_yield_star: boolean;\n} {\n\tconst event = strip_arrow_function(inner);\n\tconst analysis = analyze_event_body_yield_star(event.body);\n\tconst generated_run = new RegExp(\n\t\t`${default_helper_bindings.dispatcher}(?:_\\\\d+)?\\\\.emit\\\\(\\\\{\\\\s*type:\\\\s*${default_helper_bindings.codes}(?:_\\\\d+)?\\\\.Markup\\\\.Run`,\n\t);\n\n\tif (generated_run.test(event.body)) {\n\t\treturn {\n\t\t\thas_top_level_yield_star: false,\n\t\t};\n\t}\n\n\treturn {\n\t\thas_top_level_yield_star:\n\t\t\tanalysis.has_top_level_yield_star ||\n\t\t\tanalysis.has_nested_invalid_yield_star ||\n\t\t\t/\\byield\\s*\\*/.test(event.body),\n\t};\n}\n\nfunction contains_yield_star_in_text(text: string): boolean {\n\tif (!/\\byield\\s*\\*/.test(text)) return false;\n\n\ttry {\n\t\tconst sf = ts.createSourceFile(\n\t\t\t\"expr.ts\",\n\t\t\t`const x = ${text};`,\n\t\t\tts.ScriptTarget.Latest,\n\t\t\ttrue,\n\t\t\tts.ScriptKind.TS,\n\t\t);\n\t\tconst stmt = sf.statements[0];\n\t\tif (!ts.isVariableStatement(stmt)) return false;\n\t\tconst decl = stmt.declarationList.declarations[0];\n\t\tif (!decl?.initializer) return false;\n\t\treturn contains_top_level_yield_star(decl.initializer);\n\t} catch {\n\t\treturn true;\n\t}\n}\n\n/** Free identifier collection helpers for generated closures. */\n","import {\n\tcreate_relocations,\n\tcreate_source_map,\n\tinject_helpers,\n\tmake_markup_helper_bindings,\n} from \"./apply.ts\";\nimport type { MarkupTransformOptions, MarkupTransformResult } from \"./types.ts\";\nimport { collect_effect_callback_bindings } from \"./effect-bindings.ts\";\nimport { scan_svelte_effect_source } from \"$/compiler/source-scan.ts\";\nimport { UnsupportedMarkupEffectPositionError } from \"$/errors.ts\";\nimport { classify_candidates } from \"./classify.ts\";\nimport { type AST, parse } from \"svelte/compiler\";\nimport { emit_replacements } from \"./emit.ts\";\nimport { sanitize_markup } from \"./scan.ts\";\n\nimport MagicString from \"magic-string\";\n\nexport type {\n\tMarkupRelocation,\n\tMarkupTransformOptions,\n\tMarkupTransformResult,\n\tMarkupTransformTarget,\n} from \"./types.ts\";\n\n/**\n * Transforms Svelte markup containing `{yield* expr}` brace expressions\n * into generated dispatcher events.\n *\n * Strategy: first find all brace expressions containing `yield*` via\n * character scanning, replace them with placeholder identifiers, then\n * parse the sanitized markup with Svelte's AST to determine the correct\n * context for each placeholder (plain expression, #each, #await, event\n * handler, etc.).\n *\n * @example\n * ```ts\n * const result = transform_markup_effect(\n * \"<button onclick={yield* save()}>Save</button>\",\n * \"SaveButton.svelte\",\n * );\n * ```\n *\n * @since 2.0.0\n * @param content - The raw `.svelte` file content.\n * @param filename - The source filename, used in error messages.\n * @param options - Optional transform target configuration.\n * @returns The transformed markup and a flag indicating whether yield* was\n * found.\n */\nexport function transform_markup_effect(\n\tcontent: string,\n\tfilename: string,\n\toptions: MarkupTransformOptions = {},\n): MarkupTransformResult {\n\tif (!/\\byield\\s*\\*/.test(content)) {\n\t\treturn { code: content, has_yield: false };\n\t}\n\n\tconst source_scan = scan_svelte_effect_source(content, filename);\n\n\t/** Find all brace expressions containing yield* and replace with placeholders. */\n\tconst work = sanitize_markup(source_scan);\n\n\tif (work.candidates.length === 0) {\n\t\treturn { code: content, has_yield: false };\n\t}\n\n\tconst effect_context = collect_effect_callback_bindings(source_scan.scripts);\n\tconst helper_context = make_markup_helper_bindings(source_scan, options.target ?? \"client\");\n\n\t/** Parse the sanitized markup with Svelte's AST. */\n\tconst ast = parse(work.parse_code, { filename, modern: true }) as AST.Root;\n\n\t/** Match placeholders to their AST context and build replacements. */\n\tconst classified = classify_candidates(ast, work.candidates);\n\tconst matched = new Set(classified.map(({ candidate }) => candidate.placeholder));\n\tconst unmatched = work.candidates.find((candidate) => !matched.has(candidate.placeholder));\n\n\tif (unmatched) {\n\t\tthrow new UnsupportedMarkupEffectPositionError(filename, unmatched.expr_text);\n\t}\n\n\tconst replacements = emit_replacements(\n\t\tclassified,\n\t\teffect_context,\n\t\thelper_context.bindings,\n\t\thelper_context.name_allocator,\n\t\toptions.target ?? \"client\",\n\t);\n\tconst helpers = replacements.flatMap((replacement) => replacement.helpers ?? []);\n\n\tconst magic = new MagicString(content);\n\n\treplacements.sort((a, b) => b.start - a.start);\n\n\tfor (const r of replacements) {\n\t\tmagic.overwrite(r.start, r.end, r.text);\n\t}\n\n\tconst helper_insertion = inject_helpers(\n\t\tmagic,\n\t\tsource_scan,\n\t\thelpers,\n\t\thelper_context.bindings,\n\t\thelper_context.scope_wiring,\n\t);\n\tconst relocations = create_relocations(replacements, helper_insertion);\n\n\treturn {\n\t\tcode: magic.toString(),\n\t\thas_yield: true,\n\t\tmap: create_source_map(magic, filename),\n\t\trelocations,\n\t};\n}\n"],"mappings":"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"}
|