svelte-effect-runtime 4.2.0 → 4.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dist/chunks/{server-NeyeDSax.js → server-BNxq-pUH.js} +29 -14
- package/.dist/chunks/server-BNxq-pUH.js.map +1 -0
- package/.dist/chunks/{transform-C0jW8Qta.js → transform-CASuYezS.js} +89 -23
- package/.dist/chunks/transform-CASuYezS.js.map +1 -0
- package/.dist/internal/remote-server.js +1 -1
- package/.dist/markup/transform/expressions.d.ts +8 -0
- package/.dist/markup/transform.js +1 -1
- package/.dist/remote/diagnostics.d.ts +17 -1
- package/.dist/remote/server.d.ts +3 -3
- package/.dist/remote/server.js +1 -1
- package/.dist/runtime/transform.js +9 -3
- package/.dist/runtime/transform.js.map +1 -1
- package/.dist/server.js +4 -4
- package/.dist/server.js.map +1 -1
- package/package.json +1 -1
- package/.dist/chunks/server-NeyeDSax.js.map +0 -1
- package/.dist/chunks/transform-C0jW8Qta.js.map +0 -1
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server-NeyeDSax.js","names":[],"sources":["../../../modules/svelte-effect-runtime/src/remote/diagnostics.ts","../../../modules/svelte-effect-runtime/src/remote/cause-codec.ts","../../../modules/svelte-effect-runtime/src/remote/server.ts"],"sourcesContent":["import { Cause } from \"effect\";\n\n/**\n * Why a remote failure reached the client without its original detail.\n *\n * @example\n * ```ts\n * const reason: OpaqueRemoteFailureReason = \"untagged\";\n * ```\n *\n * @since 4.2.0\n */\nexport type OpaqueRemoteFailureReason = \"untagged\" | \"unserializable\" | \"unknown\" | \"interrupted\";\n\n/**\n * Request detail attached to an opaque remote failure report so the log line\n * points at the handler that produced it.\n *\n * @example\n * ```ts\n * const context: RemoteFailureContext = { method: \"POST\", url: \"/checkout\" };\n * ```\n *\n * @since 4.2.0\n */\nexport type RemoteFailureContext = {\n\treadonly method?: string;\n\treadonly route?: string;\n\treadonly url?: string;\n};\n\ntype Reporter = (message: string) => void;\n\nconst explanations: Readonly<Record<OpaqueRemoteFailureReason, string>> = {\n\tuntagged:\n\t\t\"the failure has no string `_tag`, so it cannot be told apart from an arbitrary object on the wire\",\n\tunserializable:\n\t\t\"the failure could not be serialized, even after being reduced to its own enumerable properties\",\n\tunknown: \"the cause carries no failure reason, so there was nothing to serialize\",\n\tinterrupted: \"the handler's fiber was interrupted before it produced a result\",\n};\n\nconst remedies: Readonly<Record<OpaqueRemoteFailureReason, string>> = {\n\tuntagged:\n\t\t\"Fail with a tagged error (`Data.TaggedError` or `Schema.TaggedError`) so SER can carry it to the client.\",\n\tunserializable:\n\t\t\"Remove non-transportable values (functions, class instances, cycles) from the error, or map it to a tagged error first.\",\n\tunknown:\n\t\t\"Check for a defect thrown outside the Effect error channel; the original value is shown above.\",\n\tinterrupted:\n\t\t\"An interrupt usually means the runtime was disposed mid-request, for example when the dev server restarted while this request was in flight.\",\n};\n\n/**\n * Reports a remote failure that had to be replaced with an opaque envelope.\n *\n * SER cannot send an unrecognized failure to the browser, so the client only\n * ever sees a generic 500. Without this report the original error would be\n * lost entirely, which is the difference between a debuggable failure and a\n * silent one.\n *\n * @example\n * ```ts\n * report_opaque_remote_failure(\"untagged\", cause, value, { url: \"/checkout\" });\n * ```\n *\n * @since 4.2.0\n * @param reason - Why the failure could not be transported.\n * @param cause - Full Effect cause behind the failure.\n * @param value - The original failure value, when one was found.\n * @param context - Optional request detail for the log header.\n * @param report - Sink for the rendered report; defaults to `console.error`.\n */\nexport function report_opaque_remote_failure(\n\treason: OpaqueRemoteFailureReason,\n\tcause: Cause.Cause<unknown>,\n\tvalue: unknown,\n\tcontext?: RemoteFailureContext,\n\treport: Reporter = default_reporter,\n): void {\n\t/**\n\t * Reporting runs before SvelteKit's error helper, and the failure it\n\t * describes is arbitrary user data. Throwing here would replace the 500\n\t * the handler owes the client with the reporter's own error.\n\t */\n\ttry {\n\t\treport(render_opaque_remote_failure(reason, cause, value, context));\n\t} catch {\n\t\t/** A diagnostic is never worth failing the request over. */\n\t}\n}\n\n/**\n * Renders the report emitted by {@link report_opaque_remote_failure}.\n *\n * @example\n * ```ts\n * const message = render_opaque_remote_failure(\"untagged\", cause, value);\n * ```\n *\n * @since 4.2.0\n * @param reason - Why the failure could not be transported.\n * @param cause - Full Effect cause behind the failure.\n * @param value - The original failure value, when one was found.\n * @param context - Optional request detail for the log header.\n * @returns The multi-line report.\n */\nexport function render_opaque_remote_failure(\n\treason: OpaqueRemoteFailureReason,\n\tcause: Cause.Cause<unknown>,\n\tvalue: unknown,\n\tcontext?: RemoteFailureContext,\n): string {\n\tconst request = render_request(context);\n\tconst lines = [\n\t\t\"[svelte-effect-runtime] A remote handler failed with an error that could not be sent to the client.\",\n\t\t` Reason: ${explanations[reason]}.`,\n\t];\n\n\tif (request) {\n\t\tlines.push(` Request: ${request}`);\n\t}\n\n\tif (reason !== \"interrupted\") {\n\t\tlines.push(` Failure: ${inspect_failure(value)}`);\n\t}\n\n\tlines.push(\" Cause:\", indent(pretty_cause(cause)), ` Fix: ${remedies[reason]}`);\n\n\treturn lines.join(\"\\n\");\n}\n\nfunction render_request(context?: RemoteFailureContext): string | undefined {\n\tif (!context) {\n\t\treturn undefined;\n\t}\n\n\tconst target = context.url ?? context.route;\n\tconst parts = [context.method, target].filter(Boolean);\n\tconst names_route = Boolean(context.route && context.url && context.route !== context.url);\n\tconst route = names_route ? ` (route ${context.route})` : \"\";\n\n\tif (parts.length === 0) {\n\t\treturn undefined;\n\t}\n\n\treturn `${parts.join(\" \")}${route}`;\n}\n\nfunction pretty_cause(cause: Cause.Cause<unknown>): string {\n\ttry {\n\t\treturn Cause.pretty(cause);\n\t} catch {\n\t\treturn String(cause);\n\t}\n}\n\n/**\n * Renders the failure value itself. Errors keep their stack because that is\n * the only part of an untagged failure that identifies its source.\n */\nfunction inspect_failure(value: unknown): string {\n\tif (value === undefined) {\n\t\treturn \"(none)\";\n\t}\n\n\tif (value instanceof globalThis.Error) {\n\t\treturn value.stack ?? `${value.name}: ${value.message}`;\n\t}\n\n\tif (typeof value !== \"object\" || value === null) {\n\t\treturn describe_primitive(value);\n\t}\n\n\ttry {\n\t\treturn JSON.stringify(value, undefined, 2) ?? describe_object(value);\n\t} catch {\n\t\treturn describe_object(value);\n\t}\n}\n\n/** A primitive can still carry a throwing `Symbol.toPrimitive`. */\nfunction describe_primitive(value: unknown): string {\n\ttry {\n\t\treturn String(value);\n\t} catch {\n\t\treturn typeof value;\n\t}\n}\n\n/**\n * Falls back through conversions an object can subvert. A null-prototype or\n * hostile object may throw from `toString` and lack `Object.prototype`, so the\n * last resort must not touch the value at all.\n */\nfunction describe_object(value: object): string {\n\ttry {\n\t\treturn String(value);\n\t} catch {\n\t\t/** Fall through to a conversion the value cannot override. */\n\t}\n\n\ttry {\n\t\treturn Object.prototype.toString.call(value);\n\t} catch {\n\t\treturn \"[unrenderable failure]\";\n\t}\n}\n\nfunction indent(value: string): string {\n\treturn value\n\t\t.split(\"\\n\")\n\t\t.map((line) => ` ${line}`)\n\t\t.join(\"\\n\");\n}\n\nfunction default_reporter(message: string): void {\n\tconsole.error(message);\n}\n","import type { OpaqueRemoteFailureReason } from \"$/remote/diagnostics.ts\";\nimport { isHttpError, isRedirect, isValidationError } from \"@sveltejs/kit\";\nimport { is_form_error, type FormIssue } from \"$/remote/shared.ts\";\nimport { Cause, Schema } from \"effect\";\nimport { stringify } from \"devalue\";\n\n/**\n * Records that a failure lost its detail on the way to the client, so callers\n * can report the original error instead of dropping it silently.\n *\n * @example\n * ```ts\n * const diagnostic: OpaqueRemoteFailure = { reason: \"untagged\", value: err };\n * ```\n *\n * @since 4.2.0\n */\nexport type OpaqueRemoteFailure = {\n\treadonly reason: OpaqueRemoteFailureReason;\n\treadonly value: unknown;\n};\n\ntype EncodedRemoteFailure = {\n\treadonly encoded: string;\n\treadonly opaque?: OpaqueRemoteFailure;\n};\n\nexport type RemoteCauseResolution =\n\t| {\n\t\t\treadonly _tag: \"SvelteKitControlFlow\";\n\t\t\treadonly value: unknown;\n\t }\n\t| {\n\t\t\treadonly _tag: \"InterruptOnly\";\n\t\t\treadonly cause: Cause.Cause<unknown>;\n\t }\n\t| {\n\t\t\treadonly _tag: \"FormInvalid\";\n\t\t\treadonly issues: readonly FormIssue[];\n\t }\n\t| {\n\t\t\treadonly _tag: \"RemoteFailure\";\n\t\t\treadonly encoded: string;\n\t\t\treadonly opaque?: OpaqueRemoteFailure;\n\t };\n\n/** Preserves SvelteKit control flow before classifying transportable Effect failures. */\nexport function classify_remote_cause(cause: Cause.Cause<unknown>): RemoteCauseResolution {\n\tconst control_flow = find_sveltekit_control_flow(cause);\n\n\tif (control_flow !== undefined) {\n\t\treturn {\n\t\t\t_tag: \"SvelteKitControlFlow\",\n\t\t\tvalue: control_flow,\n\t\t};\n\t}\n\n\tif (Cause.hasInterruptsOnly(cause)) {\n\t\treturn {\n\t\t\t_tag: \"InterruptOnly\",\n\t\t\tcause,\n\t\t};\n\t}\n\n\tconst form_error_issues = find_form_error_issues(cause);\n\n\tif (form_error_issues !== undefined) {\n\t\treturn {\n\t\t\t_tag: \"FormInvalid\",\n\t\t\tissues: form_error_issues,\n\t\t};\n\t}\n\n\tconst failure = encode_remote_failure_detailed(cause);\n\n\treturn {\n\t\t_tag: \"RemoteFailure\",\n\t\tencoded: failure.encoded,\n\t\t...(failure.opaque ? { opaque: failure.opaque } : {}),\n\t};\n}\n\n/** Encodes a remote failure into the transport ABI shared with generated clients. */\nexport function encode_remote_failure(cause: Cause.Cause<unknown>): string {\n\treturn encode_remote_failure_detailed(cause).encoded;\n}\n\n/**\n * Encodes a remote failure and reports whether its detail survived encoding.\n *\n * @example\n * ```ts\n * const { encoded, opaque } = encode_remote_failure_detailed(cause);\n * ```\n *\n * @since 4.2.0\n * @param cause - Cause carrying the handler's failure.\n * @returns The encoded payload and, when detail was lost, why.\n */\nexport function encode_remote_failure_detailed(cause: Cause.Cause<unknown>): EncodedRemoteFailure {\n\tfor (const reason of cause.reasons) {\n\t\tif (!Cause.isFailReason(reason)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst tagged = has_public_remote_failure_tag(reason.error);\n\n\t\tif (!tagged) {\n\t\t\treturn {\n\t\t\t\tencoded: stringify_unknown_remote_failure(),\n\t\t\t\topaque: { reason: \"untagged\", value: reason.error },\n\t\t\t};\n\t\t}\n\n\t\tconst failure = to_serializable_public_failure(reason.error);\n\t\tconst encoded = failure === undefined ? undefined : stringify_failure(failure);\n\n\t\tif (encoded !== undefined) {\n\t\t\treturn { encoded };\n\t\t}\n\n\t\treturn {\n\t\t\tencoded: stringify_unknown_remote_failure(),\n\t\t\topaque: { reason: \"unserializable\", value: reason.error },\n\t\t};\n\t}\n\n\treturn {\n\t\tencoded: stringify_unknown_remote_failure(),\n\t\topaque: { reason: \"unknown\", value: find_defect(cause) },\n\t};\n}\n\n/** Surfaces a defect so an unencodable cause still names something concrete. */\nfunction find_defect(cause: Cause.Cause<unknown>): unknown {\n\tfor (const reason of cause.reasons) {\n\t\tif (Cause.isDieReason(reason)) {\n\t\t\treturn reason.defect;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nfunction find_sveltekit_control_flow(cause: Cause.Cause<unknown>): unknown | undefined {\n\tfor (const reason of cause.reasons) {\n\t\tif (!Cause.isDieReason(reason)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (is_sveltekit_control_flow(reason.defect)) {\n\t\t\treturn reason.defect;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nfunction find_form_error_issues(cause: Cause.Cause<unknown>): readonly FormIssue[] | undefined {\n\tfor (const reason of cause.reasons) {\n\t\tif (!Cause.isFailReason(reason)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst issues = get_form_error_issues(reason.error);\n\n\t\tif (issues !== undefined) {\n\t\t\treturn issues;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nfunction get_form_error_issues(value: unknown): readonly FormIssue[] | undefined {\n\tif (is_form_error(value)) {\n\t\treturn value.issues;\n\t}\n\n\treturn is_tagged_form_error(value) ? [] : undefined;\n}\n\nfunction is_sveltekit_control_flow(value: unknown): boolean {\n\treturn isRedirect(value) || isHttpError(value) || isValidationError(value);\n}\n\nfunction stringify_failure(value: unknown): string | undefined {\n\ttry {\n\t\treturn stringify(value);\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nfunction to_serializable_public_failure(value: unknown, seen = new WeakSet<object>()): unknown {\n\tif (typeof value === \"function\" || typeof value === \"symbol\") {\n\t\treturn undefined;\n\t}\n\n\tif (!is_object_like(value)) {\n\t\treturn value;\n\t}\n\n\tif (stringify_failure(value) !== undefined) {\n\t\treturn value;\n\t}\n\n\tif (is_internal_object(value)) {\n\t\treturn undefined;\n\t}\n\n\tif (seen.has(value)) {\n\t\treturn undefined;\n\t}\n\n\tseen.add(value);\n\n\tconst serializable = Array.isArray(value)\n\t\t? value.map((item) => to_serializable_public_failure(item, seen))\n\t\t: to_plain_record(value, seen);\n\n\tseen.delete(value);\n\n\treturn serializable;\n}\n\nfunction to_plain_record(value: object, seen: WeakSet<object>): Record<string, unknown> {\n\tconst descriptors = Object.getOwnPropertyDescriptors(value);\n\tconst record: Record<string, unknown> = {};\n\n\tfor (const [key, descriptor] of Object.entries(descriptors)) {\n\t\tif (key === \"stack\" || !(\"value\" in descriptor)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\trecord[key] = to_serializable_public_failure(descriptor.value, seen);\n\t}\n\n\tif (value instanceof Error && !(\"message\" in record)) {\n\t\trecord.message = value.message;\n\t}\n\n\treturn record;\n}\n\nfunction is_object_like(value: unknown): value is object {\n\treturn typeof value === \"object\" && value !== null;\n}\n\nfunction has_public_remote_failure_tag(value: unknown): boolean {\n\treturn is_object_like(value) && typeof (value as { _tag?: unknown })._tag === \"string\";\n}\n\nfunction is_internal_object(value: object): boolean {\n\treturn (\n\t\t!Array.isArray(value) && !is_plain_record(value) && !has_public_remote_failure_tag(value)\n\t);\n}\n\nfunction is_plain_record(value: object): boolean {\n\tconst prototype = Object.getPrototypeOf(value);\n\n\treturn prototype === Object.prototype || prototype === null;\n}\n\nfunction create_unknown_remote_failure(): { readonly message: string } {\n\treturn { message: \"[UNKNOWN_REMOTE_FAILURE]: Unknown error\" };\n}\n\nfunction stringify_unknown_remote_failure(): string {\n\treturn stringify(create_unknown_remote_failure());\n}\n\nconst is_tagged_form_error = Schema.is(\n\tSchema.Struct({\n\t\t_tag: Schema.Literal(\"FormError\"),\n\t}),\n);\n","import { create_serialized_remote_failure_envelope } from \"$/remote/shared.ts\";\nimport { report_opaque_remote_failure } from \"$/remote/diagnostics.ts\";\nimport { RemoteHelperContextError, RemoteHelperError } from \"$/errors.ts\";\nimport type { RemoteFailureContext } from \"$/remote/diagnostics.ts\";\nimport { classify_remote_cause } from \"$/remote/cause-codec.ts\";\nimport type { FormIssue } from \"$/remote/shared.ts\";\nimport { Cause, Effect, Exit } from \"effect\";\n\ntype SvelteInvalid = (...issues: readonly (FormIssue | string)[]) => never;\n\ntype SvelteError = (status: number, body: unknown) => never;\n\nconst request_event_context_error_start =\n\t\"Can only read the current request event inside functions invoked during `handle`\";\n\nconst request_store_context_error = \"Could not get the request store.\";\n\nexport { encode_remote_failure } from \"$/remote/cause-codec.ts\";\n\n/** Maps a remote Effect exit into the control flow expected by SvelteKit. */\nexport async function run_remote_effect<A>(\n\teffect: Effect.Effect<A, unknown, unknown>,\n\truntime: {\n\t\trunPromise: (e: Effect.Effect<unknown, unknown, unknown>) => Promise<unknown>;\n\t},\n\tinvalid: SvelteInvalid,\n\terror: SvelteError,\n\tcontext?: RemoteFailureContext,\n): Promise<A> {\n\tconst exit: Exit.Exit<A, unknown> = (await runtime.runPromise(\n\t\tEffect.exit(effect) as Effect.Effect<unknown, unknown, unknown>,\n\t)) as Exit.Exit<A, unknown>;\n\n\tif (Exit.isSuccess(exit)) {\n\t\treturn exit.value;\n\t}\n\n\tthrow_remote_cause(exit.cause, invalid, error, context);\n}\n\n/** Applies a classified remote Cause decision to SvelteKit's server helpers. */\nexport function throw_remote_cause(\n\tcause: Cause.Cause<unknown>,\n\tinvalid: SvelteInvalid,\n\terror: SvelteError,\n\tcontext?: RemoteFailureContext,\n\treport?: (message: string) => void,\n): never {\n\tconst resolution = classify_remote_cause(cause);\n\n\tswitch (resolution._tag) {\n\t\tcase \"SvelteKitControlFlow\": {\n\t\t\tthrow resolution.value;\n\t\t}\n\t\tcase \"InterruptOnly\": {\n\t\t\treport_opaque_remote_failure(\n\t\t\t\t\"interrupted\",\n\t\t\t\tresolution.cause,\n\t\t\t\tundefined,\n\t\t\t\tcontext,\n\t\t\t\treport,\n\t\t\t);\n\n\t\t\tthrow Cause.squash(resolution.cause);\n\t\t}\n\t\tcase \"FormInvalid\": {\n\t\t\tinvalid(...resolution.issues);\n\t\t}\n\t\tcase \"RemoteFailure\": {\n\t\t\tconst envelope = create_serialized_remote_failure_envelope(resolution.encoded);\n\n\t\t\t/**\n\t\t\t * The client only receives a generic 500 for a failure SER could not\n\t\t\t * encode, so the original error is reported here or lost entirely.\n\t\t\t */\n\t\t\tif (resolution.opaque) {\n\t\t\t\treport_opaque_remote_failure(\n\t\t\t\t\tresolution.opaque.reason,\n\t\t\t\t\tcause,\n\t\t\t\t\tresolution.opaque.value,\n\t\t\t\t\tcontext,\n\t\t\t\t\treport,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\terror(500, envelope);\n\t\t}\n\t}\n}\n\n/**\n * Describes the request a remote failure occurred in.\n *\n * @example\n * ```ts\n * const context = to_remote_failure_context(event);\n * ```\n *\n * @since 4.2.0\n * @param event - Request event the handler ran under.\n * @returns Request detail for opaque failure reports.\n */\nexport function to_remote_failure_context(event: {\n\treadonly request?: { readonly method?: string };\n\treadonly route?: { readonly id?: string | null };\n\treadonly url?: { readonly pathname?: string };\n}): RemoteFailureContext {\n\tconst method = event.request?.method;\n\tconst route = event.route?.id ?? undefined;\n\tconst url = event.url?.pathname;\n\n\treturn {\n\t\t...(method ? { method } : {}),\n\t\t...(route ? { route } : {}),\n\t\t...(url ? { url } : {}),\n\t};\n}\n\nexport function throw_form_error(issues: readonly FormIssue[], invalid: SvelteInvalid): never {\n\tinvalid(...issues);\n}\n\n/** Rebrands SvelteKit context failures with the remote helper that triggered them. */\nexport function normalize_remote_helper_error(err: unknown, helper_name: string): Error {\n\tif (is_sveltekit_remote_context_error(err)) {\n\t\treturn new RemoteHelperContextError(helper_name);\n\t}\n\n\treturn err instanceof Error ? err : new RemoteHelperError(err);\n}\n\nfunction is_sveltekit_remote_context_error(err: unknown): err is Error {\n\tif (!(err instanceof Error)) {\n\t\treturn false;\n\t}\n\n\treturn (\n\t\terr.message.startsWith(request_event_context_error_start) ||\n\t\terr.message === request_store_context_error\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -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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"}
|