@reckona/mreact-compiler 0.0.70 → 0.0.71
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/emit-client.js +7 -6
- package/dist/emit-client.js.map +1 -1
- package/dist/emit-compat.js +6 -3
- package/dist/emit-compat.js.map +1 -1
- package/dist/emit-server-stream.js +5 -1
- package/dist/emit-server-stream.js.map +1 -1
- package/dist/emit-server.js +11 -7
- package/dist/emit-server.js.map +1 -1
- package/dist/ir.d.ts +1 -0
- package/dist/ir.d.ts.map +1 -1
- package/dist/ir.js.map +1 -1
- package/dist/oxc-child-analysis.js +2 -0
- package/dist/oxc-child-analysis.js.map +1 -1
- package/dist/oxc-runtime-emit.d.ts.map +1 -1
- package/dist/oxc-runtime-emit.js +7 -2
- package/dist/oxc-runtime-emit.js.map +1 -1
- package/package.json +2 -2
- package/src/emit-client.ts +8 -8
- package/src/emit-compat.ts +7 -4
- package/src/emit-server-stream.ts +7 -1
- package/src/emit-server.ts +14 -9
- package/src/ir.ts +1 -0
- package/src/oxc-child-analysis.ts +2 -0
- package/src/oxc-runtime-emit.ts +8 -4
package/dist/emit-server.js
CHANGED
|
@@ -210,9 +210,7 @@ function collectHtmlStatements(node, outVar, escapeHelperName, escapeBatchHelper
|
|
|
210
210
|
if (isAsync) {
|
|
211
211
|
// Parallel async path keeps the existing renderer + Promise.all + join
|
|
212
212
|
// form to preserve concurrent resolution semantics.
|
|
213
|
-
const parameters = node
|
|
214
|
-
? node.itemName
|
|
215
|
-
: `${node.itemName}, ${node.indexName}`;
|
|
213
|
+
const parameters = emitListParameters(node);
|
|
216
214
|
const renderer = emitListRenderer(node, parameters, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName);
|
|
217
215
|
const mapped = `(${node.itemsCode}).map(${renderer})`;
|
|
218
216
|
return [`${outVar} += (await Promise.all(${mapped})).join("");`];
|
|
@@ -221,6 +219,7 @@ function collectHtmlStatements(node, outVar, escapeHelperName, escapeBatchHelper
|
|
|
221
219
|
// No inner IIFE wrapper and no intermediate string concat per iteration.
|
|
222
220
|
const itemBinding = `const ${node.itemName} = _arr[_i];`;
|
|
223
221
|
const indexBinding = node.indexName === undefined ? undefined : `const ${node.indexName} = _i;`;
|
|
222
|
+
const arrayBinding = node.arrayName === undefined ? undefined : `const ${node.arrayName} = _arr;`;
|
|
224
223
|
const bodyStatements = node.bodyStatements ?? [];
|
|
225
224
|
const childStatements = node.children.flatMap((child) => collectHtmlStatements(child, outVar, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName));
|
|
226
225
|
return [
|
|
@@ -229,6 +228,7 @@ function collectHtmlStatements(node, outVar, escapeHelperName, escapeBatchHelper
|
|
|
229
228
|
` for (let _i = 0, _len = _arr.length; _i < _len; _i++) {`,
|
|
230
229
|
` ${itemBinding}`,
|
|
231
230
|
...(indexBinding === undefined ? [] : [` ${indexBinding}`]),
|
|
231
|
+
...(arrayBinding === undefined ? [] : [` ${arrayBinding}`]),
|
|
232
232
|
...bodyStatements.map((statement) => ` ${statement}`),
|
|
233
233
|
...childStatements.map((statement) => ` ${statement}`),
|
|
234
234
|
` }`,
|
|
@@ -355,9 +355,7 @@ function collectHtmlParts(node, escapeHelperName, escapeBatchHelperName, asyncCo
|
|
|
355
355
|
// Async lists rely on Promise.all() for parallel resolution; the
|
|
356
356
|
// callback allocation is amortized across `await` latency, so we keep
|
|
357
357
|
// the `.map().then(...).join("")` form.
|
|
358
|
-
const parameters = node
|
|
359
|
-
? node.itemName
|
|
360
|
-
: `${node.itemName}, ${node.indexName}`;
|
|
358
|
+
const parameters = emitListParameters(node);
|
|
361
359
|
const renderer = emitListRenderer(node, parameters, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName);
|
|
362
360
|
const mapped = `(${node.itemsCode}).map(${renderer})`;
|
|
363
361
|
return [`(await Promise.all(${mapped})).join("")`];
|
|
@@ -672,10 +670,11 @@ function emitSyncListIife(node, escapeHelperName, escapeBatchHelperName, asyncCo
|
|
|
672
670
|
const valueExpression = emitHtmlExpressionFromChildren(node.children, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName);
|
|
673
671
|
const itemBinding = `const ${node.itemName} = _arr[_i];`;
|
|
674
672
|
const indexBinding = node.indexName === undefined ? "" : ` const ${node.indexName} = _i;`;
|
|
673
|
+
const arrayBinding = node.arrayName === undefined ? "" : ` const ${node.arrayName} = _arr;`;
|
|
675
674
|
const bodyStatements = node.bodyStatements === undefined || node.bodyStatements.length === 0
|
|
676
675
|
? ""
|
|
677
676
|
: ` ${node.bodyStatements.join(" ")}`;
|
|
678
|
-
return `(() => { let _o = ""; const _arr = (${node.itemsCode}); for (let _i = 0, _len = _arr.length; _i < _len; _i++) { ${itemBinding}${indexBinding}${bodyStatements} _o += ${valueExpression}; } return _o; })()`;
|
|
677
|
+
return `(() => { let _o = ""; const _arr = (${node.itemsCode}); for (let _i = 0, _len = _arr.length; _i < _len; _i++) { ${itemBinding}${indexBinding}${arrayBinding}${bodyStatements} _o += ${valueExpression}; } return _o; })()`;
|
|
679
678
|
}
|
|
680
679
|
function emitListRenderer(node, parameters, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName) {
|
|
681
680
|
const valueExpression = emitHtmlExpressionFromChildren(node.children, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName);
|
|
@@ -687,6 +686,11 @@ function emitListRenderer(node, parameters, escapeHelperName, escapeBatchHelperN
|
|
|
687
686
|
}
|
|
688
687
|
return `${asyncKeyword}(${parameters}) => {\n${node.bodyStatements.map((statement) => ` ${statement}`).join("\n")}\n return ${valueExpression};\n }`;
|
|
689
688
|
}
|
|
689
|
+
function emitListParameters(node) {
|
|
690
|
+
return [node.itemName, node.indexName, node.arrayName]
|
|
691
|
+
.filter((name) => name !== undefined)
|
|
692
|
+
.join(", ");
|
|
693
|
+
}
|
|
690
694
|
function emitPropsObject(props, children = [], escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName) {
|
|
691
695
|
const entries = props.map((prop) => {
|
|
692
696
|
if (prop.kind === "spread-prop") {
|
package/dist/emit-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit-server.js","sourceRoot":"","sources":["../src/emit-server.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n AttributeIr,\n ComponentPropIr,\n ComponentIr,\n JsxNodeIr,\n ModuleIr,\n} from \"./ir.js\";\nimport type { RuntimeImport, ServerEscapeOptions } from \"./types.js\";\nimport { emitEscapeHtmlHelper } from \"./emit-escape-helper.js\";\nimport { escapeHtmlAttribute as escapeHtml } from \"@reckona/mreact-shared/html-escape\";\nimport {\n htmlAttributeName,\n isDangerousHtmlAttribute,\n isStaticUrlValueUnsafe,\n isUrlAttribute,\n parseStaticStyleObjectLiteral,\n parseStyleLiteralValue,\n simpleSideEffectFreeExpression,\n} from \"./emit-server-shared.js\";\nimport { oxcServerStringReactNodeRenderHelperPlaceholder } from \"./oxc-runtime-emit.js\";\n\nexport interface EmitResult {\n code: string;\n imports: RuntimeImport[];\n}\n\nexport interface EmitServerOptions {\n dynamicAttributes?: \"drop\" | \"emit\";\n escape?: ServerEscapeOptions | undefined;\n serverHydration?: boolean;\n}\n\n// Module-local handle to the URL-safety helper name for the current emit\n// call. Used by deeply-nested attribute emitters to avoid threading the\n// name through every signature. Reset at the top of `emitServer`.\nlet currentUrlSafeHelperName: string = \"_urlAttrSafe\";\nlet currentClientBoundaryHelperName: string | undefined;\nlet currentSpreadAttributesHelperName: string = \"_renderSpreadAttributes\";\n\nexport function emitServer(\n ir: ModuleIr,\n options: EmitServerOptions = {},\n): EmitResult {\n const escapeHelperName = allocateEscapeHelperName(ir);\n const escapeBatchHelperName = options.escape === undefined\n ? undefined\n : allocateHelperName(ir, \"_escapeHtmlBatch\");\n const contextProviderHelperName = usesContextProvider(ir)\n ? allocateHelperName(ir, \"_renderContextProviderToString\")\n : undefined;\n const contextConsumerHelperName = usesContextConsumer(ir)\n ? allocateHelperName(ir, \"_renderContextConsumerToString\")\n : undefined;\n const reactNodeRenderHelperName = usesReactNodeRender(ir)\n ? allocateHelperName(ir, \"_renderReactNodeToString\")\n : undefined;\n const clientBoundaryHelperName = usesClientBoundary(ir)\n ? allocateHelperName(ir, \"_renderClientBoundary\")\n : undefined;\n const spreadAttributesHelperName = allocateHelperName(ir, \"_renderSpreadAttributes\");\n const outAccumulatorName = allocateHelperName(ir, \"_out\");\n const urlSafeHelperName = allocateHelperName(ir, \"_urlAttrSafe\");\n currentUrlSafeHelperName = urlSafeHelperName;\n currentClientBoundaryHelperName = clientBoundaryHelperName;\n currentSpreadAttributesHelperName = spreadAttributesHelperName;\n const helper = emitEscapeHtmlHelper(escapeHelperName);\n // Inline URL-scheme guard mirroring packages/server/src/url-safety.ts.\n // Returns the original value when safe to emit and undefined when the\n // attribute should be dropped. Inlined so compiler output stays free\n // of cross-package runtime imports.\n // Mirrors packages/server/src/url-safety.ts. Issue 078: in-scheme\n // tab/CR/LF must be stripped anywhere in the value, not just at the\n // start, to match the browser's URL parser.\n const urlSafeHelper = [\n `function ${urlSafeHelperName}(name, value) {`,\n ` if (typeof value !== \"string\") return value;`,\n ` const _canonical = value`,\n ` .replace(/^[\\\\x00-\\\\x20]+/u, \"\")`,\n ` .replace(/[\\\\t\\\\r\\\\n]/g, \"\");`,\n ` const _match = /^([a-zA-Z][a-zA-Z0-9+.-]*):/.exec(_canonical);`,\n ` if (_match === null) return value;`,\n ` const _scheme = _match[1].toLowerCase();`,\n ` if (_scheme !== \"javascript\" && _scheme !== \"vbscript\" && _scheme !== \"livescript\" && _scheme !== \"mhtml\" && _scheme !== \"file\" && _scheme !== \"data\") return value;`,\n ` if (_scheme === \"data\" && (name === \"src\" || name === \"poster\") && /^data:image\\\\/(?!svg\\\\+xml(?:[;,]|$))/i.test(_canonical)) return value;`,\n ` return undefined;`,\n `}`,\n ].join(\"\\n\");\n const asyncComponentNames = collectAsyncServerComponentNames(ir.components);\n const components = ir.components\n .map((component) =>\n emitComponent(\n component,\n escapeHelperName,\n escapeBatchHelperName,\n outAccumulatorName,\n options,\n asyncComponentNames,\n options.dynamicAttributes ?? \"emit\",\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\n )\n .join(\"\\n\\n\");\n // Tree-shake the URL-safety helper when it is not referenced by any\n // component output. Same shape as the existing escapeImport check.\n const needsSpreadAttributesHelper = components.includes(spreadAttributesHelperName);\n const urlSafeBlock =\n components.includes(urlSafeHelperName) || needsSpreadAttributesHelper ? urlSafeHelper : \"\";\n const clientBoundaryBlock =\n clientBoundaryHelperName === undefined || !components.includes(clientBoundaryHelperName)\n ? \"\"\n : emitClientBoundaryHelper(clientBoundaryHelperName);\n const spreadAttributesBlock = needsSpreadAttributesHelper\n ? emitSpreadAttributesHelper(spreadAttributesHelperName, escapeHelperName, urlSafeHelperName)\n : \"\";\n // Emit batch escape import only when the helper is actually referenced\n // by the generated component code (issue 048: dead-import elimination).\n // Helper names are uniquely allocated, so a literal substring check is\n // both correct and inexpensive.\n const escapeImport =\n options.escape === undefined ||\n escapeBatchHelperName === undefined ||\n !components.includes(escapeBatchHelperName)\n ? \"\"\n : `import { ${options.escape.batchImportName} as ${escapeBatchHelperName} } from ${stringLiteral(options.escape.batchImportSource)};`;\n const userImports = emitUserImports(ir);\n const contextImport = emitContextImport(\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n const moduleStatements = emitModuleStatements(ir);\n\n return {\n code: `${[userImports, escapeImport, contextImport, moduleStatements, helper, urlSafeBlock, clientBoundaryBlock, spreadAttributesBlock].filter(Boolean).join(\"\\n\\n\")}\\n\\n${components}\\n`,\n imports: collectContextImports(\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\n };\n}\n\nfunction emitContextImport(\n contextProviderHelperName: string | undefined,\n contextConsumerHelperName: string | undefined,\n reactNodeRenderHelperName: string | undefined,\n): string {\n const specifiers = [\n reactNodeRenderHelperName === undefined\n ? undefined\n : `renderToString as ${reactNodeRenderHelperName}`,\n contextProviderHelperName === undefined\n ? undefined\n : `renderContextProviderToString as ${contextProviderHelperName}`,\n contextConsumerHelperName === undefined\n ? undefined\n : `renderContextConsumerToString as ${contextConsumerHelperName}`,\n ].filter((specifier): specifier is string => specifier !== undefined);\n\n return specifiers.length === 0\n ? \"\"\n : `import { ${specifiers.join(\", \")} } from \"@reckona/mreact-compat\";`;\n}\n\nfunction collectContextImports(\n contextProviderHelperName: string | undefined,\n contextConsumerHelperName: string | undefined,\n reactNodeRenderHelperName?: string,\n): RuntimeImport[] {\n const specifiers = [\n reactNodeRenderHelperName === undefined ? undefined : \"renderToString\",\n contextProviderHelperName === undefined\n ? undefined\n : \"renderContextProviderToString\",\n contextConsumerHelperName === undefined\n ? undefined\n : \"renderContextConsumerToString\",\n ].filter((specifier): specifier is string => specifier !== undefined);\n\n return specifiers.length === 0\n ? []\n : [{ source: \"@reckona/mreact-compat\", specifiers }];\n}\n\nfunction emitUserImports(ir: ModuleIr): string {\n return ir.userImports.join(\"\\n\");\n}\n\nfunction emitModuleStatements(ir: ModuleIr): string {\n return ir.moduleStatements.join(\"\\n\");\n}\n\nfunction emitComponent(\n component: ComponentIr,\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n outAccumulatorName: string,\n options: EmitServerOptions,\n asyncComponentNames: ReadonlySet<string>,\n dynamicAttributes: \"drop\" | \"emit\",\n contextProviderHelperName?: string,\n contextConsumerHelperName?: string,\n reactNodeRenderHelperName?: string,\n): string {\n const body = component.bodyStatements.map((statement) =>\n ` ${replaceOxcServerStringReactNodeRenderHelper(statement, reactNodeRenderHelperName)}`,\n );\n const parameters = component.parameters.join(\", \");\n const htmlStatements = collectHtmlStatements(\n component.root,\n outAccumulatorName,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n\n const markerStart = stringLiteral(`<!--mreact-h:start:${encodeURIComponent(component.name)}-->`);\n const markerEnd = stringLiteral(`<!--mreact-h:end:${encodeURIComponent(component.name)}-->`);\n\n const hydrationOpenStatements =\n options.serverHydration === true ? [` ${outAccumulatorName} += ${markerStart};`] : [];\n const hydrationCloseStatements =\n options.serverHydration === true ? [` ${outAccumulatorName} += ${markerEnd};`] : [];\n\n const functionKeyword = `${component.exportDefault === true ? \"export default \" : component.exported === false ? \"\" : \"export \"}${\n asyncComponentNames.has(component.name) ? \"async \" : \"\"\n }function`;\n\n return [\n `${functionKeyword} ${component.name}(${parameters}) {`,\n ...body,\n ` let ${outAccumulatorName} = \"\";`,\n ...hydrationOpenStatements,\n ...htmlStatements.map((statement) => ` ${statement}`),\n ...hydrationCloseStatements,\n ` return ${outAccumulatorName};`,\n `}`,\n ].join(\"\\n\");\n}\n\nfunction emitHtmlExpression(\n node: JsxNodeIr,\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n asyncComponentNames: ReadonlySet<string>,\n dynamicAttributes: \"drop\" | \"emit\",\n contextProviderHelperName?: string,\n contextConsumerHelperName?: string,\n reactNodeRenderHelperName?: string,\n): string {\n const parts = collectHtmlParts(\n node,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n\n if (parts.length === 0) {\n return \"\\\"\\\"\";\n }\n\n return parts.join(\" + \");\n}\n\n/**\n * Statement-list IR walker (issue 046 followup). Produces a sequence of\n * statements that each append to a shared accumulator variable instead of\n * a single concat expression. Used at the top of component bodies; sub\n * callbacks (`renderContextProviderToString`, async list renderers, etc.)\n * still use the expression form via `emitHtmlExpression`.\n *\n * The benefits over expression mode:\n * - intermediate string allocations from `+ +` chains disappear\n * - conditional branches lower to `if/else` (no ternary expression spaghetti)\n * - sync list rendering inlines the for-loop append without an IIFE wrapper\n * - debugger / source maps step naturally over the generated statements\n */\nfunction collectHtmlStatements(\n node: JsxNodeIr,\n outVar: string,\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n asyncComponentNames: ReadonlySet<string>,\n dynamicAttributes: \"drop\" | \"emit\",\n contextProviderHelperName?: string,\n contextConsumerHelperName?: string,\n reactNodeRenderHelperName?: string,\n selectedValueCode?: string,\n): string[] {\n if (node.kind === \"text\") {\n const literal = escapeHtml(node.value);\n if (literal === \"\") {\n return [];\n }\n return [`${outVar} += ${stringLiteral(literal)};`];\n }\n\n if (node.kind === \"expr\") {\n if (node.renderMode === \"html\") {\n return [`${outVar} += ${rawHtmlExpression(node.code)};`];\n }\n\n if (node.renderMode === \"react-node\" && reactNodeRenderHelperName !== undefined) {\n return [`${outVar} += ${reactNodeRenderHelperName}(() => (${node.code}));`];\n }\n\n return [`${outVar} += ${escapeHelperName}(${node.code});`];\n }\n\n if (node.kind === \"conditional\") {\n const whenTrueStatements = node.whenTrue.flatMap((child) =>\n collectHtmlStatements(\n child,\n outVar,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\n );\n const whenFalseStatements = node.whenFalse.flatMap((child) =>\n collectHtmlStatements(\n child,\n outVar,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\n );\n\n if (whenTrueStatements.length === 0 && whenFalseStatements.length === 0) {\n return [];\n }\n\n if (whenFalseStatements.length === 0) {\n return [\n `if (${node.conditionCode}) {`,\n ...whenTrueStatements.map((statement) => ` ${statement}`),\n `}`,\n ];\n }\n\n if (whenTrueStatements.length === 0) {\n return [\n `if (!(${node.conditionCode})) {`,\n ...whenFalseStatements.map((statement) => ` ${statement}`),\n `}`,\n ];\n }\n\n return [\n `if (${node.conditionCode}) {`,\n ...whenTrueStatements.map((statement) => ` ${statement}`),\n `} else {`,\n ...whenFalseStatements.map((statement) => ` ${statement}`),\n `}`,\n ];\n }\n\n if (node.kind === \"list\") {\n const isAsync = containsAsyncServerOperationInChildren(\n node.children,\n asyncComponentNames,\n );\n\n if (isAsync) {\n // Parallel async path keeps the existing renderer + Promise.all + join\n // form to preserve concurrent resolution semantics.\n const parameters =\n node.indexName === undefined\n ? node.itemName\n : `${node.itemName}, ${node.indexName}`;\n const renderer = emitListRenderer(\n node,\n parameters,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n const mapped = `(${node.itemsCode}).map(${renderer})`;\n return [`${outVar} += (await Promise.all(${mapped})).join(\"\");`];\n }\n\n // Sync list — inline for-loop appending to the caller's accumulator.\n // No inner IIFE wrapper and no intermediate string concat per iteration.\n const itemBinding = `const ${node.itemName} = _arr[_i];`;\n const indexBinding =\n node.indexName === undefined ? undefined : `const ${node.indexName} = _i;`;\n const bodyStatements = node.bodyStatements ?? [];\n const childStatements = node.children.flatMap((child) =>\n collectHtmlStatements(\n child,\n outVar,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\n );\n\n return [\n `{`,\n ` const _arr = (${node.itemsCode});`,\n ` for (let _i = 0, _len = _arr.length; _i < _len; _i++) {`,\n ` ${itemBinding}`,\n ...(indexBinding === undefined ? [] : [` ${indexBinding}`]),\n ...bodyStatements.map((statement) => ` ${statement}`),\n ...childStatements.map((statement) => ` ${statement}`),\n ` }`,\n `}`,\n ];\n }\n\n if (node.kind === \"fragment\") {\n return node.children.flatMap((child) =>\n collectHtmlStatements(\n child,\n outVar,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\n );\n }\n\n if (node.kind === \"component\") {\n if (node.name === \"Suspense\") {\n return [\n `${outVar} += \"<!--$-->\";`,\n ...node.children.flatMap((child) =>\n collectHtmlStatements(\n child,\n outVar,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\n ),\n `${outVar} += \"<!--/$-->\";`,\n ];\n }\n\n if (contextProviderHelperName !== undefined && node.name.endsWith(\".Provider\")) {\n // Provider helper takes a string-returning callback. Use the\n // expression form inside the callback to preserve the existing\n // helper contract.\n const valueCode = findComponentPropCode(node.props, \"value\") ?? \"undefined\";\n return [\n `${outVar} += ${contextProviderHelperName}(${node.name}, ${valueCode}, () => ${emitHtmlExpressionFromChildren(node.children, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName)});`,\n ];\n }\n\n if (contextConsumerHelperName !== undefined && node.name.endsWith(\".Consumer\")) {\n const renderProp = findComponentRenderProp(node.props, \"children\");\n\n if (renderProp !== undefined) {\n const valueName = renderProp.valueName ?? \"_value\";\n return [\n `${outVar} += ${contextConsumerHelperName}(${node.name}, (${valueName}) => ${emitHtmlExpressionFromChildren(renderProp.children, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName)});`,\n ];\n }\n }\n\n if (isClientBoundaryPlaceholder(node)) {\n const helperName = currentClientBoundaryHelperName;\n if (helperName !== undefined) {\n return [\n `${outVar} += ${helperName}(${stringLiteral(node.name)}, ${emitPropsObject(\n node.props,\n node.children,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n )});`,\n ];\n }\n\n return [`${outVar} += ${stringLiteral(clientBoundaryPlaceholder(node))};`];\n }\n\n if (node.runtime === \"compat\" && reactNodeRenderHelperName !== undefined) {\n return [\n `${outVar} += ${reactNodeRenderHelperName}(${node.name}, ${emitPropsObject(\n node.props,\n node.children,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n )});`,\n ];\n }\n\n return [\n `${outVar} += ${emitComponentCallExpression(\n node.name,\n emitPropsObject(\n node.props,\n node.children,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\n asyncComponentNames,\n )};`,\n ];\n }\n\n if (node.kind === \"async-boundary\") {\n return [];\n }\n\n // element\n const statements: string[] = [];\n if (node.tagName === \"textarea\") {\n const attributeScan = scanElementAttributes(node.tagName, node.attributes);\n statements.push(`${outVar} += ${stringLiteral(\"<textarea\")};`);\n for (const attributePart of collectElementAttributeParts(\n node.tagName,\n node.attributes,\n escapeHelperName,\n escapeBatchHelperName,\n dynamicAttributes,\n attributeScan,\n )) {\n statements.push(`${outVar} += ${attributePart};`);\n }\n statements.push(`${outVar} += \">\";`);\n for (const valuePart of collectTextareaValueParts(\n node,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n attributeScan,\n )) {\n statements.push(`${outVar} += ${valuePart};`);\n }\n statements.push(`${outVar} += \"</textarea>\";`);\n return statements;\n }\n\n statements.push(`${outVar} += ${stringLiteral(`<${node.tagName}`)};`);\n const attributeScan = scanElementAttributes(node.tagName, node.attributes);\n\n for (const attributePart of collectElementAttributeParts(\n node.tagName,\n node.attributes,\n escapeHelperName,\n escapeBatchHelperName,\n dynamicAttributes,\n attributeScan,\n )) {\n statements.push(`${outVar} += ${attributePart};`);\n }\n const selectedAttributePart = collectOptionSelectedAttributePart(node, selectedValueCode);\n if (selectedAttributePart !== undefined) {\n statements.push(`${outVar} += ${selectedAttributePart};`);\n }\n\n statements.push(`${outVar} += \">\";`);\n\n const dangerousInnerHtml = emitDangerouslySetInnerHtmlExpression(node.attributes);\n if (dangerousInnerHtml !== undefined) {\n statements.push(`${outVar} += ${dangerousInnerHtml};`);\n statements.push(`${outVar} += ${stringLiteral(`</${node.tagName}>`)};`);\n return statements;\n }\n\n const childrenExpression = emitBatchedSimpleChildrenExpression(\n node.children,\n escapeBatchHelperName,\n );\n const childSelectedValueCode = node.tagName === \"select\"\n ? attributeScan.formValueAttributeCode\n : undefined;\n\n if (childrenExpression !== undefined && childSelectedValueCode === undefined) {\n statements.push(`${outVar} += ${childrenExpression};`);\n } else {\n for (const child of node.children) {\n statements.push(\n ...collectHtmlStatements(\n child,\n outVar,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n childSelectedValueCode,\n ),\n );\n }\n }\n\n statements.push(`${outVar} += ${stringLiteral(`</${node.tagName}>`)};`);\n\n return statements;\n}\n\nfunction collectHtmlParts(\n node: JsxNodeIr,\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n asyncComponentNames: ReadonlySet<string>,\n dynamicAttributes: \"drop\" | \"emit\",\n contextProviderHelperName?: string,\n contextConsumerHelperName?: string,\n reactNodeRenderHelperName?: string,\n selectedValueCode?: string,\n): string[] {\n if (node.kind === \"text\") {\n return [stringLiteral(escapeHtml(node.value))];\n }\n\n if (node.kind === \"expr\") {\n if (node.renderMode === \"html\") {\n return [rawHtmlExpression(node.code)];\n }\n\n if (node.renderMode === \"react-node\" && reactNodeRenderHelperName !== undefined) {\n return [`${reactNodeRenderHelperName}(() => (${node.code}))`];\n }\n\n return [`${escapeHelperName}(${node.code})`];\n }\n\n if (node.kind === \"conditional\") {\n return [\n `((${node.conditionCode}) ? ${emitHtmlExpressionFromChildren(node.whenTrue, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName)} : ${emitHtmlExpressionFromChildren(node.whenFalse, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName)})`,\n ];\n }\n\n if (node.kind === \"list\") {\n const isAsync = containsAsyncServerOperationInChildren(\n node.children,\n asyncComponentNames,\n );\n\n if (isAsync) {\n // Async lists rely on Promise.all() for parallel resolution; the\n // callback allocation is amortized across `await` latency, so we keep\n // the `.map().then(...).join(\"\")` form.\n const parameters =\n node.indexName === undefined\n ? node.itemName\n : `${node.itemName}, ${node.indexName}`;\n const renderer = emitListRenderer(\n node,\n parameters,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n const mapped = `(${node.itemsCode}).map(${renderer})`;\n return [`(await Promise.all(${mapped})).join(\"\")`];\n }\n\n // Synchronous list — imperative accumulator avoids the per-render\n // callback allocation, the intermediate `.map()` result array, and the\n // trailing `.join(\"\")` call.\n return [emitSyncListIife(\n node,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n )];\n }\n\n if (node.kind === \"fragment\") {\n return node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\n );\n }\n\n if (node.kind === \"component\") {\n if (node.name === \"Suspense\") {\n return [\n stringLiteral(\"<!--$-->\"),\n ...node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\n ),\n stringLiteral(\"<!--/$-->\"),\n ];\n }\n\n if (contextProviderHelperName !== undefined && node.name.endsWith(\".Provider\")) {\n const valueCode = findComponentPropCode(node.props, \"value\") ?? \"undefined\";\n return [\n `${contextProviderHelperName}(${node.name}, ${valueCode}, () => ${emitHtmlExpressionFromChildren(node.children, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName)})`,\n ];\n }\n\n if (contextConsumerHelperName !== undefined && node.name.endsWith(\".Consumer\")) {\n const renderProp = findComponentRenderProp(node.props, \"children\");\n\n if (renderProp !== undefined) {\n const valueName = renderProp.valueName ?? \"_value\";\n return [\n `${contextConsumerHelperName}(${node.name}, (${valueName}) => ${emitHtmlExpressionFromChildren(renderProp.children, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName)})`,\n ];\n }\n }\n\n if (isClientBoundaryPlaceholder(node)) {\n const helperName = currentClientBoundaryHelperName;\n if (helperName !== undefined) {\n return [\n `${helperName}(${stringLiteral(node.name)}, ${emitPropsObject(\n node.props,\n node.children,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n )})`,\n ];\n }\n\n return [stringLiteral(clientBoundaryPlaceholder(node))];\n }\n\n if (node.runtime === \"compat\" && reactNodeRenderHelperName !== undefined) {\n return [\n `${reactNodeRenderHelperName}(${node.name}, ${emitPropsObject(\n node.props,\n node.children,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n )})`,\n ];\n }\n\n return [\n emitComponentCallExpression(\n node.name,\n emitPropsObject(\n node.props,\n node.children,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\n asyncComponentNames,\n ),\n ];\n }\n\n if (node.kind === \"async-boundary\") {\n return [];\n }\n\n const closeTag = `</${node.tagName}>`;\n\n if (node.tagName === \"textarea\") {\n const attributeScan = scanElementAttributes(node.tagName, node.attributes);\n return [\n stringLiteral(\"<textarea\"),\n ...collectElementAttributeParts(\n node.tagName,\n node.attributes,\n escapeHelperName,\n escapeBatchHelperName,\n dynamicAttributes,\n attributeScan,\n ),\n stringLiteral(\">\"),\n ...collectTextareaValueParts(\n node,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n attributeScan,\n ),\n stringLiteral(closeTag),\n ];\n }\n\n const childrenExpression = emitBatchedSimpleChildrenExpression(\n node.children,\n escapeBatchHelperName,\n );\n const attributeScan = scanElementAttributes(node.tagName, node.attributes);\n const childSelectedValueCode = node.tagName === \"select\"\n ? attributeScan.formValueAttributeCode\n : undefined;\n const selectedAttributePart = collectOptionSelectedAttributePart(node, selectedValueCode);\n const dangerousInnerHtml = emitDangerouslySetInnerHtmlExpression(node.attributes);\n const childrenParts =\n dangerousInnerHtml !== undefined\n ? [dangerousInnerHtml]\n : childrenExpression === undefined || childSelectedValueCode !== undefined\n ? node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n childSelectedValueCode,\n ),\n )\n : [childrenExpression];\n\n return [\n stringLiteral(`<${node.tagName}`),\n ...collectElementAttributeParts(\n node.tagName,\n node.attributes,\n escapeHelperName,\n escapeBatchHelperName,\n dynamicAttributes,\n attributeScan,\n ),\n ...(selectedAttributePart === undefined ? [] : [selectedAttributePart]),\n stringLiteral(\">\"),\n ...childrenParts,\n stringLiteral(closeTag),\n ];\n}\n\nfunction emitDangerouslySetInnerHtmlExpression(attrs: readonly AttributeIr[]): string | undefined {\n const attr = attrs.find(\n (candidate): candidate is Extract<AttributeIr, { kind: \"dynamic-attr\" }> =>\n candidate.kind === \"dynamic-attr\" && candidate.name === \"dangerouslySetInnerHTML\",\n );\n\n if (attr === undefined) {\n return undefined;\n }\n\n return `(() => { const _value = (${attr.code}); return typeof _value === \"object\" && _value !== null && typeof _value.__html === \"string\" ? _value.__html : \"\"; })()`;\n}\n\nfunction collectHtmlAttributeParts(\n tagName: string,\n attr: AttributeIr,\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n dynamicAttributes: \"drop\" | \"emit\",\n): string[] {\n if (attr.kind === \"spread-attr\") {\n return dynamicAttributes === \"drop\"\n ? []\n : [`${currentSpreadAttributesHelperName}(${stringLiteral(tagName)}, (${attr.code}))`];\n }\n\n if (attr.kind === \"event\" || attr.name === \"key\" || attr.name === \"dangerouslySetInnerHTML\") {\n return [];\n }\n\n const htmlName = htmlAttributeNameForElement(tagName, attr.name);\n\n if (attr.kind === \"static-attr\") {\n // Reject literal `javascript:` / `data:` / etc. in JSX source. This\n // never produces a runtime branch because the value is known at\n // compile time -- we just drop the attribute (matching the dynamic\n // path) so a developer cannot statically introduce the same XSS.\n if (isUrlAttribute(htmlName) && isStaticUrlValueUnsafe(htmlName, attr.value)) {\n return [];\n }\n // Issue 077: a literal string value for `srcdoc` etc. can never be\n // the `{ __html: ... }` opt-in shape, so it is dropped at compile\n // time.\n if (isDangerousHtmlAttribute(htmlName)) {\n return [];\n }\n return [`${stringLiteral(` ${htmlName}=\"${escapeHtml(attr.value)}\"`)}`];\n }\n\n if (dynamicAttributes === \"drop\") {\n return [];\n }\n\n if (attr.name === \"style\") {\n return [emitDynamicStyleAttributeExpression(attr.code, escapeHelperName, escapeBatchHelperName)];\n }\n\n if (isDangerousHtmlAttribute(htmlName)) {\n // Dynamic srcdoc must arrive as `{ __html: \"...\" }`. Drop anything\n // else at runtime so a value computed from a loader cannot inject\n // executable HTML into the iframe document.\n return [\n `(() => { const _value = (${attr.code}); if (_value == null || _value === false) return \"\"; if (typeof _value === \"object\" && _value !== null && typeof _value.__html === \"string\") return ${stringLiteral(` ${htmlName}=\"`)} + ${escapeHelperName}(_value.__html) + ${stringLiteral(\"\\\"\")}; return \"\"; })()`,\n ];\n }\n\n return [emitDynamicAttributeExpression(htmlName, attr.code, escapeHelperName)];\n}\n\nfunction collectElementAttributeParts(\n tagName: string,\n attrs: readonly AttributeIr[],\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n dynamicAttributes: \"drop\" | \"emit\",\n attributeScan = scanElementAttributes(tagName, attrs),\n): string[] {\n return attrs.flatMap((attr) =>\n attr.kind !== \"spread-attr\" &&\n ((tagName === \"input\" &&\n ((attr.name === \"defaultValue\" && attributeScan.hasExplicitInputValue) ||\n (attr.name === \"defaultChecked\" && attributeScan.hasExplicitInputChecked))) ||\n ((tagName === \"textarea\" || tagName === \"select\") &&\n (attr.name === \"value\" || attr.name === \"defaultValue\")))\n ? []\n : collectHtmlAttributeParts(\n tagName,\n attr,\n escapeHelperName,\n escapeBatchHelperName,\n dynamicAttributes,\n ),\n );\n}\n\ninterface ElementAttributeScan {\n hasExplicitInputValue: boolean;\n hasExplicitInputChecked: boolean;\n formValueAttributeCode: string | undefined;\n}\n\nfunction scanElementAttributes(\n tagName: string,\n attrs: readonly AttributeIr[],\n): ElementAttributeScan {\n let hasExplicitInputValue = false;\n let hasExplicitInputChecked = false;\n let valueAttributeCode: string | undefined;\n let defaultValueAttributeCode: string | undefined;\n\n for (const attr of attrs) {\n if (attr.kind === \"spread-attr\") {\n continue;\n }\n\n if (tagName === \"input\") {\n if (attr.name === \"value\") {\n hasExplicitInputValue = true;\n } else if (attr.name === \"checked\") {\n hasExplicitInputChecked = true;\n }\n }\n\n if ((tagName === \"textarea\" || tagName === \"select\") && attr.name === \"value\") {\n valueAttributeCode = readFormValueAttributeCode(attr);\n } else if (\n (tagName === \"textarea\" || tagName === \"select\") &&\n attr.name === \"defaultValue\"\n ) {\n defaultValueAttributeCode = readFormValueAttributeCode(attr);\n }\n }\n\n return {\n hasExplicitInputValue,\n hasExplicitInputChecked,\n formValueAttributeCode: valueAttributeCode ?? defaultValueAttributeCode,\n };\n}\n\nfunction readFormValueAttributeCode(\n attr: Exclude<AttributeIr, { kind: \"spread-attr\" }>,\n): string | undefined {\n if (attr.kind === \"event\") {\n return undefined;\n }\n\n return attr.kind === \"static-attr\" ? stringLiteral(attr.value) : `(${attr.code})`;\n}\n\nfunction emitDynamicAttributeExpression(\n name: string,\n code: string,\n escapeHelperName: string,\n): string {\n if (isUrlAttribute(name)) {\n // Run the value through the inline URL safety helper. The helper\n // returns the value when safe and `undefined` when the attribute\n // should be dropped. Using an IIFE here is necessary because we\n // need to capture the value once and branch on the helper output.\n return `(() => { const _value = (${code}); if (_value == null || _value === false) return \"\"; const _checked = ${currentUrlSafeHelperName}(${stringLiteral(name)}, _value === true ? \"\" : _value); return _checked === undefined ? \"\" : ${stringLiteral(` ${name}=\"`)} + ${escapeHelperName}(_checked) + ${stringLiteral(\"\\\"\")}; })()`;\n }\n\n const inlineExpr = simpleSideEffectFreeExpression(code);\n\n if (inlineExpr !== undefined) {\n // Inline 3 evaluations to avoid per-attribute IIFE closure allocation.\n // Safe because `simpleSideEffectFreeExpression` only matches expressions\n // whose evaluation has no observable side effects (identifier read,\n // member chain, literal, this).\n return `(${inlineExpr} == null || ${inlineExpr} === false ? \"\" : ${stringLiteral(` ${name}=\"`)} + ${escapeHelperName}(${inlineExpr} === true ? \"\" : ${inlineExpr}) + ${stringLiteral(\"\\\"\")})`;\n }\n\n return `(() => { const _value = (${code}); return _value == null || _value === false ? \"\" : ${stringLiteral(` ${name}=\"`)} + ${escapeHelperName}(_value === true ? \"\" : _value) + ${stringLiteral(\"\\\"\")}; })()`;\n}\n\nfunction emitDynamicStyleAttributeExpression(\n code: string,\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n): string {\n const staticStyleExpression = emitStaticStyleObjectAttributeExpression(code, escapeHelperName);\n\n if (staticStyleExpression !== undefined) {\n return staticStyleExpression;\n }\n\n const escapedPair = escapeBatchHelperName === undefined\n ? `${escapeHelperName}(_cssName) + \":\" + ${escapeHelperName}(_styleValue === true ? \"\" : _styleValue)`\n : `(() => { const _escaped = ${escapeBatchHelperName}([_cssName, _styleValue === true ? \"\" : _styleValue]); return _escaped[0] + \":\" + _escaped[1]; })()`;\n\n return `(() => { const _value = (${code}); if (_value == null || _value === false) return \"\"; if (typeof _value === \"string\") { const _style = ${escapeHelperName}(_value); return _style === \"\" ? \"\" : ${stringLiteral(\" style=\\\"\")} + _style + ${stringLiteral(\"\\\"\")}; } const _style = Object.entries(_value).filter(([, _styleValue]) => _styleValue != null && _styleValue !== false).map(([_styleName, _styleValue]) => { const _cssName = String(_styleName).startsWith(\"--\") ? String(_styleName) : String(_styleName).replace(/[A-Z]/g, (_char) => \"-\" + _char.toLowerCase()); return ${escapedPair}; }).join(\";\"); return _style === \"\" ? \"\" : ${stringLiteral(\" style=\\\"\")} + _style + ${stringLiteral(\"\\\"\")}; })()`;\n}\n\nfunction emitStaticStyleObjectAttributeExpression(\n code: string,\n escapeHelperName: string,\n): string | undefined {\n const entries = parseStaticStyleObjectLiteral(code);\n\n if (entries === undefined) {\n return undefined;\n }\n\n if (entries.length === 0) {\n return `\"\"`;\n }\n\n // Stage B — all values are compile-time literals: collapse to a single\n // constant string. null/false entries are dropped at build time.\n const literalEntries = entries.map((entry) => ({\n cssName: entry.cssName,\n literal: parseStyleLiteralValue(entry.valueCode),\n }));\n\n if (literalEntries.every((entry) => entry.literal !== undefined)) {\n const parts = literalEntries\n .filter((entry) => entry.literal !== null)\n .map((entry) => `${entry.cssName}:${escapeHtml(String(entry.literal))}`);\n\n if (parts.length === 0) {\n return `\"\"`;\n }\n\n return stringLiteral(` style=\"${parts.join(\";\")}\"`);\n }\n\n // Stage A — needSep tracking with inline string accumulator, no intermediate\n // array allocation and no `.join(\";\")` per render.\n const statements = entries.map((entry) =>\n `{ const _v = (${entry.valueCode}); if (_v != null && _v !== false) _style += (_style === \"\" ? \"\" : \";\") + ${stringLiteral(`${entry.cssName}:`)} + ${escapeHelperName}(_v === true ? \"\" : _v); }`\n );\n\n return `(() => { let _style = \"\"; ${statements.join(\" \")} return _style === \"\" ? \"\" : ${stringLiteral(\" style=\\\"\")} + _style + ${stringLiteral(\"\\\"\")}; })()`;\n}\n\nfunction collectTextareaValueParts(\n node: Extract<JsxNodeIr, { kind: \"element\" }>,\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n asyncComponentNames: ReadonlySet<string>,\n dynamicAttributes: \"drop\" | \"emit\",\n contextProviderHelperName?: string,\n contextConsumerHelperName?: string,\n reactNodeRenderHelperName?: string,\n attributeScan = scanElementAttributes(node.tagName, node.attributes),\n): string[] {\n const valueCode = attributeScan.formValueAttributeCode;\n if (valueCode !== undefined) {\n return [`${escapeHelperName}(${valueCode})`];\n }\n\n return node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n )\n );\n}\n\nfunction collectOptionSelectedAttributePart(\n node: Extract<JsxNodeIr, { kind: \"element\" }>,\n selectedValueCode: string | undefined,\n): string | undefined {\n if (selectedValueCode === undefined || node.tagName !== \"option\") {\n return undefined;\n }\n\n const optionValueCode = findOptionValueCode(node);\n if (optionValueCode === undefined) {\n return undefined;\n }\n\n return `(() => { const _selected = (${selectedValueCode}); return _selected == null ? \"\" : String(_selected) === String(${optionValueCode}) ? ${stringLiteral(' selected=\"\"')} : \"\"; })()`;\n}\n\nfunction findOptionValueCode(node: Extract<JsxNodeIr, { kind: \"element\" }>): string | undefined {\n const valueAttr = node.attributes.find((attr) => attr.kind !== \"spread-attr\" && attr.name === \"value\");\n if (valueAttr !== undefined && valueAttr.kind !== \"event\" && valueAttr.kind !== \"spread-attr\") {\n return valueAttr.kind === \"static-attr\" ? stringLiteral(valueAttr.value) : `(${valueAttr.code})`;\n }\n\n return node.children.every((child) => child.kind === \"text\")\n ? stringLiteral(node.children.map((child) => child.value).join(\"\"))\n : undefined;\n}\n\nfunction htmlAttributeNameForElement(tagName: string, name: string): string {\n if (tagName === \"input\") {\n if (name === \"defaultValue\") {\n return \"value\";\n }\n\n if (name === \"defaultChecked\") {\n return \"checked\";\n }\n }\n\n return htmlAttributeName(name);\n}\n\nfunction rawHtmlExpression(code: string): string {\n return `(() => { const _value = (${code}); return Array.isArray(_value) ? _value.join(\"\") : String(_value ?? \"\"); })()`;\n}\n\nfunction emitBatchedSimpleChildrenExpression(\n children: readonly JsxNodeIr[],\n escapeBatchHelperName: string | undefined,\n): string | undefined {\n if (escapeBatchHelperName === undefined) {\n return undefined;\n }\n\n const dynamicChildren = children.filter(\n (child) => child.kind === \"expr\" && child.renderMode !== \"html\" && child.renderMode !== \"react-node\",\n ) as Array<Extract<JsxNodeIr, { kind: \"expr\" }>>;\n\n if (dynamicChildren.length < 2) {\n return undefined;\n }\n\n if (\n children.some(\n (child) =>\n child.kind !== \"text\" &&\n !(child.kind === \"expr\" && child.renderMode !== \"html\" && child.renderMode !== \"react-node\"),\n )\n ) {\n return undefined;\n }\n\n const values = dynamicChildren.map((child) => child.code);\n let dynamicIndex = 0;\n const pieces = children.map((child) => {\n if (child.kind === \"text\") {\n return stringLiteral(escapeHtml(child.value));\n }\n\n const index = dynamicIndex;\n dynamicIndex += 1;\n\n return `_escaped[${index}]`;\n });\n\n return `(() => { const _escaped = ${escapeBatchHelperName}([${values.join(\", \")}]); return ${pieces.join(\" + \")}; })()`;\n}\n\nfunction emitHtmlExpressionFromChildren(\n children: JsxNodeIr[],\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n asyncComponentNames: ReadonlySet<string>,\n dynamicAttributes: \"drop\" | \"emit\",\n contextProviderHelperName?: string,\n contextConsumerHelperName?: string,\n reactNodeRenderHelperName?: string,\n): string {\n if (children.length === 0) {\n return \"\\\"\\\"\";\n }\n\n return emitHtmlExpression(\n { kind: \"fragment\", children },\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n}\n\nfunction emitSyncListIife(\n node: Extract<JsxNodeIr, { kind: \"list\" }>,\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n asyncComponentNames: ReadonlySet<string>,\n dynamicAttributes: \"drop\" | \"emit\",\n contextProviderHelperName?: string,\n contextConsumerHelperName?: string,\n reactNodeRenderHelperName?: string,\n): string {\n const valueExpression = emitHtmlExpressionFromChildren(\n node.children,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n const itemBinding = `const ${node.itemName} = _arr[_i];`;\n const indexBinding =\n node.indexName === undefined ? \"\" : ` const ${node.indexName} = _i;`;\n const bodyStatements =\n node.bodyStatements === undefined || node.bodyStatements.length === 0\n ? \"\"\n : ` ${node.bodyStatements.join(\" \")}`;\n\n return `(() => { let _o = \"\"; const _arr = (${node.itemsCode}); for (let _i = 0, _len = _arr.length; _i < _len; _i++) { ${itemBinding}${indexBinding}${bodyStatements} _o += ${valueExpression}; } return _o; })()`;\n}\n\nfunction emitListRenderer(\n node: Extract<JsxNodeIr, { kind: \"list\" }>,\n parameters: string,\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n asyncComponentNames: ReadonlySet<string>,\n dynamicAttributes: \"drop\" | \"emit\",\n contextProviderHelperName?: string,\n contextConsumerHelperName?: string,\n reactNodeRenderHelperName?: string,\n): string {\n const valueExpression = emitHtmlExpressionFromChildren(\n node.children,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n const asyncKeyword = containsAsyncServerOperationInChildren(\n node.children,\n asyncComponentNames,\n )\n ? \"async \"\n : \"\";\n\n if (node.bodyStatements === undefined || node.bodyStatements.length === 0) {\n return `${asyncKeyword}(${parameters}) => ${valueExpression}`;\n }\n\n return `${asyncKeyword}(${parameters}) => {\\n${node.bodyStatements.map((statement) => ` ${statement}`).join(\"\\n\")}\\n return ${valueExpression};\\n }`;\n}\n\nfunction emitPropsObject(\n props: ComponentPropIr[],\n children: JsxNodeIr[] = [],\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n asyncComponentNames: ReadonlySet<string>,\n dynamicAttributes: \"drop\" | \"emit\",\n contextProviderHelperName?: string,\n contextConsumerHelperName?: string,\n reactNodeRenderHelperName?: string,\n): string {\n const entries = props.map((prop) => {\n if (prop.kind === \"spread-prop\") {\n return `...(${prop.code})`;\n }\n\n if (prop.kind === \"render-prop\") {\n return `${emitPropName(prop.name)}: ${emitHtmlExpressionFromChildren(prop.children, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName)}`;\n }\n\n return `${emitPropName(prop.name)}: (${prop.code})`;\n });\n\n if (children.length > 0) {\n entries.push(\n `children: ${emitHtmlExpressionFromChildren(children, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName)}`,\n );\n }\n\n return `{ ${entries.join(\", \")} }`;\n}\n\nfunction emitComponentCallExpression(\n name: string,\n propsCode: string,\n asyncComponentNames: ReadonlySet<string>,\n): string {\n const call = `${name}(${propsCode})`;\n return asyncComponentNames.has(name) ? `(await ${call})` : call;\n}\n\nfunction isClientBoundaryPlaceholder(node: Extract<JsxNodeIr, { kind: \"component\" }>): boolean {\n return node.clientReference !== undefined && !isCompatClientReference(node);\n}\n\nfunction isCompatClientReference(node: Extract<JsxNodeIr, { kind: \"component\" }>): boolean {\n return node.clientReference !== undefined && /\\.(?:compat)\\.[cm]?[jt]sx?$/.test(node.clientReference.moduleId);\n}\n\nfunction clientBoundaryPlaceholder(node: Extract<JsxNodeIr, { kind: \"component\" }>): string {\n return `<!--mreact-client-boundary:${escapeHtml(node.name)}-->`;\n}\n\nfunction collectAsyncServerComponentNames(components: readonly ComponentIr[]): Set<string> {\n const names = new Set(\n components\n .filter((component) => component.async === true)\n .map((component) => component.name),\n );\n\n let changed = true;\n\n while (changed) {\n changed = false;\n\n for (const component of components) {\n if (\n !names.has(component.name) &&\n containsAsyncServerOperation(component.root, names)\n ) {\n names.add(component.name);\n changed = true;\n }\n }\n }\n\n return names;\n}\n\nfunction containsAsyncServerOperationInChildren(\n children: readonly JsxNodeIr[],\n asyncComponentNames: ReadonlySet<string>,\n): boolean {\n return children.some((child) => containsAsyncServerOperation(child, asyncComponentNames));\n}\n\nfunction containsAsyncServerOperation(\n node: JsxNodeIr,\n asyncComponentNames: ReadonlySet<string>,\n): boolean {\n if (node.kind === \"async-boundary\") {\n return true;\n }\n\n if (node.kind === \"component\") {\n return (\n asyncComponentNames.has(node.name) ||\n containsAsyncServerOperationInChildren(node.children, asyncComponentNames) ||\n node.props.some(\n (prop) =>\n prop.kind === \"render-prop\" &&\n containsAsyncServerOperationInChildren(prop.children, asyncComponentNames),\n )\n );\n }\n\n if (node.kind === \"conditional\") {\n return containsAsyncServerOperationInChildren(\n [...node.whenTrue, ...node.whenFalse],\n asyncComponentNames,\n );\n }\n\n if (node.kind === \"list\") {\n return containsAsyncServerOperationInChildren(node.children, asyncComponentNames);\n }\n\n if (node.kind === \"element\" || node.kind === \"fragment\") {\n return containsAsyncServerOperationInChildren(node.children, asyncComponentNames);\n }\n\n return false;\n}\n\nfunction emitPropName(name: string): string {\n return /^[A-Za-z_$][\\w$]*$/.test(name) ? name : JSON.stringify(name);\n}\n\nfunction allocateEscapeHelperName(ir: ModuleIr): string {\n return allocateHelperName(ir, \"_escapeHtml\");\n}\n\nfunction allocateHelperName(ir: ModuleIr, baseName: string): string {\n const reservedNames = new Set<string>(ir.moduleBindingNames);\n\n for (const component of ir.components) {\n reservedNames.add(component.name);\n\n for (const bindingName of component.bindingNames) {\n reservedNames.add(bindingName);\n }\n }\n\n let name = baseName;\n let index = 1;\n\n while (reservedNames.has(name)) {\n name = `${baseName}$${index}`;\n index += 1;\n }\n\n return name;\n}\n\nfunction usesContextProvider(ir: ModuleIr): boolean {\n return ir.components.some((component) => containsContextProvider(component.root));\n}\n\nfunction usesContextConsumer(ir: ModuleIr): boolean {\n return ir.components.some((component) => containsContextConsumer(component.root));\n}\n\nfunction usesReactNodeRender(ir: ModuleIr): boolean {\n return ir.components.some(\n (component) =>\n containsReactNodeRender(component.root) ||\n component.bodyStatements.some((statement) =>\n statement.includes(oxcServerStringReactNodeRenderHelperPlaceholder),\n ),\n );\n}\n\nfunction replaceOxcServerStringReactNodeRenderHelper(\n code: string,\n helperName: string | undefined,\n): string {\n return helperName === undefined\n ? code\n : code.replaceAll(oxcServerStringReactNodeRenderHelperPlaceholder, helperName);\n}\n\nfunction usesClientBoundary(ir: ModuleIr): boolean {\n return ir.components.some((component) => containsClientBoundary(component.root));\n}\n\nfunction emitClientBoundaryHelper(name: string): string {\n const propsHelperName = `${name}$hasNonSerializableProps`;\n\n return [\n `function ${propsHelperName}(value) {`,\n ` if (typeof value === \"function\" || typeof value === \"symbol\") return true;`,\n ` if (value === null || typeof value !== \"object\") return false;`,\n ` if (Array.isArray(value)) return value.some(${propsHelperName});`,\n ` for (const key of Object.keys(value)) {`,\n ` if (${propsHelperName}(value[key])) return true;`,\n ` }`,\n ` return false;`,\n `}`,\n `function ${name}(name, props) {`,\n ` const _name = String(name);`,\n ` const _escapedName = _name.replaceAll(\"&\", \"&\").replaceAll('\"', \""\").replaceAll(\"<\", \"<\").replaceAll(\">\", \">\");`,\n ` const _props = props ?? {};`,\n ` const _nonSerializable = ${propsHelperName}(_props);`,\n ` const _nonSerializableAttr = _nonSerializable ? ' data-mreact-client-boundary-nonserializable=\"true\"' : \"\";`,\n ` const _json = (JSON.stringify(_props) ?? \"{}\").replaceAll(\"<\", \"\\\\\\\\u003c\");`,\n ` return \\`<template data-mreact-client-boundary=\"\\${_escapedName}\"\\${_nonSerializableAttr}></template><script type=\"application/json\" data-mreact-client-boundary-props=\"\\${_escapedName}\">\\${_json}</script>\\`;`,\n `}`,\n ].join(\"\\n\");\n}\n\nfunction emitSpreadAttributesHelper(\n name: string,\n escapeHelperName: string,\n urlSafeHelperName: string,\n): string {\n const aliases = JSON.stringify({\n acceptCharset: \"accept-charset\",\n autoFocus: \"autofocus\",\n autoPlay: \"autoplay\",\n charSet: \"charset\",\n className: \"class\",\n colSpan: \"colspan\",\n contentEditable: \"contenteditable\",\n crossOrigin: \"crossorigin\",\n encType: \"enctype\",\n formAction: \"formaction\",\n frameBorder: \"frameborder\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\",\n maxLength: \"maxlength\",\n minLength: \"minlength\",\n noValidate: \"novalidate\",\n playsInline: \"playsinline\",\n readOnly: \"readonly\",\n rowSpan: \"rowspan\",\n spellCheck: \"spellcheck\",\n srcDoc: \"srcdoc\",\n srcSet: \"srcset\",\n tabIndex: \"tabindex\",\n useMap: \"usemap\",\n });\n const urlAttributes = JSON.stringify([\n \"href\",\n \"src\",\n \"action\",\n \"formaction\",\n \"xlink:href\",\n \"ping\",\n \"poster\",\n \"background\",\n \"manifest\",\n ]);\n const dangerousAttributes = JSON.stringify([\"srcdoc\"]);\n\n return [\n `const ${name}$aliases = ${aliases};`,\n `const ${name}$urlAttributes = new Set(${urlAttributes});`,\n `const ${name}$dangerousAttributes = new Set(${dangerousAttributes});`,\n `function ${name}$style(value) {`,\n ` if (value == null || value === false) return \"\";`,\n ` if (typeof value === \"string\") return value;`,\n ` let _style = \"\";`,\n ` for (const _styleName of Object.keys(value)) {`,\n ` const _styleValue = value[_styleName];`,\n ` if (_styleValue == null || _styleValue === false) continue;`,\n ` const _cssName = String(_styleName).startsWith(\"--\") ? String(_styleName) : String(_styleName).replace(/[A-Z]/g, (_char) => \"-\" + _char.toLowerCase());`,\n ` _style += (_style === \"\" ? \"\" : \";\") + _cssName + \":\" + (_styleValue === true ? \"\" : String(_styleValue));`,\n ` }`,\n ` return _style;`,\n `}`,\n `function ${name}(tagName, props) {`,\n ` if (props == null || props === false) return \"\";`,\n ` let _out = \"\";`,\n ` for (const _rawName of Object.keys(props)) {`,\n ` let _value = props[_rawName];`,\n ` if (_value == null || _value === false) continue;`,\n ` if (_rawName === \"key\" || _rawName === \"ref\" || _rawName === \"children\") continue;`,\n ` if (/^on[A-Za-z]/.test(_rawName)) continue;`,\n ` let _name = tagName === \"input\" && _rawName === \"defaultValue\" ? \"value\" : tagName === \"input\" && _rawName === \"defaultChecked\" ? \"checked\" : (${name}$aliases[_rawName] ?? _rawName);`,\n ` if (!/^[A-Za-z_:][A-Za-z0-9:_.-]*$/.test(_name)) continue;`,\n ` if (_name === \"style\") {`,\n ` const _style = ${name}$style(_value);`,\n ` if (_style !== \"\") _out += \" style=\\\\\"\" + ${escapeHelperName}(_style) + \"\\\\\"\";`,\n ` continue;`,\n ` }`,\n ` if (${name}$dangerousAttributes.has(_name)) {`,\n ` if (typeof _value === \"object\" && _value !== null && typeof _value.__html === \"string\") {`,\n ` _out += \" \" + _name + \"=\\\\\"\" + ${escapeHelperName}(_value.__html) + \"\\\\\"\";`,\n ` }`,\n ` continue;`,\n ` }`,\n ` if (${name}$urlAttributes.has(_name)) {`,\n ` _value = ${urlSafeHelperName}(_name, _value === true ? \"\" : _value);`,\n ` if (_value === undefined) continue;`,\n ` }`,\n ` _out += \" \" + _name + \"=\\\\\"\" + ${escapeHelperName}(_value === true ? \"\" : _value) + \"\\\\\"\";`,\n ` }`,\n ` return _out;`,\n `}`,\n ].join(\"\\n\");\n}\n\nfunction containsClientBoundary(node: JsxNodeIr): boolean {\n if (node.kind === \"component\" && isClientBoundaryPlaceholder(node)) {\n return true;\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse].some(containsClientBoundary);\n }\n\n if (node.kind === \"list\") {\n return node.children.some(containsClientBoundary);\n }\n\n if (node.kind === \"fragment\" || node.kind === \"element\") {\n return node.children.some(containsClientBoundary);\n }\n\n if (node.kind === \"component\") {\n return (\n node.children.some(containsClientBoundary) ||\n node.props.some(\n (prop) => prop.kind === \"render-prop\" && prop.children.some(containsClientBoundary),\n )\n );\n }\n\n if (node.kind === \"async-boundary\") {\n return (\n node.children.some(containsClientBoundary) ||\n node.placeholderChildren?.some(containsClientBoundary) === true ||\n node.catchChildren?.some(containsClientBoundary) === true\n );\n }\n\n return false;\n}\n\nfunction containsReactNodeRender(node: JsxNodeIr): boolean {\n if (node.kind === \"expr\") {\n return node.renderMode === \"react-node\";\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse].some(containsReactNodeRender);\n }\n\n if (node.kind === \"list\") {\n return node.children.some(containsReactNodeRender);\n }\n\n if (node.kind === \"fragment\" || node.kind === \"element\") {\n return node.children.some(containsReactNodeRender);\n }\n\n if (node.kind === \"component\") {\n if (node.runtime === \"compat\" && !isClientBoundaryPlaceholder(node)) {\n return true;\n }\n\n return (\n node.children.some(containsReactNodeRender) ||\n node.props.some(\n (prop) => prop.kind === \"render-prop\" && prop.children.some(containsReactNodeRender),\n )\n );\n }\n\n if (node.kind === \"async-boundary\") {\n return (\n node.children.some(containsReactNodeRender) ||\n node.placeholderChildren?.some(containsReactNodeRender) === true ||\n node.catchChildren?.some(containsReactNodeRender) === true\n );\n }\n\n return false;\n}\n\nfunction containsContextProvider(node: JsxNodeIr): boolean {\n if (node.kind === \"component\" && node.name.endsWith(\".Provider\")) {\n return true;\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse].some(containsContextProvider);\n }\n\n if (node.kind === \"list\") {\n return node.children.some(containsContextProvider);\n }\n\n if (node.kind === \"fragment\" || node.kind === \"element\") {\n return node.children.some(containsContextProvider);\n }\n\n if (node.kind === \"component\") {\n return (\n node.children.some(containsContextProvider) ||\n node.props.some(\n (prop) => prop.kind === \"render-prop\" && prop.children.some(containsContextProvider),\n )\n );\n }\n\n return false;\n}\n\nfunction containsContextConsumer(node: JsxNodeIr): boolean {\n if (node.kind === \"component\" && node.name.endsWith(\".Consumer\")) {\n return true;\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse].some(containsContextConsumer);\n }\n\n if (node.kind === \"list\") {\n return node.children.some(containsContextConsumer);\n }\n\n if (node.kind === \"fragment\" || node.kind === \"element\") {\n return node.children.some(containsContextConsumer);\n }\n\n if (node.kind === \"component\") {\n return (\n node.children.some(containsContextConsumer) ||\n node.props.some(\n (prop) => prop.kind === \"render-prop\" && prop.children.some(containsContextConsumer),\n )\n );\n }\n\n return false;\n}\n\nfunction findComponentPropCode(\n props: readonly ComponentPropIr[],\n name: string,\n): string | undefined {\n for (const prop of props) {\n if (prop.kind === \"prop\" && prop.name === name) {\n return prop.code;\n }\n }\n\n return undefined;\n}\n\nfunction findComponentRenderProp(\n props: readonly ComponentPropIr[],\n name: string,\n): Extract<ComponentPropIr, { kind: \"render-prop\" }> | undefined {\n for (const prop of props) {\n if (prop.kind === \"render-prop\" && prop.name === name) {\n return prop;\n }\n }\n\n return undefined;\n}\n\nfunction stringLiteral(value: string): string {\n return JSON.stringify(value);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"emit-server.js","sourceRoot":"","sources":["../src/emit-server.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n AttributeIr,\n ComponentPropIr,\n ComponentIr,\n JsxNodeIr,\n ModuleIr,\n} from \"./ir.js\";\nimport type { RuntimeImport, ServerEscapeOptions } from \"./types.js\";\nimport { emitEscapeHtmlHelper } from \"./emit-escape-helper.js\";\nimport { escapeHtmlAttribute as escapeHtml } from \"@reckona/mreact-shared/html-escape\";\nimport {\n htmlAttributeName,\n isDangerousHtmlAttribute,\n isStaticUrlValueUnsafe,\n isUrlAttribute,\n parseStaticStyleObjectLiteral,\n parseStyleLiteralValue,\n simpleSideEffectFreeExpression,\n} from \"./emit-server-shared.js\";\nimport { oxcServerStringReactNodeRenderHelperPlaceholder } from \"./oxc-runtime-emit.js\";\n\nexport interface EmitResult {\n code: string;\n imports: RuntimeImport[];\n}\n\nexport interface EmitServerOptions {\n dynamicAttributes?: \"drop\" | \"emit\";\n escape?: ServerEscapeOptions | undefined;\n serverHydration?: boolean;\n}\n\n// Module-local handle to the URL-safety helper name for the current emit\n// call. Used by deeply-nested attribute emitters to avoid threading the\n// name through every signature. Reset at the top of `emitServer`.\nlet currentUrlSafeHelperName: string = \"_urlAttrSafe\";\nlet currentClientBoundaryHelperName: string | undefined;\nlet currentSpreadAttributesHelperName: string = \"_renderSpreadAttributes\";\n\nexport function emitServer(\n ir: ModuleIr,\n options: EmitServerOptions = {},\n): EmitResult {\n const escapeHelperName = allocateEscapeHelperName(ir);\n const escapeBatchHelperName = options.escape === undefined\n ? undefined\n : allocateHelperName(ir, \"_escapeHtmlBatch\");\n const contextProviderHelperName = usesContextProvider(ir)\n ? allocateHelperName(ir, \"_renderContextProviderToString\")\n : undefined;\n const contextConsumerHelperName = usesContextConsumer(ir)\n ? allocateHelperName(ir, \"_renderContextConsumerToString\")\n : undefined;\n const reactNodeRenderHelperName = usesReactNodeRender(ir)\n ? allocateHelperName(ir, \"_renderReactNodeToString\")\n : undefined;\n const clientBoundaryHelperName = usesClientBoundary(ir)\n ? allocateHelperName(ir, \"_renderClientBoundary\")\n : undefined;\n const spreadAttributesHelperName = allocateHelperName(ir, \"_renderSpreadAttributes\");\n const outAccumulatorName = allocateHelperName(ir, \"_out\");\n const urlSafeHelperName = allocateHelperName(ir, \"_urlAttrSafe\");\n currentUrlSafeHelperName = urlSafeHelperName;\n currentClientBoundaryHelperName = clientBoundaryHelperName;\n currentSpreadAttributesHelperName = spreadAttributesHelperName;\n const helper = emitEscapeHtmlHelper(escapeHelperName);\n // Inline URL-scheme guard mirroring packages/server/src/url-safety.ts.\n // Returns the original value when safe to emit and undefined when the\n // attribute should be dropped. Inlined so compiler output stays free\n // of cross-package runtime imports.\n // Mirrors packages/server/src/url-safety.ts. Issue 078: in-scheme\n // tab/CR/LF must be stripped anywhere in the value, not just at the\n // start, to match the browser's URL parser.\n const urlSafeHelper = [\n `function ${urlSafeHelperName}(name, value) {`,\n ` if (typeof value !== \"string\") return value;`,\n ` const _canonical = value`,\n ` .replace(/^[\\\\x00-\\\\x20]+/u, \"\")`,\n ` .replace(/[\\\\t\\\\r\\\\n]/g, \"\");`,\n ` const _match = /^([a-zA-Z][a-zA-Z0-9+.-]*):/.exec(_canonical);`,\n ` if (_match === null) return value;`,\n ` const _scheme = _match[1].toLowerCase();`,\n ` if (_scheme !== \"javascript\" && _scheme !== \"vbscript\" && _scheme !== \"livescript\" && _scheme !== \"mhtml\" && _scheme !== \"file\" && _scheme !== \"data\") return value;`,\n ` if (_scheme === \"data\" && (name === \"src\" || name === \"poster\") && /^data:image\\\\/(?!svg\\\\+xml(?:[;,]|$))/i.test(_canonical)) return value;`,\n ` return undefined;`,\n `}`,\n ].join(\"\\n\");\n const asyncComponentNames = collectAsyncServerComponentNames(ir.components);\n const components = ir.components\n .map((component) =>\n emitComponent(\n component,\n escapeHelperName,\n escapeBatchHelperName,\n outAccumulatorName,\n options,\n asyncComponentNames,\n options.dynamicAttributes ?? \"emit\",\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\n )\n .join(\"\\n\\n\");\n // Tree-shake the URL-safety helper when it is not referenced by any\n // component output. Same shape as the existing escapeImport check.\n const needsSpreadAttributesHelper = components.includes(spreadAttributesHelperName);\n const urlSafeBlock =\n components.includes(urlSafeHelperName) || needsSpreadAttributesHelper ? urlSafeHelper : \"\";\n const clientBoundaryBlock =\n clientBoundaryHelperName === undefined || !components.includes(clientBoundaryHelperName)\n ? \"\"\n : emitClientBoundaryHelper(clientBoundaryHelperName);\n const spreadAttributesBlock = needsSpreadAttributesHelper\n ? emitSpreadAttributesHelper(spreadAttributesHelperName, escapeHelperName, urlSafeHelperName)\n : \"\";\n // Emit batch escape import only when the helper is actually referenced\n // by the generated component code (issue 048: dead-import elimination).\n // Helper names are uniquely allocated, so a literal substring check is\n // both correct and inexpensive.\n const escapeImport =\n options.escape === undefined ||\n escapeBatchHelperName === undefined ||\n !components.includes(escapeBatchHelperName)\n ? \"\"\n : `import { ${options.escape.batchImportName} as ${escapeBatchHelperName} } from ${stringLiteral(options.escape.batchImportSource)};`;\n const userImports = emitUserImports(ir);\n const contextImport = emitContextImport(\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n const moduleStatements = emitModuleStatements(ir);\n\n return {\n code: `${[userImports, escapeImport, contextImport, moduleStatements, helper, urlSafeBlock, clientBoundaryBlock, spreadAttributesBlock].filter(Boolean).join(\"\\n\\n\")}\\n\\n${components}\\n`,\n imports: collectContextImports(\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\n };\n}\n\nfunction emitContextImport(\n contextProviderHelperName: string | undefined,\n contextConsumerHelperName: string | undefined,\n reactNodeRenderHelperName: string | undefined,\n): string {\n const specifiers = [\n reactNodeRenderHelperName === undefined\n ? undefined\n : `renderToString as ${reactNodeRenderHelperName}`,\n contextProviderHelperName === undefined\n ? undefined\n : `renderContextProviderToString as ${contextProviderHelperName}`,\n contextConsumerHelperName === undefined\n ? undefined\n : `renderContextConsumerToString as ${contextConsumerHelperName}`,\n ].filter((specifier): specifier is string => specifier !== undefined);\n\n return specifiers.length === 0\n ? \"\"\n : `import { ${specifiers.join(\", \")} } from \"@reckona/mreact-compat\";`;\n}\n\nfunction collectContextImports(\n contextProviderHelperName: string | undefined,\n contextConsumerHelperName: string | undefined,\n reactNodeRenderHelperName?: string,\n): RuntimeImport[] {\n const specifiers = [\n reactNodeRenderHelperName === undefined ? undefined : \"renderToString\",\n contextProviderHelperName === undefined\n ? undefined\n : \"renderContextProviderToString\",\n contextConsumerHelperName === undefined\n ? undefined\n : \"renderContextConsumerToString\",\n ].filter((specifier): specifier is string => specifier !== undefined);\n\n return specifiers.length === 0\n ? []\n : [{ source: \"@reckona/mreact-compat\", specifiers }];\n}\n\nfunction emitUserImports(ir: ModuleIr): string {\n return ir.userImports.join(\"\\n\");\n}\n\nfunction emitModuleStatements(ir: ModuleIr): string {\n return ir.moduleStatements.join(\"\\n\");\n}\n\nfunction emitComponent(\n component: ComponentIr,\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n outAccumulatorName: string,\n options: EmitServerOptions,\n asyncComponentNames: ReadonlySet<string>,\n dynamicAttributes: \"drop\" | \"emit\",\n contextProviderHelperName?: string,\n contextConsumerHelperName?: string,\n reactNodeRenderHelperName?: string,\n): string {\n const body = component.bodyStatements.map((statement) =>\n ` ${replaceOxcServerStringReactNodeRenderHelper(statement, reactNodeRenderHelperName)}`,\n );\n const parameters = component.parameters.join(\", \");\n const htmlStatements = collectHtmlStatements(\n component.root,\n outAccumulatorName,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n\n const markerStart = stringLiteral(`<!--mreact-h:start:${encodeURIComponent(component.name)}-->`);\n const markerEnd = stringLiteral(`<!--mreact-h:end:${encodeURIComponent(component.name)}-->`);\n\n const hydrationOpenStatements =\n options.serverHydration === true ? [` ${outAccumulatorName} += ${markerStart};`] : [];\n const hydrationCloseStatements =\n options.serverHydration === true ? [` ${outAccumulatorName} += ${markerEnd};`] : [];\n\n const functionKeyword = `${component.exportDefault === true ? \"export default \" : component.exported === false ? \"\" : \"export \"}${\n asyncComponentNames.has(component.name) ? \"async \" : \"\"\n }function`;\n\n return [\n `${functionKeyword} ${component.name}(${parameters}) {`,\n ...body,\n ` let ${outAccumulatorName} = \"\";`,\n ...hydrationOpenStatements,\n ...htmlStatements.map((statement) => ` ${statement}`),\n ...hydrationCloseStatements,\n ` return ${outAccumulatorName};`,\n `}`,\n ].join(\"\\n\");\n}\n\nfunction emitHtmlExpression(\n node: JsxNodeIr,\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n asyncComponentNames: ReadonlySet<string>,\n dynamicAttributes: \"drop\" | \"emit\",\n contextProviderHelperName?: string,\n contextConsumerHelperName?: string,\n reactNodeRenderHelperName?: string,\n): string {\n const parts = collectHtmlParts(\n node,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n\n if (parts.length === 0) {\n return \"\\\"\\\"\";\n }\n\n return parts.join(\" + \");\n}\n\n/**\n * Statement-list IR walker (issue 046 followup). Produces a sequence of\n * statements that each append to a shared accumulator variable instead of\n * a single concat expression. Used at the top of component bodies; sub\n * callbacks (`renderContextProviderToString`, async list renderers, etc.)\n * still use the expression form via `emitHtmlExpression`.\n *\n * The benefits over expression mode:\n * - intermediate string allocations from `+ +` chains disappear\n * - conditional branches lower to `if/else` (no ternary expression spaghetti)\n * - sync list rendering inlines the for-loop append without an IIFE wrapper\n * - debugger / source maps step naturally over the generated statements\n */\nfunction collectHtmlStatements(\n node: JsxNodeIr,\n outVar: string,\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n asyncComponentNames: ReadonlySet<string>,\n dynamicAttributes: \"drop\" | \"emit\",\n contextProviderHelperName?: string,\n contextConsumerHelperName?: string,\n reactNodeRenderHelperName?: string,\n selectedValueCode?: string,\n): string[] {\n if (node.kind === \"text\") {\n const literal = escapeHtml(node.value);\n if (literal === \"\") {\n return [];\n }\n return [`${outVar} += ${stringLiteral(literal)};`];\n }\n\n if (node.kind === \"expr\") {\n if (node.renderMode === \"html\") {\n return [`${outVar} += ${rawHtmlExpression(node.code)};`];\n }\n\n if (node.renderMode === \"react-node\" && reactNodeRenderHelperName !== undefined) {\n return [`${outVar} += ${reactNodeRenderHelperName}(() => (${node.code}));`];\n }\n\n return [`${outVar} += ${escapeHelperName}(${node.code});`];\n }\n\n if (node.kind === \"conditional\") {\n const whenTrueStatements = node.whenTrue.flatMap((child) =>\n collectHtmlStatements(\n child,\n outVar,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\n );\n const whenFalseStatements = node.whenFalse.flatMap((child) =>\n collectHtmlStatements(\n child,\n outVar,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\n );\n\n if (whenTrueStatements.length === 0 && whenFalseStatements.length === 0) {\n return [];\n }\n\n if (whenFalseStatements.length === 0) {\n return [\n `if (${node.conditionCode}) {`,\n ...whenTrueStatements.map((statement) => ` ${statement}`),\n `}`,\n ];\n }\n\n if (whenTrueStatements.length === 0) {\n return [\n `if (!(${node.conditionCode})) {`,\n ...whenFalseStatements.map((statement) => ` ${statement}`),\n `}`,\n ];\n }\n\n return [\n `if (${node.conditionCode}) {`,\n ...whenTrueStatements.map((statement) => ` ${statement}`),\n `} else {`,\n ...whenFalseStatements.map((statement) => ` ${statement}`),\n `}`,\n ];\n }\n\n if (node.kind === \"list\") {\n const isAsync = containsAsyncServerOperationInChildren(\n node.children,\n asyncComponentNames,\n );\n\n if (isAsync) {\n // Parallel async path keeps the existing renderer + Promise.all + join\n // form to preserve concurrent resolution semantics.\n const parameters = emitListParameters(node);\n const renderer = emitListRenderer(\n node,\n parameters,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n const mapped = `(${node.itemsCode}).map(${renderer})`;\n return [`${outVar} += (await Promise.all(${mapped})).join(\"\");`];\n }\n\n // Sync list — inline for-loop appending to the caller's accumulator.\n // No inner IIFE wrapper and no intermediate string concat per iteration.\n const itemBinding = `const ${node.itemName} = _arr[_i];`;\n const indexBinding =\n node.indexName === undefined ? undefined : `const ${node.indexName} = _i;`;\n const arrayBinding =\n node.arrayName === undefined ? undefined : `const ${node.arrayName} = _arr;`;\n const bodyStatements = node.bodyStatements ?? [];\n const childStatements = node.children.flatMap((child) =>\n collectHtmlStatements(\n child,\n outVar,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\n );\n\n return [\n `{`,\n ` const _arr = (${node.itemsCode});`,\n ` for (let _i = 0, _len = _arr.length; _i < _len; _i++) {`,\n ` ${itemBinding}`,\n ...(indexBinding === undefined ? [] : [` ${indexBinding}`]),\n ...(arrayBinding === undefined ? [] : [` ${arrayBinding}`]),\n ...bodyStatements.map((statement) => ` ${statement}`),\n ...childStatements.map((statement) => ` ${statement}`),\n ` }`,\n `}`,\n ];\n }\n\n if (node.kind === \"fragment\") {\n return node.children.flatMap((child) =>\n collectHtmlStatements(\n child,\n outVar,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\n );\n }\n\n if (node.kind === \"component\") {\n if (node.name === \"Suspense\") {\n return [\n `${outVar} += \"<!--$-->\";`,\n ...node.children.flatMap((child) =>\n collectHtmlStatements(\n child,\n outVar,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\n ),\n `${outVar} += \"<!--/$-->\";`,\n ];\n }\n\n if (contextProviderHelperName !== undefined && node.name.endsWith(\".Provider\")) {\n // Provider helper takes a string-returning callback. Use the\n // expression form inside the callback to preserve the existing\n // helper contract.\n const valueCode = findComponentPropCode(node.props, \"value\") ?? \"undefined\";\n return [\n `${outVar} += ${contextProviderHelperName}(${node.name}, ${valueCode}, () => ${emitHtmlExpressionFromChildren(node.children, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName)});`,\n ];\n }\n\n if (contextConsumerHelperName !== undefined && node.name.endsWith(\".Consumer\")) {\n const renderProp = findComponentRenderProp(node.props, \"children\");\n\n if (renderProp !== undefined) {\n const valueName = renderProp.valueName ?? \"_value\";\n return [\n `${outVar} += ${contextConsumerHelperName}(${node.name}, (${valueName}) => ${emitHtmlExpressionFromChildren(renderProp.children, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName)});`,\n ];\n }\n }\n\n if (isClientBoundaryPlaceholder(node)) {\n const helperName = currentClientBoundaryHelperName;\n if (helperName !== undefined) {\n return [\n `${outVar} += ${helperName}(${stringLiteral(node.name)}, ${emitPropsObject(\n node.props,\n node.children,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n )});`,\n ];\n }\n\n return [`${outVar} += ${stringLiteral(clientBoundaryPlaceholder(node))};`];\n }\n\n if (node.runtime === \"compat\" && reactNodeRenderHelperName !== undefined) {\n return [\n `${outVar} += ${reactNodeRenderHelperName}(${node.name}, ${emitPropsObject(\n node.props,\n node.children,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n )});`,\n ];\n }\n\n return [\n `${outVar} += ${emitComponentCallExpression(\n node.name,\n emitPropsObject(\n node.props,\n node.children,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\n asyncComponentNames,\n )};`,\n ];\n }\n\n if (node.kind === \"async-boundary\") {\n return [];\n }\n\n // element\n const statements: string[] = [];\n if (node.tagName === \"textarea\") {\n const attributeScan = scanElementAttributes(node.tagName, node.attributes);\n statements.push(`${outVar} += ${stringLiteral(\"<textarea\")};`);\n for (const attributePart of collectElementAttributeParts(\n node.tagName,\n node.attributes,\n escapeHelperName,\n escapeBatchHelperName,\n dynamicAttributes,\n attributeScan,\n )) {\n statements.push(`${outVar} += ${attributePart};`);\n }\n statements.push(`${outVar} += \">\";`);\n for (const valuePart of collectTextareaValueParts(\n node,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n attributeScan,\n )) {\n statements.push(`${outVar} += ${valuePart};`);\n }\n statements.push(`${outVar} += \"</textarea>\";`);\n return statements;\n }\n\n statements.push(`${outVar} += ${stringLiteral(`<${node.tagName}`)};`);\n const attributeScan = scanElementAttributes(node.tagName, node.attributes);\n\n for (const attributePart of collectElementAttributeParts(\n node.tagName,\n node.attributes,\n escapeHelperName,\n escapeBatchHelperName,\n dynamicAttributes,\n attributeScan,\n )) {\n statements.push(`${outVar} += ${attributePart};`);\n }\n const selectedAttributePart = collectOptionSelectedAttributePart(node, selectedValueCode);\n if (selectedAttributePart !== undefined) {\n statements.push(`${outVar} += ${selectedAttributePart};`);\n }\n\n statements.push(`${outVar} += \">\";`);\n\n const dangerousInnerHtml = emitDangerouslySetInnerHtmlExpression(node.attributes);\n if (dangerousInnerHtml !== undefined) {\n statements.push(`${outVar} += ${dangerousInnerHtml};`);\n statements.push(`${outVar} += ${stringLiteral(`</${node.tagName}>`)};`);\n return statements;\n }\n\n const childrenExpression = emitBatchedSimpleChildrenExpression(\n node.children,\n escapeBatchHelperName,\n );\n const childSelectedValueCode = node.tagName === \"select\"\n ? attributeScan.formValueAttributeCode\n : undefined;\n\n if (childrenExpression !== undefined && childSelectedValueCode === undefined) {\n statements.push(`${outVar} += ${childrenExpression};`);\n } else {\n for (const child of node.children) {\n statements.push(\n ...collectHtmlStatements(\n child,\n outVar,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n childSelectedValueCode,\n ),\n );\n }\n }\n\n statements.push(`${outVar} += ${stringLiteral(`</${node.tagName}>`)};`);\n\n return statements;\n}\n\nfunction collectHtmlParts(\n node: JsxNodeIr,\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n asyncComponentNames: ReadonlySet<string>,\n dynamicAttributes: \"drop\" | \"emit\",\n contextProviderHelperName?: string,\n contextConsumerHelperName?: string,\n reactNodeRenderHelperName?: string,\n selectedValueCode?: string,\n): string[] {\n if (node.kind === \"text\") {\n return [stringLiteral(escapeHtml(node.value))];\n }\n\n if (node.kind === \"expr\") {\n if (node.renderMode === \"html\") {\n return [rawHtmlExpression(node.code)];\n }\n\n if (node.renderMode === \"react-node\" && reactNodeRenderHelperName !== undefined) {\n return [`${reactNodeRenderHelperName}(() => (${node.code}))`];\n }\n\n return [`${escapeHelperName}(${node.code})`];\n }\n\n if (node.kind === \"conditional\") {\n return [\n `((${node.conditionCode}) ? ${emitHtmlExpressionFromChildren(node.whenTrue, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName)} : ${emitHtmlExpressionFromChildren(node.whenFalse, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName)})`,\n ];\n }\n\n if (node.kind === \"list\") {\n const isAsync = containsAsyncServerOperationInChildren(\n node.children,\n asyncComponentNames,\n );\n\n if (isAsync) {\n // Async lists rely on Promise.all() for parallel resolution; the\n // callback allocation is amortized across `await` latency, so we keep\n // the `.map().then(...).join(\"\")` form.\n const parameters = emitListParameters(node);\n const renderer = emitListRenderer(\n node,\n parameters,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n const mapped = `(${node.itemsCode}).map(${renderer})`;\n return [`(await Promise.all(${mapped})).join(\"\")`];\n }\n\n // Synchronous list — imperative accumulator avoids the per-render\n // callback allocation, the intermediate `.map()` result array, and the\n // trailing `.join(\"\")` call.\n return [emitSyncListIife(\n node,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n )];\n }\n\n if (node.kind === \"fragment\") {\n return node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\n );\n }\n\n if (node.kind === \"component\") {\n if (node.name === \"Suspense\") {\n return [\n stringLiteral(\"<!--$-->\"),\n ...node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\n ),\n stringLiteral(\"<!--/$-->\"),\n ];\n }\n\n if (contextProviderHelperName !== undefined && node.name.endsWith(\".Provider\")) {\n const valueCode = findComponentPropCode(node.props, \"value\") ?? \"undefined\";\n return [\n `${contextProviderHelperName}(${node.name}, ${valueCode}, () => ${emitHtmlExpressionFromChildren(node.children, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName)})`,\n ];\n }\n\n if (contextConsumerHelperName !== undefined && node.name.endsWith(\".Consumer\")) {\n const renderProp = findComponentRenderProp(node.props, \"children\");\n\n if (renderProp !== undefined) {\n const valueName = renderProp.valueName ?? \"_value\";\n return [\n `${contextConsumerHelperName}(${node.name}, (${valueName}) => ${emitHtmlExpressionFromChildren(renderProp.children, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName)})`,\n ];\n }\n }\n\n if (isClientBoundaryPlaceholder(node)) {\n const helperName = currentClientBoundaryHelperName;\n if (helperName !== undefined) {\n return [\n `${helperName}(${stringLiteral(node.name)}, ${emitPropsObject(\n node.props,\n node.children,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n )})`,\n ];\n }\n\n return [stringLiteral(clientBoundaryPlaceholder(node))];\n }\n\n if (node.runtime === \"compat\" && reactNodeRenderHelperName !== undefined) {\n return [\n `${reactNodeRenderHelperName}(${node.name}, ${emitPropsObject(\n node.props,\n node.children,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n )})`,\n ];\n }\n\n return [\n emitComponentCallExpression(\n node.name,\n emitPropsObject(\n node.props,\n node.children,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\n asyncComponentNames,\n ),\n ];\n }\n\n if (node.kind === \"async-boundary\") {\n return [];\n }\n\n const closeTag = `</${node.tagName}>`;\n\n if (node.tagName === \"textarea\") {\n const attributeScan = scanElementAttributes(node.tagName, node.attributes);\n return [\n stringLiteral(\"<textarea\"),\n ...collectElementAttributeParts(\n node.tagName,\n node.attributes,\n escapeHelperName,\n escapeBatchHelperName,\n dynamicAttributes,\n attributeScan,\n ),\n stringLiteral(\">\"),\n ...collectTextareaValueParts(\n node,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n attributeScan,\n ),\n stringLiteral(closeTag),\n ];\n }\n\n const childrenExpression = emitBatchedSimpleChildrenExpression(\n node.children,\n escapeBatchHelperName,\n );\n const attributeScan = scanElementAttributes(node.tagName, node.attributes);\n const childSelectedValueCode = node.tagName === \"select\"\n ? attributeScan.formValueAttributeCode\n : undefined;\n const selectedAttributePart = collectOptionSelectedAttributePart(node, selectedValueCode);\n const dangerousInnerHtml = emitDangerouslySetInnerHtmlExpression(node.attributes);\n const childrenParts =\n dangerousInnerHtml !== undefined\n ? [dangerousInnerHtml]\n : childrenExpression === undefined || childSelectedValueCode !== undefined\n ? node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n childSelectedValueCode,\n ),\n )\n : [childrenExpression];\n\n return [\n stringLiteral(`<${node.tagName}`),\n ...collectElementAttributeParts(\n node.tagName,\n node.attributes,\n escapeHelperName,\n escapeBatchHelperName,\n dynamicAttributes,\n attributeScan,\n ),\n ...(selectedAttributePart === undefined ? [] : [selectedAttributePart]),\n stringLiteral(\">\"),\n ...childrenParts,\n stringLiteral(closeTag),\n ];\n}\n\nfunction emitDangerouslySetInnerHtmlExpression(attrs: readonly AttributeIr[]): string | undefined {\n const attr = attrs.find(\n (candidate): candidate is Extract<AttributeIr, { kind: \"dynamic-attr\" }> =>\n candidate.kind === \"dynamic-attr\" && candidate.name === \"dangerouslySetInnerHTML\",\n );\n\n if (attr === undefined) {\n return undefined;\n }\n\n return `(() => { const _value = (${attr.code}); return typeof _value === \"object\" && _value !== null && typeof _value.__html === \"string\" ? _value.__html : \"\"; })()`;\n}\n\nfunction collectHtmlAttributeParts(\n tagName: string,\n attr: AttributeIr,\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n dynamicAttributes: \"drop\" | \"emit\",\n): string[] {\n if (attr.kind === \"spread-attr\") {\n return dynamicAttributes === \"drop\"\n ? []\n : [`${currentSpreadAttributesHelperName}(${stringLiteral(tagName)}, (${attr.code}))`];\n }\n\n if (attr.kind === \"event\" || attr.name === \"key\" || attr.name === \"dangerouslySetInnerHTML\") {\n return [];\n }\n\n const htmlName = htmlAttributeNameForElement(tagName, attr.name);\n\n if (attr.kind === \"static-attr\") {\n // Reject literal `javascript:` / `data:` / etc. in JSX source. This\n // never produces a runtime branch because the value is known at\n // compile time -- we just drop the attribute (matching the dynamic\n // path) so a developer cannot statically introduce the same XSS.\n if (isUrlAttribute(htmlName) && isStaticUrlValueUnsafe(htmlName, attr.value)) {\n return [];\n }\n // Issue 077: a literal string value for `srcdoc` etc. can never be\n // the `{ __html: ... }` opt-in shape, so it is dropped at compile\n // time.\n if (isDangerousHtmlAttribute(htmlName)) {\n return [];\n }\n return [`${stringLiteral(` ${htmlName}=\"${escapeHtml(attr.value)}\"`)}`];\n }\n\n if (dynamicAttributes === \"drop\") {\n return [];\n }\n\n if (attr.name === \"style\") {\n return [emitDynamicStyleAttributeExpression(attr.code, escapeHelperName, escapeBatchHelperName)];\n }\n\n if (isDangerousHtmlAttribute(htmlName)) {\n // Dynamic srcdoc must arrive as `{ __html: \"...\" }`. Drop anything\n // else at runtime so a value computed from a loader cannot inject\n // executable HTML into the iframe document.\n return [\n `(() => { const _value = (${attr.code}); if (_value == null || _value === false) return \"\"; if (typeof _value === \"object\" && _value !== null && typeof _value.__html === \"string\") return ${stringLiteral(` ${htmlName}=\"`)} + ${escapeHelperName}(_value.__html) + ${stringLiteral(\"\\\"\")}; return \"\"; })()`,\n ];\n }\n\n return [emitDynamicAttributeExpression(htmlName, attr.code, escapeHelperName)];\n}\n\nfunction collectElementAttributeParts(\n tagName: string,\n attrs: readonly AttributeIr[],\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n dynamicAttributes: \"drop\" | \"emit\",\n attributeScan = scanElementAttributes(tagName, attrs),\n): string[] {\n return attrs.flatMap((attr) =>\n attr.kind !== \"spread-attr\" &&\n ((tagName === \"input\" &&\n ((attr.name === \"defaultValue\" && attributeScan.hasExplicitInputValue) ||\n (attr.name === \"defaultChecked\" && attributeScan.hasExplicitInputChecked))) ||\n ((tagName === \"textarea\" || tagName === \"select\") &&\n (attr.name === \"value\" || attr.name === \"defaultValue\")))\n ? []\n : collectHtmlAttributeParts(\n tagName,\n attr,\n escapeHelperName,\n escapeBatchHelperName,\n dynamicAttributes,\n ),\n );\n}\n\ninterface ElementAttributeScan {\n hasExplicitInputValue: boolean;\n hasExplicitInputChecked: boolean;\n formValueAttributeCode: string | undefined;\n}\n\nfunction scanElementAttributes(\n tagName: string,\n attrs: readonly AttributeIr[],\n): ElementAttributeScan {\n let hasExplicitInputValue = false;\n let hasExplicitInputChecked = false;\n let valueAttributeCode: string | undefined;\n let defaultValueAttributeCode: string | undefined;\n\n for (const attr of attrs) {\n if (attr.kind === \"spread-attr\") {\n continue;\n }\n\n if (tagName === \"input\") {\n if (attr.name === \"value\") {\n hasExplicitInputValue = true;\n } else if (attr.name === \"checked\") {\n hasExplicitInputChecked = true;\n }\n }\n\n if ((tagName === \"textarea\" || tagName === \"select\") && attr.name === \"value\") {\n valueAttributeCode = readFormValueAttributeCode(attr);\n } else if (\n (tagName === \"textarea\" || tagName === \"select\") &&\n attr.name === \"defaultValue\"\n ) {\n defaultValueAttributeCode = readFormValueAttributeCode(attr);\n }\n }\n\n return {\n hasExplicitInputValue,\n hasExplicitInputChecked,\n formValueAttributeCode: valueAttributeCode ?? defaultValueAttributeCode,\n };\n}\n\nfunction readFormValueAttributeCode(\n attr: Exclude<AttributeIr, { kind: \"spread-attr\" }>,\n): string | undefined {\n if (attr.kind === \"event\") {\n return undefined;\n }\n\n return attr.kind === \"static-attr\" ? stringLiteral(attr.value) : `(${attr.code})`;\n}\n\nfunction emitDynamicAttributeExpression(\n name: string,\n code: string,\n escapeHelperName: string,\n): string {\n if (isUrlAttribute(name)) {\n // Run the value through the inline URL safety helper. The helper\n // returns the value when safe and `undefined` when the attribute\n // should be dropped. Using an IIFE here is necessary because we\n // need to capture the value once and branch on the helper output.\n return `(() => { const _value = (${code}); if (_value == null || _value === false) return \"\"; const _checked = ${currentUrlSafeHelperName}(${stringLiteral(name)}, _value === true ? \"\" : _value); return _checked === undefined ? \"\" : ${stringLiteral(` ${name}=\"`)} + ${escapeHelperName}(_checked) + ${stringLiteral(\"\\\"\")}; })()`;\n }\n\n const inlineExpr = simpleSideEffectFreeExpression(code);\n\n if (inlineExpr !== undefined) {\n // Inline 3 evaluations to avoid per-attribute IIFE closure allocation.\n // Safe because `simpleSideEffectFreeExpression` only matches expressions\n // whose evaluation has no observable side effects (identifier read,\n // member chain, literal, this).\n return `(${inlineExpr} == null || ${inlineExpr} === false ? \"\" : ${stringLiteral(` ${name}=\"`)} + ${escapeHelperName}(${inlineExpr} === true ? \"\" : ${inlineExpr}) + ${stringLiteral(\"\\\"\")})`;\n }\n\n return `(() => { const _value = (${code}); return _value == null || _value === false ? \"\" : ${stringLiteral(` ${name}=\"`)} + ${escapeHelperName}(_value === true ? \"\" : _value) + ${stringLiteral(\"\\\"\")}; })()`;\n}\n\nfunction emitDynamicStyleAttributeExpression(\n code: string,\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n): string {\n const staticStyleExpression = emitStaticStyleObjectAttributeExpression(code, escapeHelperName);\n\n if (staticStyleExpression !== undefined) {\n return staticStyleExpression;\n }\n\n const escapedPair = escapeBatchHelperName === undefined\n ? `${escapeHelperName}(_cssName) + \":\" + ${escapeHelperName}(_styleValue === true ? \"\" : _styleValue)`\n : `(() => { const _escaped = ${escapeBatchHelperName}([_cssName, _styleValue === true ? \"\" : _styleValue]); return _escaped[0] + \":\" + _escaped[1]; })()`;\n\n return `(() => { const _value = (${code}); if (_value == null || _value === false) return \"\"; if (typeof _value === \"string\") { const _style = ${escapeHelperName}(_value); return _style === \"\" ? \"\" : ${stringLiteral(\" style=\\\"\")} + _style + ${stringLiteral(\"\\\"\")}; } const _style = Object.entries(_value).filter(([, _styleValue]) => _styleValue != null && _styleValue !== false).map(([_styleName, _styleValue]) => { const _cssName = String(_styleName).startsWith(\"--\") ? String(_styleName) : String(_styleName).replace(/[A-Z]/g, (_char) => \"-\" + _char.toLowerCase()); return ${escapedPair}; }).join(\";\"); return _style === \"\" ? \"\" : ${stringLiteral(\" style=\\\"\")} + _style + ${stringLiteral(\"\\\"\")}; })()`;\n}\n\nfunction emitStaticStyleObjectAttributeExpression(\n code: string,\n escapeHelperName: string,\n): string | undefined {\n const entries = parseStaticStyleObjectLiteral(code);\n\n if (entries === undefined) {\n return undefined;\n }\n\n if (entries.length === 0) {\n return `\"\"`;\n }\n\n // Stage B — all values are compile-time literals: collapse to a single\n // constant string. null/false entries are dropped at build time.\n const literalEntries = entries.map((entry) => ({\n cssName: entry.cssName,\n literal: parseStyleLiteralValue(entry.valueCode),\n }));\n\n if (literalEntries.every((entry) => entry.literal !== undefined)) {\n const parts = literalEntries\n .filter((entry) => entry.literal !== null)\n .map((entry) => `${entry.cssName}:${escapeHtml(String(entry.literal))}`);\n\n if (parts.length === 0) {\n return `\"\"`;\n }\n\n return stringLiteral(` style=\"${parts.join(\";\")}\"`);\n }\n\n // Stage A — needSep tracking with inline string accumulator, no intermediate\n // array allocation and no `.join(\";\")` per render.\n const statements = entries.map((entry) =>\n `{ const _v = (${entry.valueCode}); if (_v != null && _v !== false) _style += (_style === \"\" ? \"\" : \";\") + ${stringLiteral(`${entry.cssName}:`)} + ${escapeHelperName}(_v === true ? \"\" : _v); }`\n );\n\n return `(() => { let _style = \"\"; ${statements.join(\" \")} return _style === \"\" ? \"\" : ${stringLiteral(\" style=\\\"\")} + _style + ${stringLiteral(\"\\\"\")}; })()`;\n}\n\nfunction collectTextareaValueParts(\n node: Extract<JsxNodeIr, { kind: \"element\" }>,\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n asyncComponentNames: ReadonlySet<string>,\n dynamicAttributes: \"drop\" | \"emit\",\n contextProviderHelperName?: string,\n contextConsumerHelperName?: string,\n reactNodeRenderHelperName?: string,\n attributeScan = scanElementAttributes(node.tagName, node.attributes),\n): string[] {\n const valueCode = attributeScan.formValueAttributeCode;\n if (valueCode !== undefined) {\n return [`${escapeHelperName}(${valueCode})`];\n }\n\n return node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n )\n );\n}\n\nfunction collectOptionSelectedAttributePart(\n node: Extract<JsxNodeIr, { kind: \"element\" }>,\n selectedValueCode: string | undefined,\n): string | undefined {\n if (selectedValueCode === undefined || node.tagName !== \"option\") {\n return undefined;\n }\n\n const optionValueCode = findOptionValueCode(node);\n if (optionValueCode === undefined) {\n return undefined;\n }\n\n return `(() => { const _selected = (${selectedValueCode}); return _selected == null ? \"\" : String(_selected) === String(${optionValueCode}) ? ${stringLiteral(' selected=\"\"')} : \"\"; })()`;\n}\n\nfunction findOptionValueCode(node: Extract<JsxNodeIr, { kind: \"element\" }>): string | undefined {\n const valueAttr = node.attributes.find((attr) => attr.kind !== \"spread-attr\" && attr.name === \"value\");\n if (valueAttr !== undefined && valueAttr.kind !== \"event\" && valueAttr.kind !== \"spread-attr\") {\n return valueAttr.kind === \"static-attr\" ? stringLiteral(valueAttr.value) : `(${valueAttr.code})`;\n }\n\n return node.children.every((child) => child.kind === \"text\")\n ? stringLiteral(node.children.map((child) => child.value).join(\"\"))\n : undefined;\n}\n\nfunction htmlAttributeNameForElement(tagName: string, name: string): string {\n if (tagName === \"input\") {\n if (name === \"defaultValue\") {\n return \"value\";\n }\n\n if (name === \"defaultChecked\") {\n return \"checked\";\n }\n }\n\n return htmlAttributeName(name);\n}\n\nfunction rawHtmlExpression(code: string): string {\n return `(() => { const _value = (${code}); return Array.isArray(_value) ? _value.join(\"\") : String(_value ?? \"\"); })()`;\n}\n\nfunction emitBatchedSimpleChildrenExpression(\n children: readonly JsxNodeIr[],\n escapeBatchHelperName: string | undefined,\n): string | undefined {\n if (escapeBatchHelperName === undefined) {\n return undefined;\n }\n\n const dynamicChildren = children.filter(\n (child) => child.kind === \"expr\" && child.renderMode !== \"html\" && child.renderMode !== \"react-node\",\n ) as Array<Extract<JsxNodeIr, { kind: \"expr\" }>>;\n\n if (dynamicChildren.length < 2) {\n return undefined;\n }\n\n if (\n children.some(\n (child) =>\n child.kind !== \"text\" &&\n !(child.kind === \"expr\" && child.renderMode !== \"html\" && child.renderMode !== \"react-node\"),\n )\n ) {\n return undefined;\n }\n\n const values = dynamicChildren.map((child) => child.code);\n let dynamicIndex = 0;\n const pieces = children.map((child) => {\n if (child.kind === \"text\") {\n return stringLiteral(escapeHtml(child.value));\n }\n\n const index = dynamicIndex;\n dynamicIndex += 1;\n\n return `_escaped[${index}]`;\n });\n\n return `(() => { const _escaped = ${escapeBatchHelperName}([${values.join(\", \")}]); return ${pieces.join(\" + \")}; })()`;\n}\n\nfunction emitHtmlExpressionFromChildren(\n children: JsxNodeIr[],\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n asyncComponentNames: ReadonlySet<string>,\n dynamicAttributes: \"drop\" | \"emit\",\n contextProviderHelperName?: string,\n contextConsumerHelperName?: string,\n reactNodeRenderHelperName?: string,\n): string {\n if (children.length === 0) {\n return \"\\\"\\\"\";\n }\n\n return emitHtmlExpression(\n { kind: \"fragment\", children },\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n}\n\nfunction emitSyncListIife(\n node: Extract<JsxNodeIr, { kind: \"list\" }>,\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n asyncComponentNames: ReadonlySet<string>,\n dynamicAttributes: \"drop\" | \"emit\",\n contextProviderHelperName?: string,\n contextConsumerHelperName?: string,\n reactNodeRenderHelperName?: string,\n): string {\n const valueExpression = emitHtmlExpressionFromChildren(\n node.children,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n const itemBinding = `const ${node.itemName} = _arr[_i];`;\n const indexBinding =\n node.indexName === undefined ? \"\" : ` const ${node.indexName} = _i;`;\n const arrayBinding =\n node.arrayName === undefined ? \"\" : ` const ${node.arrayName} = _arr;`;\n const bodyStatements =\n node.bodyStatements === undefined || node.bodyStatements.length === 0\n ? \"\"\n : ` ${node.bodyStatements.join(\" \")}`;\n\n return `(() => { let _o = \"\"; const _arr = (${node.itemsCode}); for (let _i = 0, _len = _arr.length; _i < _len; _i++) { ${itemBinding}${indexBinding}${arrayBinding}${bodyStatements} _o += ${valueExpression}; } return _o; })()`;\n}\n\nfunction emitListRenderer(\n node: Extract<JsxNodeIr, { kind: \"list\" }>,\n parameters: string,\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n asyncComponentNames: ReadonlySet<string>,\n dynamicAttributes: \"drop\" | \"emit\",\n contextProviderHelperName?: string,\n contextConsumerHelperName?: string,\n reactNodeRenderHelperName?: string,\n): string {\n const valueExpression = emitHtmlExpressionFromChildren(\n node.children,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n const asyncKeyword = containsAsyncServerOperationInChildren(\n node.children,\n asyncComponentNames,\n )\n ? \"async \"\n : \"\";\n\n if (node.bodyStatements === undefined || node.bodyStatements.length === 0) {\n return `${asyncKeyword}(${parameters}) => ${valueExpression}`;\n }\n\n return `${asyncKeyword}(${parameters}) => {\\n${node.bodyStatements.map((statement) => ` ${statement}`).join(\"\\n\")}\\n return ${valueExpression};\\n }`;\n}\n\nfunction emitListParameters(node: Extract<JsxNodeIr, { kind: \"list\" }>): string {\n return [node.itemName, node.indexName, node.arrayName]\n .filter((name): name is string => name !== undefined)\n .join(\", \");\n}\n\nfunction emitPropsObject(\n props: ComponentPropIr[],\n children: JsxNodeIr[] = [],\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n asyncComponentNames: ReadonlySet<string>,\n dynamicAttributes: \"drop\" | \"emit\",\n contextProviderHelperName?: string,\n contextConsumerHelperName?: string,\n reactNodeRenderHelperName?: string,\n): string {\n const entries = props.map((prop) => {\n if (prop.kind === \"spread-prop\") {\n return `...(${prop.code})`;\n }\n\n if (prop.kind === \"render-prop\") {\n return `${emitPropName(prop.name)}: ${emitHtmlExpressionFromChildren(prop.children, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName)}`;\n }\n\n return `${emitPropName(prop.name)}: (${prop.code})`;\n });\n\n if (children.length > 0) {\n entries.push(\n `children: ${emitHtmlExpressionFromChildren(children, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName)}`,\n );\n }\n\n return `{ ${entries.join(\", \")} }`;\n}\n\nfunction emitComponentCallExpression(\n name: string,\n propsCode: string,\n asyncComponentNames: ReadonlySet<string>,\n): string {\n const call = `${name}(${propsCode})`;\n return asyncComponentNames.has(name) ? `(await ${call})` : call;\n}\n\nfunction isClientBoundaryPlaceholder(node: Extract<JsxNodeIr, { kind: \"component\" }>): boolean {\n return node.clientReference !== undefined && !isCompatClientReference(node);\n}\n\nfunction isCompatClientReference(node: Extract<JsxNodeIr, { kind: \"component\" }>): boolean {\n return node.clientReference !== undefined && /\\.(?:compat)\\.[cm]?[jt]sx?$/.test(node.clientReference.moduleId);\n}\n\nfunction clientBoundaryPlaceholder(node: Extract<JsxNodeIr, { kind: \"component\" }>): string {\n return `<!--mreact-client-boundary:${escapeHtml(node.name)}-->`;\n}\n\nfunction collectAsyncServerComponentNames(components: readonly ComponentIr[]): Set<string> {\n const names = new Set(\n components\n .filter((component) => component.async === true)\n .map((component) => component.name),\n );\n\n let changed = true;\n\n while (changed) {\n changed = false;\n\n for (const component of components) {\n if (\n !names.has(component.name) &&\n containsAsyncServerOperation(component.root, names)\n ) {\n names.add(component.name);\n changed = true;\n }\n }\n }\n\n return names;\n}\n\nfunction containsAsyncServerOperationInChildren(\n children: readonly JsxNodeIr[],\n asyncComponentNames: ReadonlySet<string>,\n): boolean {\n return children.some((child) => containsAsyncServerOperation(child, asyncComponentNames));\n}\n\nfunction containsAsyncServerOperation(\n node: JsxNodeIr,\n asyncComponentNames: ReadonlySet<string>,\n): boolean {\n if (node.kind === \"async-boundary\") {\n return true;\n }\n\n if (node.kind === \"component\") {\n return (\n asyncComponentNames.has(node.name) ||\n containsAsyncServerOperationInChildren(node.children, asyncComponentNames) ||\n node.props.some(\n (prop) =>\n prop.kind === \"render-prop\" &&\n containsAsyncServerOperationInChildren(prop.children, asyncComponentNames),\n )\n );\n }\n\n if (node.kind === \"conditional\") {\n return containsAsyncServerOperationInChildren(\n [...node.whenTrue, ...node.whenFalse],\n asyncComponentNames,\n );\n }\n\n if (node.kind === \"list\") {\n return containsAsyncServerOperationInChildren(node.children, asyncComponentNames);\n }\n\n if (node.kind === \"element\" || node.kind === \"fragment\") {\n return containsAsyncServerOperationInChildren(node.children, asyncComponentNames);\n }\n\n return false;\n}\n\nfunction emitPropName(name: string): string {\n return /^[A-Za-z_$][\\w$]*$/.test(name) ? name : JSON.stringify(name);\n}\n\nfunction allocateEscapeHelperName(ir: ModuleIr): string {\n return allocateHelperName(ir, \"_escapeHtml\");\n}\n\nfunction allocateHelperName(ir: ModuleIr, baseName: string): string {\n const reservedNames = new Set<string>(ir.moduleBindingNames);\n\n for (const component of ir.components) {\n reservedNames.add(component.name);\n\n for (const bindingName of component.bindingNames) {\n reservedNames.add(bindingName);\n }\n }\n\n let name = baseName;\n let index = 1;\n\n while (reservedNames.has(name)) {\n name = `${baseName}$${index}`;\n index += 1;\n }\n\n return name;\n}\n\nfunction usesContextProvider(ir: ModuleIr): boolean {\n return ir.components.some((component) => containsContextProvider(component.root));\n}\n\nfunction usesContextConsumer(ir: ModuleIr): boolean {\n return ir.components.some((component) => containsContextConsumer(component.root));\n}\n\nfunction usesReactNodeRender(ir: ModuleIr): boolean {\n return ir.components.some(\n (component) =>\n containsReactNodeRender(component.root) ||\n component.bodyStatements.some((statement) =>\n statement.includes(oxcServerStringReactNodeRenderHelperPlaceholder),\n ),\n );\n}\n\nfunction replaceOxcServerStringReactNodeRenderHelper(\n code: string,\n helperName: string | undefined,\n): string {\n return helperName === undefined\n ? code\n : code.replaceAll(oxcServerStringReactNodeRenderHelperPlaceholder, helperName);\n}\n\nfunction usesClientBoundary(ir: ModuleIr): boolean {\n return ir.components.some((component) => containsClientBoundary(component.root));\n}\n\nfunction emitClientBoundaryHelper(name: string): string {\n const propsHelperName = `${name}$hasNonSerializableProps`;\n\n return [\n `function ${propsHelperName}(value) {`,\n ` if (typeof value === \"function\" || typeof value === \"symbol\") return true;`,\n ` if (value === null || typeof value !== \"object\") return false;`,\n ` if (Array.isArray(value)) return value.some(${propsHelperName});`,\n ` for (const key of Object.keys(value)) {`,\n ` if (${propsHelperName}(value[key])) return true;`,\n ` }`,\n ` return false;`,\n `}`,\n `function ${name}(name, props) {`,\n ` const _name = String(name);`,\n ` const _escapedName = _name.replaceAll(\"&\", \"&\").replaceAll('\"', \""\").replaceAll(\"<\", \"<\").replaceAll(\">\", \">\");`,\n ` const _props = props ?? {};`,\n ` const _nonSerializable = ${propsHelperName}(_props);`,\n ` const _nonSerializableAttr = _nonSerializable ? ' data-mreact-client-boundary-nonserializable=\"true\"' : \"\";`,\n ` const _json = (JSON.stringify(_props) ?? \"{}\").replaceAll(\"<\", \"\\\\\\\\u003c\");`,\n ` return \\`<template data-mreact-client-boundary=\"\\${_escapedName}\"\\${_nonSerializableAttr}></template><script type=\"application/json\" data-mreact-client-boundary-props=\"\\${_escapedName}\">\\${_json}</script>\\`;`,\n `}`,\n ].join(\"\\n\");\n}\n\nfunction emitSpreadAttributesHelper(\n name: string,\n escapeHelperName: string,\n urlSafeHelperName: string,\n): string {\n const aliases = JSON.stringify({\n acceptCharset: \"accept-charset\",\n autoFocus: \"autofocus\",\n autoPlay: \"autoplay\",\n charSet: \"charset\",\n className: \"class\",\n colSpan: \"colspan\",\n contentEditable: \"contenteditable\",\n crossOrigin: \"crossorigin\",\n encType: \"enctype\",\n formAction: \"formaction\",\n frameBorder: \"frameborder\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\",\n maxLength: \"maxlength\",\n minLength: \"minlength\",\n noValidate: \"novalidate\",\n playsInline: \"playsinline\",\n readOnly: \"readonly\",\n rowSpan: \"rowspan\",\n spellCheck: \"spellcheck\",\n srcDoc: \"srcdoc\",\n srcSet: \"srcset\",\n tabIndex: \"tabindex\",\n useMap: \"usemap\",\n });\n const urlAttributes = JSON.stringify([\n \"href\",\n \"src\",\n \"action\",\n \"formaction\",\n \"xlink:href\",\n \"ping\",\n \"poster\",\n \"background\",\n \"manifest\",\n ]);\n const dangerousAttributes = JSON.stringify([\"srcdoc\"]);\n\n return [\n `const ${name}$aliases = ${aliases};`,\n `const ${name}$urlAttributes = new Set(${urlAttributes});`,\n `const ${name}$dangerousAttributes = new Set(${dangerousAttributes});`,\n `function ${name}$style(value) {`,\n ` if (value == null || value === false) return \"\";`,\n ` if (typeof value === \"string\") return value;`,\n ` let _style = \"\";`,\n ` for (const _styleName of Object.keys(value)) {`,\n ` const _styleValue = value[_styleName];`,\n ` if (_styleValue == null || _styleValue === false) continue;`,\n ` const _cssName = String(_styleName).startsWith(\"--\") ? String(_styleName) : String(_styleName).replace(/[A-Z]/g, (_char) => \"-\" + _char.toLowerCase());`,\n ` _style += (_style === \"\" ? \"\" : \";\") + _cssName + \":\" + (_styleValue === true ? \"\" : String(_styleValue));`,\n ` }`,\n ` return _style;`,\n `}`,\n `function ${name}(tagName, props) {`,\n ` if (props == null || props === false) return \"\";`,\n ` let _out = \"\";`,\n ` for (const _rawName of Object.keys(props)) {`,\n ` let _value = props[_rawName];`,\n ` if (_value == null || _value === false) continue;`,\n ` if (_rawName === \"key\" || _rawName === \"ref\" || _rawName === \"children\") continue;`,\n ` if (/^on[A-Za-z]/.test(_rawName)) continue;`,\n ` let _name = tagName === \"input\" && _rawName === \"defaultValue\" ? \"value\" : tagName === \"input\" && _rawName === \"defaultChecked\" ? \"checked\" : (${name}$aliases[_rawName] ?? _rawName);`,\n ` if (!/^[A-Za-z_:][A-Za-z0-9:_.-]*$/.test(_name)) continue;`,\n ` if (_name === \"style\") {`,\n ` const _style = ${name}$style(_value);`,\n ` if (_style !== \"\") _out += \" style=\\\\\"\" + ${escapeHelperName}(_style) + \"\\\\\"\";`,\n ` continue;`,\n ` }`,\n ` if (${name}$dangerousAttributes.has(_name)) {`,\n ` if (typeof _value === \"object\" && _value !== null && typeof _value.__html === \"string\") {`,\n ` _out += \" \" + _name + \"=\\\\\"\" + ${escapeHelperName}(_value.__html) + \"\\\\\"\";`,\n ` }`,\n ` continue;`,\n ` }`,\n ` if (${name}$urlAttributes.has(_name)) {`,\n ` _value = ${urlSafeHelperName}(_name, _value === true ? \"\" : _value);`,\n ` if (_value === undefined) continue;`,\n ` }`,\n ` _out += \" \" + _name + \"=\\\\\"\" + ${escapeHelperName}(_value === true ? \"\" : _value) + \"\\\\\"\";`,\n ` }`,\n ` return _out;`,\n `}`,\n ].join(\"\\n\");\n}\n\nfunction containsClientBoundary(node: JsxNodeIr): boolean {\n if (node.kind === \"component\" && isClientBoundaryPlaceholder(node)) {\n return true;\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse].some(containsClientBoundary);\n }\n\n if (node.kind === \"list\") {\n return node.children.some(containsClientBoundary);\n }\n\n if (node.kind === \"fragment\" || node.kind === \"element\") {\n return node.children.some(containsClientBoundary);\n }\n\n if (node.kind === \"component\") {\n return (\n node.children.some(containsClientBoundary) ||\n node.props.some(\n (prop) => prop.kind === \"render-prop\" && prop.children.some(containsClientBoundary),\n )\n );\n }\n\n if (node.kind === \"async-boundary\") {\n return (\n node.children.some(containsClientBoundary) ||\n node.placeholderChildren?.some(containsClientBoundary) === true ||\n node.catchChildren?.some(containsClientBoundary) === true\n );\n }\n\n return false;\n}\n\nfunction containsReactNodeRender(node: JsxNodeIr): boolean {\n if (node.kind === \"expr\") {\n return node.renderMode === \"react-node\";\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse].some(containsReactNodeRender);\n }\n\n if (node.kind === \"list\") {\n return node.children.some(containsReactNodeRender);\n }\n\n if (node.kind === \"fragment\" || node.kind === \"element\") {\n return node.children.some(containsReactNodeRender);\n }\n\n if (node.kind === \"component\") {\n if (node.runtime === \"compat\" && !isClientBoundaryPlaceholder(node)) {\n return true;\n }\n\n return (\n node.children.some(containsReactNodeRender) ||\n node.props.some(\n (prop) => prop.kind === \"render-prop\" && prop.children.some(containsReactNodeRender),\n )\n );\n }\n\n if (node.kind === \"async-boundary\") {\n return (\n node.children.some(containsReactNodeRender) ||\n node.placeholderChildren?.some(containsReactNodeRender) === true ||\n node.catchChildren?.some(containsReactNodeRender) === true\n );\n }\n\n return false;\n}\n\nfunction containsContextProvider(node: JsxNodeIr): boolean {\n if (node.kind === \"component\" && node.name.endsWith(\".Provider\")) {\n return true;\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse].some(containsContextProvider);\n }\n\n if (node.kind === \"list\") {\n return node.children.some(containsContextProvider);\n }\n\n if (node.kind === \"fragment\" || node.kind === \"element\") {\n return node.children.some(containsContextProvider);\n }\n\n if (node.kind === \"component\") {\n return (\n node.children.some(containsContextProvider) ||\n node.props.some(\n (prop) => prop.kind === \"render-prop\" && prop.children.some(containsContextProvider),\n )\n );\n }\n\n return false;\n}\n\nfunction containsContextConsumer(node: JsxNodeIr): boolean {\n if (node.kind === \"component\" && node.name.endsWith(\".Consumer\")) {\n return true;\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse].some(containsContextConsumer);\n }\n\n if (node.kind === \"list\") {\n return node.children.some(containsContextConsumer);\n }\n\n if (node.kind === \"fragment\" || node.kind === \"element\") {\n return node.children.some(containsContextConsumer);\n }\n\n if (node.kind === \"component\") {\n return (\n node.children.some(containsContextConsumer) ||\n node.props.some(\n (prop) => prop.kind === \"render-prop\" && prop.children.some(containsContextConsumer),\n )\n );\n }\n\n return false;\n}\n\nfunction findComponentPropCode(\n props: readonly ComponentPropIr[],\n name: string,\n): string | undefined {\n for (const prop of props) {\n if (prop.kind === \"prop\" && prop.name === name) {\n return prop.code;\n }\n }\n\n return undefined;\n}\n\nfunction findComponentRenderProp(\n props: readonly ComponentPropIr[],\n name: string,\n): Extract<ComponentPropIr, { kind: \"render-prop\" }> | undefined {\n for (const prop of props) {\n if (prop.kind === \"render-prop\" && prop.name === name) {\n return prop;\n }\n }\n\n return undefined;\n}\n\nfunction stringLiteral(value: string): string {\n return JSON.stringify(value);\n}\n"]}
|