svelte-effect-runtime 1.0.4 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{magic-string.es-dQ3Qnajt.js → magic-string.es-5gRBdMgP.js} +1 -1
- package/dist/chunks/{magic-string.es-dQ3Qnajt.js.map → magic-string.es-5gRBdMgP.js.map} +1 -1
- package/dist/chunks/markup-DItLw1g8.js +13315 -0
- package/dist/chunks/markup-DItLw1g8.js.map +1 -0
- package/dist/internal/markup.js +1 -696
- package/dist/internal/transform.js +1 -1
- package/dist/language-server.js +1 -1
- package/dist/mod.js +1 -1
- package/dist/preprocess.js +1 -1
- package/dist/root-node.js +1 -1
- package/package.json +1 -1
- package/dist/internal/markup.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as MagicString } from "../chunks/magic-string.es-
|
|
1
|
+
import { t as MagicString } from "../chunks/magic-string.es-5gRBdMgP.js";
|
|
2
2
|
import ts from "typescript";
|
|
3
3
|
//#region internal/transform.ts
|
|
4
4
|
const DEFAULT_RUNTIME_MODULE_ID = "svelte-effect-runtime";
|
package/dist/language-server.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { transformEffectMarkup } from "./
|
|
1
|
+
import { t as transformEffectMarkup } from "./chunks/markup-DItLw1g8.js";
|
|
2
2
|
import { transformEffectScript } from "./internal/transform.js";
|
|
3
3
|
import { effectPreprocess } from "./preprocess.js";
|
|
4
4
|
export { effectPreprocess, transformEffectMarkup, transformEffectScript };
|
package/dist/mod.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { transformEffectMarkup } from "./
|
|
1
|
+
import { t as transformEffectMarkup } from "./chunks/markup-DItLw1g8.js";
|
|
2
2
|
import { transformEffectScript } from "./internal/transform.js";
|
|
3
3
|
import { effectPreprocess } from "./preprocess.js";
|
|
4
4
|
import { ClientRuntime, ClientRuntimeTag, getEffectRuntimeOrThrow, provideEffectRuntime, registerHotDispose, runComponentEffect, runInlineEffect, to_effect, to_native } from "./client.js";
|
package/dist/preprocess.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { transformEffectMarkup } from "./
|
|
1
|
+
import { t as transformEffectMarkup } from "./chunks/markup-DItLw1g8.js";
|
|
2
2
|
import { transformEffectScript } from "./internal/transform.js";
|
|
3
3
|
//#region preprocess.ts
|
|
4
4
|
function effectPreprocess(options = {}) {
|
package/dist/root-node.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { transformEffectMarkup } from "./
|
|
1
|
+
import { t as transformEffectMarkup } from "./chunks/markup-DItLw1g8.js";
|
|
2
2
|
import { transformEffectScript } from "./internal/transform.js";
|
|
3
3
|
import { effectPreprocess } from "./preprocess.js";
|
|
4
4
|
import { ClientRuntime, ClientRuntimeTag, getEffectRuntimeOrThrow, provideEffectRuntime, registerHotDispose, runComponentEffect, runInlineEffect, to_effect, to_native } from "./client.js";
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"markup.js","names":[],"sources":["../../../modules/svelte-effect-runtime/internal/markup.ts"],"sourcesContent":["import MagicString, { type SourceMap } from \"magic-string\";\nimport { parse, type AST } from \"svelte/compiler\";\nimport ts from \"typescript\";\nimport type { EffectPreprocessOptions } from \"../preprocess.ts\";\n\nconst DEFAULT_RUNTIME_MODULE_ID = \"svelte-effect-runtime\";\nconst DEFAULT_EFFECT_MODULE_ID = \"effect\";\nconst DEFAULT_SVELTE_MODULE_ID = \"svelte\";\nconst MARKUP_HELPER_PREFIX = \"__svelteEffectRuntimeMarkup\";\n\ninterface TransformEffectMarkupOptions extends EffectPreprocessOptions {\n filename: string;\n}\n\ninterface TransformEffectMarkupResult {\n code: string;\n map: SourceMap;\n}\n\ninterface ExcludedRange {\n start: number;\n end: number;\n}\n\ninterface Replacement {\n start: number;\n end: number;\n text: string;\n}\n\ninterface MarkupCandidate {\n expressionText: string;\n placeholder: string;\n start: number;\n end: number;\n}\n\ninterface WrappedExpression {\n expression: ts.Expression;\n offset: number;\n sourceFile: ts.SourceFile;\n}\n\nexport function transformEffectMarkup(\n content: string,\n options: TransformEffectMarkupOptions,\n): TransformEffectMarkupResult {\n const sanitized = sanitizeEffectMarkup(\n content,\n options.filename,\n );\n\n if (sanitized.candidates.length === 0) {\n const identity = new MagicString(content);\n return {\n code: content,\n map: identity.generateMap({\n hires: true,\n includeContent: true,\n source: options.filename,\n }),\n };\n }\n\n const replacements = collectMarkupReplacements(\n create_parse_safe_markup_source(sanitized.code),\n sanitized.candidates,\n options.filename,\n );\n\n const magicString = new MagicString(content);\n\n for (const replacement of replacements) {\n magicString.overwrite(replacement.start, replacement.end, replacement.text);\n }\n\n injectMarkupHelpers(magicString, content, options);\n\n return {\n code: magicString.toString(),\n map: magicString.generateMap({\n hires: true,\n includeContent: true,\n source: options.filename,\n }),\n };\n}\n\nfunction create_parse_safe_markup_source(content: string): string {\n const excluded_ranges = findExcludedRanges(content);\n\n if (excluded_ranges.length === 0) {\n return content;\n }\n\n let result = \"\";\n let cursor = 0;\n\n for (const range of excluded_ranges) {\n result += content.slice(cursor, range.start);\n result += mask_excluded_text(content.slice(range.start, range.end));\n cursor = range.end;\n }\n\n result += content.slice(cursor);\n return result;\n}\n\nfunction mask_excluded_text(text: string): string {\n let result = \"\";\n\n for (const character of text) {\n result += character === \"\\n\" || character === \"\\r\" ? character : \" \";\n }\n\n return result;\n}\n\nfunction sanitizeEffectMarkup(\n content: string,\n filename: string,\n): { code: string; candidates: MarkupCandidate[] } {\n const excludedRanges = findExcludedRanges(content);\n const candidates: MarkupCandidate[] = [];\n const magicString = new MagicString(content);\n let helperIndex = 0;\n\n for (let index = 0; index < content.length; index += 1) {\n if (content[index] !== \"{\") {\n continue;\n }\n\n const range = findExcludedRangeAt(excludedRanges, index);\n\n if (range) {\n index = range.end - 1;\n continue;\n }\n\n const closingIndex = findClosingBrace(content, index + 1);\n\n if (closingIndex === -1) {\n continue;\n }\n\n const inner = content.slice(index + 1, closingIndex);\n const candidate = getCandidateForBraceTag(\n index,\n closingIndex,\n inner,\n filename,\n helperIndex,\n );\n\n if (candidate) {\n helperIndex += 1;\n candidates.push(candidate);\n magicString.overwrite(\n candidate.start,\n candidate.end,\n candidate.placeholder,\n );\n }\n\n index = closingIndex;\n }\n\n return {\n code: magicString.toString(),\n candidates,\n };\n}\n\nfunction collectMarkupReplacements(\n sanitizedContent: string,\n candidates: readonly MarkupCandidate[],\n filename: string,\n): Replacement[] {\n const ast = parse(sanitizedContent, {\n filename,\n modern: true,\n });\n const candidatesByPlaceholder = new Map(\n candidates.map((candidate) => [candidate.placeholder, candidate]),\n );\n const replacements: Replacement[] = [];\n const matchedPlaceholders = new Set<string>();\n\n visitFragment(ast.fragment, candidatesByPlaceholder, matchedPlaceholders, (\n candidate,\n kind,\n ) => {\n replacements.push(makeAstReplacement(candidate, kind, filename));\n });\n\n const unmatched = candidates.filter((candidate) =>\n !matchedPlaceholders.has(candidate.placeholder)\n );\n\n if (unmatched.length > 0) {\n throw new Error(\n `${filename}: failed to classify some markup Effect expressions.\\n` +\n unmatched.map((candidate) =>\n `Problematic expression:\\n${candidate.expressionText}`\n ).join(\"\\n\\n\"),\n );\n }\n\n return replacements.sort((left, right) => left.start - right.start);\n}\n\nfunction getCandidateForBraceTag(\n openBraceIndex: number,\n closeBraceIndex: number,\n inner: string,\n filename: string,\n helperIndex: number,\n): MarkupCandidate | undefined {\n const trimmed = inner.trimStart();\n const leadingWhitespaceLength = inner.length - trimmed.length;\n\n if (!containsYieldStarText(trimmed)) {\n return undefined;\n }\n\n if (trimmed.startsWith(\"@const \")) {\n const initializerRange = findConstInitializerRange(\n trimmed.slice(\"@const \".length),\n filename,\n );\n\n return initializerRange\n ? makeMarkupCandidate(\n openBraceIndex + 1 + leadingWhitespaceLength + \"@const \".length +\n initializerRange.start,\n openBraceIndex + 1 + leadingWhitespaceLength + \"@const \".length +\n initializerRange.end,\n trimmed.slice(\"@const \".length + initializerRange.start,\n \"@const \".length + initializerRange.end),\n helperIndex,\n )\n : undefined;\n }\n\n if (trimmed.startsWith(\"#if \")) {\n return makeMarkupCandidate(\n openBraceIndex + 1 + leadingWhitespaceLength + \"#if \".length,\n closeBraceIndex,\n trimmed.slice(\"#if \".length),\n helperIndex,\n );\n }\n\n if (trimmed.startsWith(\":else if \")) {\n return makeMarkupCandidate(\n openBraceIndex + 1 + leadingWhitespaceLength + \":else if \".length,\n closeBraceIndex,\n trimmed.slice(\":else if \".length),\n helperIndex,\n );\n }\n\n if (trimmed.startsWith(\"#each \")) {\n const eachHeader = trimmed.slice(\"#each \".length);\n const asIndex = findTopLevelKeyword(eachHeader, \" as \");\n\n if (asIndex === -1) {\n return undefined;\n }\n\n const listExpression = eachHeader.slice(0, asIndex);\n\n return makeMarkupCandidate(\n openBraceIndex + 1 + leadingWhitespaceLength + \"#each \".length,\n openBraceIndex + 1 + leadingWhitespaceLength + \"#each \".length +\n listExpression.length,\n listExpression,\n helperIndex,\n );\n }\n\n if (trimmed.startsWith(\"#await \")) {\n const awaitHeader = trimmed.slice(\"#await \".length);\n const boundary = findAwaitBoundary(awaitHeader);\n const expressionText = boundary === -1\n ? awaitHeader\n : awaitHeader.slice(0, boundary);\n\n return makeMarkupCandidate(\n openBraceIndex + 1 + leadingWhitespaceLength + \"#await \".length,\n openBraceIndex + 1 + leadingWhitespaceLength + \"#await \".length +\n expressionText.length,\n expressionText,\n helperIndex,\n );\n }\n\n if (trimmed.startsWith(\"@html \")) {\n return makeMarkupCandidate(\n openBraceIndex + 1 + leadingWhitespaceLength + \"@html \".length,\n closeBraceIndex,\n trimmed.slice(\"@html \".length),\n helperIndex,\n );\n }\n\n if (trimmed.startsWith(\"@render \")) {\n throw new Error(\n `${filename}: {@render ...} cannot depend on yield* in markup right now.\\nMove the Effect code into <script effect> or a helper function instead.\\n\\nProblematic tag:\\n{${inner}}`,\n );\n }\n\n if (trimmed.startsWith(\"@attach \")) {\n return makeMarkupCandidate(\n openBraceIndex + 1 + leadingWhitespaceLength + \"@attach \".length,\n closeBraceIndex,\n trimmed.slice(\"@attach \".length),\n helperIndex,\n );\n }\n\n if (trimmed.startsWith(\"#key \")) {\n return makeMarkupCandidate(\n openBraceIndex + 1 + leadingWhitespaceLength + \"#key \".length,\n closeBraceIndex,\n trimmed.slice(\"#key \".length),\n helperIndex,\n );\n }\n\n if (\n trimmed.startsWith(\"/\") || trimmed.startsWith(\":then\") ||\n trimmed.startsWith(\":catch\") || trimmed === \":else\"\n ) {\n return undefined;\n }\n\n if (trimmed.startsWith(\"...\")) {\n return makeMarkupCandidate(\n openBraceIndex + 1 + leadingWhitespaceLength + \"...\".length,\n closeBraceIndex,\n trimmed.slice(\"...\".length),\n helperIndex,\n );\n }\n\n return makeMarkupCandidate(\n openBraceIndex + 1,\n closeBraceIndex,\n inner,\n helperIndex,\n );\n}\n\nfunction makeMarkupCandidate(\n start: number,\n end: number,\n expressionText: string,\n helperIndex: number,\n): MarkupCandidate {\n const placeholder = `${MARKUP_HELPER_PREFIX}Placeholder${helperIndex}`;\n\n return {\n expressionText,\n placeholder,\n start,\n end,\n };\n}\n\nfunction makeAstReplacement(\n candidate: MarkupCandidate,\n kind: \"plain\" | \"each\" | \"await\" | \"event\",\n filename: string,\n): Replacement {\n if (kind === \"event\") {\n return {\n start: candidate.start,\n end: candidate.end,\n text: transformEventExpression(candidate.expressionText.trim(), filename),\n };\n }\n\n const helperId = `${MARKUP_HELPER_PREFIX}${candidate.placeholder}`;\n const deps = collectFreeIdentifiers(candidate.expressionText, filename);\n const depsText = deps.length === 0 ? \"[]\" : `[${deps.join(\", \")}]`;\n const trimmedExpression = candidate.expressionText.trim();\n\n const replacementText = kind === \"await\"\n ? `${MARKUP_HELPER_PREFIX}Promise(\"${helperId}\", ${depsText}, function* () { return (${trimmedExpression}); })`\n : `${MARKUP_HELPER_PREFIX}Value(\"${helperId}\", ${depsText}, function* () { return (${trimmedExpression}); }, ${\n kind === \"each\" ? \"[]\" : \"undefined\"\n })`;\n\n return {\n start: candidate.start,\n end: candidate.end,\n text: replacementText,\n };\n}\n\nfunction visitFragment(\n fragment: AST.Fragment,\n candidatesByPlaceholder: ReadonlyMap<string, MarkupCandidate>,\n matchedPlaceholders: Set<string>,\n onReplacement: (\n candidate: MarkupCandidate,\n kind: \"plain\" | \"each\" | \"await\" | \"event\",\n ) => void,\n): void {\n for (const node of fragment.nodes) {\n visitNode(node, candidatesByPlaceholder, matchedPlaceholders, onReplacement);\n }\n}\n\nfunction visitNode(\n node: AST.Fragment[\"nodes\"][number],\n candidatesByPlaceholder: ReadonlyMap<string, MarkupCandidate>,\n matchedPlaceholders: Set<string>,\n onReplacement: (\n candidate: MarkupCandidate,\n kind: \"plain\" | \"each\" | \"await\" | \"event\",\n ) => void,\n): void {\n switch (node.type) {\n case \"ExpressionTag\":\n case \"HtmlTag\":\n case \"AttachTag\":\n emitReplacementForExpression(\n node.expression,\n \"plain\",\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n return;\n\n case \"ConstTag\":\n emitReplacementForExpression(\n node.declaration.declarations[0]?.init,\n \"plain\",\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n return;\n\n case \"IfBlock\":\n emitReplacementForExpression(\n node.test,\n \"plain\",\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n visitFragment(\n node.consequent,\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n if (node.alternate) {\n visitFragment(\n node.alternate,\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n }\n return;\n\n case \"EachBlock\":\n emitReplacementForExpression(\n node.expression,\n \"each\",\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n visitFragment(\n node.body,\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n if (node.fallback) {\n visitFragment(\n node.fallback,\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n }\n return;\n\n case \"AwaitBlock\":\n emitReplacementForExpression(\n node.expression,\n \"await\",\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n if (node.pending) {\n visitFragment(\n node.pending,\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n }\n if (node.then) {\n visitFragment(\n node.then,\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n }\n if (node.catch) {\n visitFragment(\n node.catch,\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n }\n return;\n\n case \"KeyBlock\":\n emitReplacementForExpression(\n node.expression,\n \"plain\",\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n visitFragment(\n node.fragment,\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n return;\n\n case \"RegularElement\":\n case \"Component\":\n case \"TitleElement\":\n case \"SlotElement\":\n case \"SvelteBody\":\n case \"SvelteBoundary\":\n case \"SvelteComponent\":\n case \"SvelteDocument\":\n case \"SvelteElement\":\n case \"SvelteFragment\":\n case \"SvelteHead\":\n case \"SvelteSelf\":\n case \"SvelteWindow\":\n for (const attribute of node.attributes) {\n visitAttribute(\n attribute,\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n }\n visitFragment(\n node.fragment,\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n return;\n\n default:\n return;\n }\n}\n\nfunction visitAttribute(\n attribute: AST.BaseElement[\"attributes\"][number],\n candidatesByPlaceholder: ReadonlyMap<string, MarkupCandidate>,\n matchedPlaceholders: Set<string>,\n onReplacement: (\n candidate: MarkupCandidate,\n kind: \"plain\" | \"each\" | \"await\" | \"event\",\n ) => void,\n): void {\n switch (attribute.type) {\n case \"Attribute\": {\n const kind = isEventAttribute(attribute.name) ? \"event\" : \"plain\";\n visitAttributeValue(\n attribute.value,\n kind,\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n return;\n }\n\n case \"OnDirective\":\n emitReplacementForExpression(\n attribute.expression,\n \"event\",\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n return;\n\n case \"SpreadAttribute\":\n case \"AnimateDirective\":\n case \"BindDirective\":\n case \"ClassDirective\":\n case \"TransitionDirective\":\n case \"UseDirective\":\n emitReplacementForExpression(\n attribute.expression,\n \"plain\",\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n return;\n\n case \"StyleDirective\":\n visitAttributeValue(\n attribute.value,\n \"plain\",\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n return;\n\n case \"LetDirective\":\n emitReplacementForExpression(\n attribute.expression,\n \"plain\",\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n return;\n\n default:\n return;\n }\n}\n\nfunction visitAttributeValue(\n value:\n | true\n | AST.ExpressionTag\n | Array<AST.Text | AST.ExpressionTag>,\n kind: \"plain\" | \"each\" | \"await\" | \"event\",\n candidatesByPlaceholder: ReadonlyMap<string, MarkupCandidate>,\n matchedPlaceholders: Set<string>,\n onReplacement: (\n candidate: MarkupCandidate,\n kind: \"plain\" | \"each\" | \"await\" | \"event\",\n ) => void,\n): void {\n if (value === true) {\n return;\n }\n\n if (Array.isArray(value)) {\n for (const part of value) {\n if (part.type === \"ExpressionTag\") {\n emitReplacementForExpression(\n part.expression,\n kind,\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n }\n }\n return;\n }\n\n emitReplacementForExpression(\n value.expression,\n kind,\n candidatesByPlaceholder,\n matchedPlaceholders,\n onReplacement,\n );\n}\n\nfunction emitReplacementForExpression(\n expression: { type: string; name?: string } | null | undefined,\n kind: \"plain\" | \"each\" | \"await\" | \"event\",\n candidatesByPlaceholder: ReadonlyMap<string, MarkupCandidate>,\n matchedPlaceholders: Set<string>,\n onReplacement: (\n candidate: MarkupCandidate,\n kind: \"plain\" | \"each\" | \"await\" | \"event\",\n ) => void,\n): void {\n if (!expression || expression.type !== \"Identifier\" || !expression.name) {\n return;\n }\n\n const candidate = candidatesByPlaceholder.get(expression.name);\n\n if (!candidate || matchedPlaceholders.has(candidate.placeholder)) {\n return;\n }\n\n matchedPlaceholders.add(candidate.placeholder);\n onReplacement(candidate, kind);\n}\n\nfunction findConstInitializerRange(\n declarationText: string,\n filename: string,\n): { start: number; end: number } | undefined {\n const sourceFile = ts.createSourceFile(\n filename,\n `const ${declarationText};`,\n ts.ScriptTarget.Latest,\n true,\n ts.ScriptKind.TS,\n );\n const statement = sourceFile.statements[0];\n\n if (!statement || !ts.isVariableStatement(statement)) {\n return undefined;\n }\n\n const declaration = statement.declarationList.declarations[0];\n\n if (!declaration?.initializer) {\n return undefined;\n }\n\n return {\n start: declaration.initializer.getStart(sourceFile) - \"const \".length,\n end: declaration.initializer.end - \"const \".length,\n };\n}\n\nfunction transformEventExpression(\n expressionText: string,\n filename: string,\n): string {\n const wrapped = parseWrappedExpression(expressionText, filename);\n const expression = unwrapParentheses(wrapped.expression);\n\n if (ts.isArrowFunction(expression)) {\n const signatureText = sliceWrappedNode(\n expressionText,\n wrapped,\n expression.getStart(wrapped.sourceFile),\n expression.equalsGreaterThanToken.end,\n );\n\n if (ts.isBlock(expression.body)) {\n return `${signatureText} ${\n makeInlineEventBlock(\n sliceWrappedNode(\n expressionText,\n wrapped,\n expression.body.getStart(wrapped.sourceFile) + 1,\n expression.body.end - 1,\n ),\n )\n }`;\n }\n\n return `${signatureText} ${\n makeInlineEventExpressionBody(\n sliceWrappedNode(\n expressionText,\n wrapped,\n expression.body.getStart(wrapped.sourceFile),\n expression.body.end,\n ),\n )\n }`;\n }\n\n if (ts.isFunctionExpression(expression)) {\n const signatureText = sliceWrappedNode(\n expressionText,\n wrapped,\n expression.getStart(wrapped.sourceFile),\n expression.body.getStart(wrapped.sourceFile),\n );\n const bodyText = sliceWrappedNode(\n expressionText,\n wrapped,\n expression.body.getStart(wrapped.sourceFile) + 1,\n expression.body.end - 1,\n );\n\n return `${signatureText}${makeInlineEventBlock(bodyText)}`;\n }\n\n return `() => ${makeInlineEventExpressionBody(expressionText)}`;\n}\n\nfunction makeInlineEventBlock(bodyText: string): string {\n const normalizedBody = bodyText.trim();\n\n if (normalizedBody.length === 0) {\n return `{ void ${MARKUP_HELPER_PREFIX}Run(function* () {}); }`;\n }\n\n return [\n \"{\",\n ` void ${MARKUP_HELPER_PREFIX}Run(function* () {`,\n indentBlock(normalizedBody, \" \"),\n \" });\",\n \"}\",\n ].join(\"\\n\");\n}\n\nfunction makeInlineEventExpressionBody(expressionText: string): string {\n return [\n \"{\",\n ` void ${MARKUP_HELPER_PREFIX}Run(function* () {`,\n ` return (${expressionText.trim()});`,\n \" });\",\n \"}\",\n ].join(\"\\n\");\n}\n\nfunction parseWrappedExpression(\n expressionText: string,\n filename: string,\n): WrappedExpression {\n const prefix = \"function* __svelteEffectRuntimeMarkupWrapper(){ return (\";\n const sourceFile = ts.createSourceFile(\n filename,\n `${prefix}${expressionText}); }`,\n ts.ScriptTarget.Latest,\n true,\n ts.ScriptKind.TS,\n );\n const functionDeclaration = sourceFile.statements[0];\n\n if (\n !functionDeclaration || !ts.isFunctionDeclaration(functionDeclaration) ||\n !functionDeclaration.body\n ) {\n throw new Error(\n `${filename}: could not parse markup Effect expression:\\n${expressionText}`,\n );\n }\n\n const returnStatement = functionDeclaration.body.statements[0];\n\n if (\n !returnStatement || !ts.isReturnStatement(returnStatement) ||\n !returnStatement.expression\n ) {\n throw new Error(\n `${filename}: could not locate markup Effect expression:\\n${expressionText}`,\n );\n }\n\n return {\n expression: returnStatement.expression,\n offset: prefix.length,\n sourceFile,\n };\n}\n\nfunction unwrapParentheses(expression: ts.Expression): ts.Expression {\n let current = expression;\n\n while (ts.isParenthesizedExpression(current)) {\n current = current.expression;\n }\n\n return current;\n}\n\nfunction sliceWrappedNode(\n expressionText: string,\n wrapped: WrappedExpression,\n start: number,\n end: number,\n): string {\n return expressionText.slice(start - wrapped.offset, end - wrapped.offset);\n}\n\nfunction collectFreeIdentifiers(\n expressionText: string,\n filename: string,\n): string[] {\n const wrapped = parseWrappedExpression(expressionText, filename);\n const identifiers: string[] = [];\n const seen = new Set<string>();\n const scopes: Array<Set<string>> = [new Set()];\n\n function isDeclaredLocally(identifier: string): boolean {\n return scopes.some((scope) => scope.has(identifier));\n }\n\n function visit(node: ts.Node): void {\n if (\n ts.isFunctionExpression(node) || ts.isArrowFunction(node) ||\n ts.isFunctionDeclaration(node)\n ) {\n if (!node.body) {\n return;\n }\n\n const nextScope = new Set<string>();\n\n if (node.name) {\n nextScope.add(node.name.text);\n }\n\n for (const parameter of node.parameters) {\n declareInto(nextScope, parameter.name);\n }\n\n scopes.unshift(nextScope);\n\n if (ts.isBlock(node.body)) {\n for (const statement of node.body.statements) {\n statement.forEachChild(visit);\n }\n } else {\n node.body.forEachChild(visit);\n }\n\n scopes.shift();\n return;\n }\n\n if (ts.isIdentifier(node)) {\n if (node.text === \"yield\" || node.text === \"undefined\") {\n return;\n }\n\n if (shouldSkipIdentifier(node)) {\n return;\n }\n\n if (!isDeclaredLocally(node.text) && !seen.has(node.text)) {\n seen.add(node.text);\n identifiers.push(node.text);\n }\n }\n\n if (ts.isVariableDeclaration(node)) {\n if (node.initializer) {\n node.initializer.forEachChild(visit);\n }\n return;\n }\n\n node.forEachChild(visit);\n }\n\n function declareInto(scope: Set<string>, name: ts.BindingName): void {\n if (ts.isIdentifier(name)) {\n scope.add(name.text);\n return;\n }\n\n for (const element of name.elements) {\n if (ts.isOmittedExpression(element)) {\n continue;\n }\n\n declareInto(scope, element.name);\n }\n }\n\n visit(unwrapParentheses(wrapped.expression));\n return identifiers;\n}\n\nfunction shouldSkipIdentifier(node: ts.Identifier): boolean {\n const parent = node.parent;\n\n return ts.isPropertyAccessExpression(parent) && parent.name === node ||\n ts.isPropertyAssignment(parent) && parent.name === node ||\n ts.isShorthandPropertyAssignment(parent) &&\n parent.objectAssignmentInitializer === node ||\n ts.isBindingElement(parent) && parent.propertyName === node ||\n ts.isImportSpecifier(parent) ||\n ts.isExportSpecifier(parent) ||\n ts.isLabeledStatement(parent) && parent.label === node;\n}\n\nfunction containsYieldStarText(text: string): boolean {\n return /\\byield\\s*\\*/.test(text);\n}\n\nfunction findExcludedRanges(content: string): ExcludedRange[] {\n const ranges: ExcludedRange[] = [];\n const patterns = [\n /<script\\b[\\s\\S]*?<\\/script\\s*>/gi,\n /<style\\b[\\s\\S]*?<\\/style\\s*>/gi,\n /<!--[\\s\\S]*?-->/g,\n ];\n\n for (const pattern of patterns) {\n for (const match of content.matchAll(pattern)) {\n if (match.index === undefined) {\n continue;\n }\n\n ranges.push({\n start: match.index,\n end: match.index + match[0].length,\n });\n }\n }\n\n return ranges.sort((left, right) => left.start - right.start);\n}\n\nfunction findExcludedRangeAt(\n ranges: ExcludedRange[],\n index: number,\n): ExcludedRange | undefined {\n return ranges.find((range) => range.start <= index && index < range.end);\n}\n\nfunction findClosingBrace(content: string, start: number): number {\n let braceDepth = 0;\n let bracketDepth = 0;\n let parenDepth = 0;\n let quote: \"'\" | '\"' | \"`\" | undefined;\n let templateBraceDepth = 0;\n\n for (let index = start; index < content.length; index += 1) {\n const character = content[index];\n const nextCharacter = content[index + 1];\n\n if (quote === \"'\") {\n if (character === \"\\\\\" && nextCharacter) {\n index += 1;\n continue;\n }\n\n if (character === \"'\") {\n quote = undefined;\n }\n\n continue;\n }\n\n if (quote === '\"') {\n if (character === \"\\\\\" && nextCharacter) {\n index += 1;\n continue;\n }\n\n if (character === '\"') {\n quote = undefined;\n }\n\n continue;\n }\n\n if (quote === \"`\") {\n if (character === \"\\\\\" && nextCharacter) {\n index += 1;\n continue;\n }\n\n if (character === \"$\" && nextCharacter === \"{\") {\n templateBraceDepth += 1;\n braceDepth += 1;\n index += 1;\n continue;\n }\n\n if (character === \"}\" && templateBraceDepth > 0) {\n templateBraceDepth -= 1;\n braceDepth -= 1;\n continue;\n }\n\n if (character === \"`\" && templateBraceDepth === 0) {\n quote = undefined;\n }\n\n continue;\n }\n\n if (character === \"'\" || character === '\"' || character === \"`\") {\n quote = character;\n continue;\n }\n\n if (character === \"/\" && nextCharacter === \"/\") {\n index += 2;\n\n while (index < content.length && content[index] !== \"\\n\") {\n index += 1;\n }\n\n continue;\n }\n\n if (character === \"/\" && nextCharacter === \"*\") {\n index += 2;\n\n while (\n index < content.length &&\n !(content[index] === \"*\" && content[index + 1] === \"/\")\n ) {\n index += 1;\n }\n\n index += 1;\n continue;\n }\n\n if (character === \"(\") {\n parenDepth += 1;\n continue;\n }\n\n if (character === \")\") {\n parenDepth -= 1;\n continue;\n }\n\n if (character === \"[\") {\n bracketDepth += 1;\n continue;\n }\n\n if (character === \"]\") {\n bracketDepth -= 1;\n continue;\n }\n\n if (character === \"{\") {\n braceDepth += 1;\n continue;\n }\n\n if (character === \"}\") {\n if (braceDepth === 0 && parenDepth === 0 && bracketDepth === 0) {\n return index;\n }\n\n braceDepth -= 1;\n }\n }\n\n return -1;\n}\n\nfunction findTopLevelKeyword(text: string, keyword: string): number {\n let braceDepth = 0;\n let bracketDepth = 0;\n let parenDepth = 0;\n let quote: \"'\" | '\"' | \"`\" | undefined;\n\n for (let index = 0; index <= text.length - keyword.length; index += 1) {\n const character = text[index];\n const nextCharacter = text[index + 1];\n\n if (quote) {\n if (character === \"\\\\\" && nextCharacter) {\n index += 1;\n continue;\n }\n\n if (character === quote) {\n quote = undefined;\n }\n\n continue;\n }\n\n if (character === \"'\" || character === '\"' || character === \"`\") {\n quote = character;\n continue;\n }\n\n if (character === \"(\") {\n parenDepth += 1;\n continue;\n }\n\n if (character === \")\") {\n parenDepth -= 1;\n continue;\n }\n\n if (character === \"[\") {\n bracketDepth += 1;\n continue;\n }\n\n if (character === \"]\") {\n bracketDepth -= 1;\n continue;\n }\n\n if (character === \"{\") {\n braceDepth += 1;\n continue;\n }\n\n if (character === \"}\") {\n braceDepth -= 1;\n continue;\n }\n\n if (\n braceDepth === 0 && bracketDepth === 0 && parenDepth === 0 &&\n text.startsWith(keyword, index)\n ) {\n return index;\n }\n }\n\n return -1;\n}\n\nfunction findAwaitBoundary(text: string): number {\n const thenIndex = findTopLevelKeyword(text, \" then \");\n const catchIndex = findTopLevelKeyword(text, \" catch \");\n\n if (thenIndex === -1) {\n return catchIndex;\n }\n\n if (catchIndex === -1) {\n return thenIndex;\n }\n\n return Math.min(thenIndex, catchIndex);\n}\n\n\nfunction isEventAttribute(name: string): boolean {\n return name.startsWith(\"on:\") ||\n /^on[a-z]/.test(name);\n}\n\nfunction injectMarkupHelpers(\n magicString: MagicString,\n content: string,\n options: TransformEffectMarkupOptions,\n): void {\n const helperBlock = makeMarkupHelperBlock(options);\n const scriptTagMatch = findInstanceScriptTag(content);\n\n if (!scriptTagMatch) {\n magicString.prepend(`<script>\\n${helperBlock}\\n</script>\\n\\n`);\n return;\n }\n\n magicString.appendLeft(scriptTagMatch.end, `\\n${helperBlock}\\n`);\n}\n\nfunction findInstanceScriptTag(content: string): ExcludedRange | undefined {\n const pattern = /<script\\b([^>]*)>([\\s\\S]*?)<\\/script\\s*>/gi;\n\n for (const match of content.matchAll(pattern)) {\n if (match.index === undefined) {\n continue;\n }\n\n const attributes = match[1] ?? \"\";\n\n if (\n /\\bcontext\\s*=\\s*[\"']module[\"']/.test(attributes) ||\n /\\bmodule\\b/.test(attributes)\n ) {\n continue;\n }\n\n const openTag = match[0].indexOf(\">\") + 1;\n\n return {\n start: match.index + openTag,\n end: match.index + match[0].length - \"</script>\".length,\n };\n }\n\n return undefined;\n}\n\nfunction makeMarkupHelperBlock(\n options: TransformEffectMarkupOptions,\n): string {\n const runtimeModuleId = options.runtimeModuleId ?? DEFAULT_RUNTIME_MODULE_ID;\n const effectModuleId = options.effectModuleId ?? DEFAULT_EFFECT_MODULE_ID;\n const svelteModuleId = options.svelteModuleId ?? DEFAULT_SVELTE_MODULE_ID;\n\n return [\n `import { Effect as ${MARKUP_HELPER_PREFIX}Effect } from \"${effectModuleId}\";`,\n `import { onDestroy as ${MARKUP_HELPER_PREFIX}OnDestroy } from \"${svelteModuleId}\";`,\n `import { getEffectRuntimeOrThrow as ${MARKUP_HELPER_PREFIX}GetRuntime, registerHotDispose as ${MARKUP_HELPER_PREFIX}RegisterHotDispose, runComponentEffect as ${MARKUP_HELPER_PREFIX}RunComponentEffect, runInlineEffect as ${MARKUP_HELPER_PREFIX}RunInlineEffect } from \"${runtimeModuleId}\";`,\n \"\",\n `const ${MARKUP_HELPER_PREFIX}Values = Object.create(null);`,\n `const ${MARKUP_HELPER_PREFIX}Promises = Object.create(null);`,\n `const ${MARKUP_HELPER_PREFIX}Cleanups = new Map();`,\n `const ${MARKUP_HELPER_PREFIX}ObjectIds = new WeakMap();`,\n `const ${MARKUP_HELPER_PREFIX}PendingStarts = new Set();`,\n `const ${MARKUP_HELPER_PREFIX}Runtime = typeof window === \"undefined\" ? undefined : ${MARKUP_HELPER_PREFIX}GetRuntime();`,\n `let ${MARKUP_HELPER_PREFIX}Version = $state(0);`,\n `let ${MARKUP_HELPER_PREFIX}NextObjectId = 1;`,\n \"\",\n `function ${MARKUP_HELPER_PREFIX}Hash(value) {`,\n ` if (value === null) {`,\n ` return \"null\";`,\n \" }\",\n \"\",\n ` if (value === undefined) {`,\n ` return \"undefined\";`,\n \" }\",\n \"\",\n ` const type = typeof value;`,\n \"\",\n ` if (type === \"string\") {`,\n ` return \\`string:\\${value}\\`;`,\n \" }\",\n \"\",\n ` if (type === \"number\") {`,\n ` return \\`number:\\${Object.is(value, -0) ? \"-0\" : String(value)}\\`;`,\n \" }\",\n \"\",\n ` if (type === \"bigint\") {`,\n ` return \\`bigint:\\${value.toString()}\\`;`,\n \" }\",\n \"\",\n ` if (type === \"boolean\") {`,\n ` return value ? \"boolean:true\" : \"boolean:false\";`,\n \" }\",\n \"\",\n ` if (type === \"symbol\") {`,\n ` return \\`symbol:\\${String(value)}\\`;`,\n \" }\",\n \"\",\n ` let objectId = ${MARKUP_HELPER_PREFIX}ObjectIds.get(value);`,\n \"\",\n ` if (objectId === undefined) {`,\n ` objectId = ${MARKUP_HELPER_PREFIX}NextObjectId;`,\n ` ${MARKUP_HELPER_PREFIX}NextObjectId += 1;`,\n ` ${MARKUP_HELPER_PREFIX}ObjectIds.set(value, objectId);`,\n \" }\",\n \"\",\n ` return \\`object:\\${objectId}\\`;`,\n \"}\",\n \"\",\n `function ${MARKUP_HELPER_PREFIX}DepsKey(deps) {`,\n ` return deps.map(${MARKUP_HELPER_PREFIX}Hash).join(\"|\");`,\n \"}\",\n \"\",\n `function ${MARKUP_HELPER_PREFIX}Value(id, deps, factory, fallback) {`,\n ` if (typeof window === \"undefined\") {`,\n ` return fallback;`,\n \" }\",\n \"\",\n ` ${MARKUP_HELPER_PREFIX}Version;`,\n \"\",\n ` const cacheKey = \\`\\${id}::\\${${MARKUP_HELPER_PREFIX}DepsKey(deps)}\\`;`,\n \"\",\n ` if (!${MARKUP_HELPER_PREFIX}Cleanups.has(cacheKey)) {`,\n ` if (!${MARKUP_HELPER_PREFIX}PendingStarts.has(cacheKey)) {`,\n ` ${MARKUP_HELPER_PREFIX}PendingStarts.add(cacheKey);`,\n ` queueMicrotask(() => {`,\n ` ${MARKUP_HELPER_PREFIX}PendingStarts.delete(cacheKey);`,\n \"\",\n ` if (${MARKUP_HELPER_PREFIX}Cleanups.has(cacheKey)) {`,\n \" return;\",\n \" }\",\n \"\",\n ` ${MARKUP_HELPER_PREFIX}Cleanups.set(`,\n \" cacheKey,\",\n ` ${MARKUP_HELPER_PREFIX}RunComponentEffect(`,\n ` ${MARKUP_HELPER_PREFIX}Runtime,`,\n ` ${MARKUP_HELPER_PREFIX}Effect.gen(function* () {`,\n ` ${MARKUP_HELPER_PREFIX}Values[cacheKey] = yield* ${MARKUP_HELPER_PREFIX}Effect.gen(factory);`,\n ` ${MARKUP_HELPER_PREFIX}Version += 1;`,\n \" }),\",\n \" ),\",\n \" );\",\n \" });\",\n \" }\",\n \" }\",\n \"\",\n ` return Object.prototype.hasOwnProperty.call(${MARKUP_HELPER_PREFIX}Values, cacheKey)`,\n ` ? ${MARKUP_HELPER_PREFIX}Values[cacheKey]`,\n \" : fallback;\",\n \"}\",\n \"\",\n `function ${MARKUP_HELPER_PREFIX}Promise(id, deps, factory) {`,\n ` if (typeof window === \"undefined\") {`,\n ` return Promise.resolve(undefined);`,\n \" }\",\n \"\",\n ` const cacheKey = \\`\\${id}::\\${${MARKUP_HELPER_PREFIX}DepsKey(deps)}\\`;`,\n \"\",\n ` if (!Object.prototype.hasOwnProperty.call(${MARKUP_HELPER_PREFIX}Promises, cacheKey)) {`,\n ` ${MARKUP_HELPER_PREFIX}Promises[cacheKey] = new Promise((resolve, reject) => {`,\n ` queueMicrotask(() => {`,\n ` ${MARKUP_HELPER_PREFIX}RunInlineEffect(`,\n ` ${MARKUP_HELPER_PREFIX}Runtime,`,\n ` ${MARKUP_HELPER_PREFIX}Effect.gen(factory),`,\n ` ).then(resolve, reject);`,\n \" });\",\n ` }).catch((error) => {`,\n ` delete ${MARKUP_HELPER_PREFIX}Promises[cacheKey];`,\n \" throw error;\",\n \" });\",\n \" }\",\n \"\",\n ` return ${MARKUP_HELPER_PREFIX}Promises[cacheKey];`,\n \"}\",\n \"\",\n `function ${MARKUP_HELPER_PREFIX}Run(factory) {`,\n ` if (typeof window === \"undefined\") {`,\n \" return Promise.resolve(undefined);\",\n \" }\",\n \"\",\n ` return ${MARKUP_HELPER_PREFIX}RunInlineEffect(`,\n ` ${MARKUP_HELPER_PREFIX}Runtime,`,\n ` ${MARKUP_HELPER_PREFIX}Effect.gen(factory),`,\n \" );\",\n \"}\",\n \"\",\n `function ${MARKUP_HELPER_PREFIX}CleanupAll() {`,\n ` for (const cleanup of ${MARKUP_HELPER_PREFIX}Cleanups.values()) {`,\n \" cleanup();\",\n \" }\",\n \"\",\n ` ${MARKUP_HELPER_PREFIX}Cleanups.clear();`,\n \"}\",\n \"\",\n `${MARKUP_HELPER_PREFIX}OnDestroy(${MARKUP_HELPER_PREFIX}CleanupAll);`,\n `${MARKUP_HELPER_PREFIX}RegisterHotDispose(import.meta, ${MARKUP_HELPER_PREFIX}CleanupAll);`,\n ].join(\"\\n\");\n}\n\nfunction indentBlock(text: string, indent: string): string {\n return text.split(\"\\n\").map((line) =>\n line.length > 0 ? `${indent}${line}` : line\n ).join(\"\\n\");\n}\n"],"mappings":"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D;AAEH;EAEF,KAAK;AACH,gCACE,KAAK,YACL,QACA,yBACA,qBACA,cACD;AACD,iBACE,KAAK,MACL,yBACA,qBACA,cACD;AACD,OAAI,KAAK,SACP,eACE,KAAK,UACL,yBACA,qBACA,cACD;AAEH;EAEF,KAAK;AACH,gCACE,KAAK,YACL,SACA,yBACA,qBACA,cACD;AACD,OAAI,KAAK,QACP,eACE,KAAK,SACL,yBACA,qBACA,cACD;AAEH,OAAI,KAAK,KACP,eACE,KAAK,MACL,yBACA,qBACA,cACD;AAEH,OAAI,KAAK,MACP,eACE,KAAK,OACL,yBACA,qBACA,cACD;AAEH;EAEF,KAAK;AACH,gCACE,KAAK,YACL,SACA,yBACA,qBACA,cACD;AACD,iBACE,KAAK,UACL,yBACA,qBACA,cACD;AACD;EAEF,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;AACH,QAAK,MAAM,aAAa,KAAK,WAC3B,gBACE,WACA,yBACA,qBACA,cACD;AAEH,iBACE,KAAK,UACL,yBACA,qBACA,cACD;AACD;EAEF,QACE;;;AAIN,SAAS,eACP,WACA,yBACA,qBACA,eAIM;AACN,SAAQ,UAAU,MAAlB;EACE,KAAK,aAAa;GAChB,MAAM,OAAO,iBAAiB,UAAU,KAAK,GAAG,UAAU;AAC1D,uBACE,UAAU,OACV,MACA,yBACA,qBACA,cACD;AACD;;EAGF,KAAK;AACH,gCACE,UAAU,YACV,SACA,yBACA,qBACA,cACD;AACD;EAEF,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;EACL,KAAK;AACH,gCACE,UAAU,YACV,SACA,yBACA,qBACA,cACD;AACD;EAEF,KAAK;AACH,uBACE,UAAU,OACV,SACA,yBACA,qBACA,cACD;AACD;EAEF,KAAK;AACH,gCACE,UAAU,YACV,SACA,yBACA,qBACA,cACD;AACD;EAEF,QACE;;;AAIN,SAAS,oBACP,OAIA,MACA,yBACA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"}
|