@reckona/mreact-compiler 0.0.122 → 0.0.124
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-server-shared.d.ts +1 -0
- package/dist/emit-server-shared.d.ts.map +1 -1
- package/dist/emit-server-shared.js +19 -0
- package/dist/emit-server-shared.js.map +1 -1
- package/dist/emit-server-stream.d.ts.map +1 -1
- package/dist/emit-server-stream.js +10 -8
- package/dist/emit-server-stream.js.map +1 -1
- package/dist/emit-server.d.ts.map +1 -1
- package/dist/emit-server.js +12 -7
- package/dist/emit-server.js.map +1 -1
- package/dist/oxc-runtime-emit.d.ts.map +1 -1
- package/dist/oxc-runtime-emit.js +4 -0
- package/dist/oxc-runtime-emit.js.map +1 -1
- package/package.json +2 -2
- package/src/emit-server-shared.ts +21 -0
- package/src/emit-server-stream.ts +5 -3
- package/src/emit-server.ts +9 -3
- package/src/oxc-runtime-emit.ts +5 -0
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 { AttributeIr, ComponentPropIr, ComponentIr, JsxNodeIr, ModuleIr } from \"./ir.js\";\nimport type { RuntimeImport, ServerEscapeOptions } from \"./types.js\";\nimport { emitEscapeHtmlHelper } from \"./emit-escape-helper.js\";\nimport { createCodeBuilder } from \"./emit-code-builder.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 {\n emitOxcCompatObjectChildren,\n oxcServerStringReactNodeRenderHelperPlaceholder,\n} 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(ir: ModuleIr, options: EmitServerOptions = {}): EmitResult {\n const escapeHelperName = allocateEscapeHelperName(ir);\n const escapeBatchHelperName =\n options.escape === undefined ? undefined : 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 const code = createCodeBuilder();\n code.section(userImports);\n code.section(escapeImport);\n code.section(contextImport);\n code.section(moduleStatements);\n code.section(helper);\n code.section(urlSafeBlock);\n code.section(clientBoundaryBlock);\n code.section(spreadAttributesBlock);\n code.section(components);\n\n return {\n code: code.toString(),\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 ? undefined : \"renderContextProviderToString\",\n contextConsumerHelperName === undefined ? undefined : \"renderContextConsumerToString\",\n ].filter((specifier): specifier is string => specifier !== undefined);\n\n return specifiers.length === 0 ? [] : [{ 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(\n (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 conditionCode = node.conditionValueName ?? node.conditionCode;\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 let statements: string[];\n if (whenFalseStatements.length === 0) {\n statements = [\n `if (${conditionCode}) {`,\n ...whenTrueStatements.map((statement) => ` ${statement}`),\n `}`,\n ];\n } else if (whenTrueStatements.length === 0) {\n statements = [\n `if (!(${conditionCode})) {`,\n ...whenFalseStatements.map((statement) => ` ${statement}`),\n `}`,\n ];\n } else {\n statements = [\n `if (${conditionCode}) {`,\n ...whenTrueStatements.map((statement) => ` ${statement}`),\n `} else {`,\n ...whenFalseStatements.map((statement) => ` ${statement}`),\n `}`,\n ];\n }\n\n if (node.conditionValueName === undefined) {\n return statements;\n }\n\n return [\n `{`,\n ` const ${node.conditionValueName} = (${node.conditionCode});`,\n ...statements.map((statement) => ` ${statement}`),\n `}`,\n ];\n }\n\n if (node.kind === \"list\") {\n const isAsync = containsAsyncServerOperationInChildren(node.children, asyncComponentNames);\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 = 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 const boundaryProps = emitPropsObject(\n node.props,\n [],\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n const fallbackHtml = shouldRenderClientBoundaryFallback(node)\n ? emitComponentCallExpression(node.name, boundaryProps, asyncComponentNames)\n : emitHtmlExpressionFromChildren(\n node.children,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n return [\n `${outVar} += ${helperName}(${stringLiteral(node.name)}, ${boundaryProps}, ${fallbackHtml});`,\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}, ${emitCompatRuntimePropsObject(\n node.props,\n node.children,\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 =\n node.tagName === \"select\" ? attributeScan.formValueAttributeCode : 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 const whenTrue = emitHtmlExpressionFromChildren(\n node.whenTrue,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n const whenFalse = emitHtmlExpressionFromChildren(\n node.whenFalse,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n\n return [\n node.conditionValueName === undefined\n ? `((${node.conditionCode}) ? ${whenTrue} : ${whenFalse})`\n : `(() => { const ${node.conditionValueName} = (${node.conditionCode}); return ${node.conditionValueName} ? ${whenTrue} : ${whenFalse}; })()`,\n ];\n }\n\n if (node.kind === \"list\") {\n const isAsync = containsAsyncServerOperationInChildren(node.children, asyncComponentNames);\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 [\n emitSyncListIife(\n node,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\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 [],\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n )}, ${emitHtmlExpressionFromChildren(node.children, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName)})`,\n ];\n }\n\n return [stringLiteral(clientBoundaryPlaceholder(node))];\n }\n\n if (node.runtime === \"compat\" && reactNodeRenderHelperName !== undefined) {\n return [\n `${reactNodeRenderHelperName}(${node.name}, ${emitCompatRuntimePropsObject(\n node.props,\n node.children,\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 =\n node.tagName === \"select\" ? attributeScan.formValueAttributeCode : 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 [\n emitDynamicStyleAttributeExpression(attr.code, escapeHelperName, escapeBatchHelperName),\n ];\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 if (dynamicAttributes === \"emit\" && attrs.some((attr) => attr.kind === \"spread-attr\")) {\n return [emitMergedSpreadAttributeExpression(tagName, attrs, attributeScan)];\n }\n\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\nfunction emitMergedSpreadAttributeExpression(\n tagName: string,\n attrs: readonly AttributeIr[],\n attributeScan: ElementAttributeScan,\n): string {\n const statements = attrs.flatMap((attr): string[] => {\n if (\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 return [];\n }\n\n if (attr.kind === \"spread-attr\") {\n return [`Object.assign(_props, (${attr.code}) ?? {});`];\n }\n\n if (attr.kind === \"event\" || attr.name === \"key\" || attr.name === \"dangerouslySetInnerHTML\") {\n return [];\n }\n\n const valueCode = attr.kind === \"static-attr\" ? stringLiteral(attr.value) : `(${attr.code})`;\n return [`_props[${stringLiteral(attr.name)}] = ${valueCode};`];\n });\n\n return `(() => { const _props = {}; ${statements.join(\" \")} return ${currentSpreadAttributesHelperName}(${stringLiteral(tagName)}, _props); })()`;\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 ((tagName === \"textarea\" || tagName === \"select\") && attr.name === \"defaultValue\") {\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 =\n 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(\n (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(\n (attr) => attr.kind !== \"spread-attr\" && attr.name === \"value\",\n );\n if (valueAttr !== undefined && valueAttr.kind !== \"event\" && valueAttr.kind !== \"spread-attr\") {\n return valueAttr.kind === \"static-attr\"\n ? stringLiteral(valueAttr.value)\n : `(${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) =>\n 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 !(\n child.kind === \"expr\" &&\n child.renderMode !== \"html\" &&\n child.renderMode !== \"react-node\"\n ),\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 = node.indexName === undefined ? \"\" : ` const ${node.indexName} = _i;`;\n const arrayBinding = 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(node.children, asyncComponentNames)\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 emitCompatRuntimePropsObject(\n props: ComponentPropIr[],\n children: JsxNodeIr[] = [],\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)}: ${emitOxcCompatObjectChildren(prop.children)}`;\n }\n\n return `${emitPropName(prop.name)}: (${prop.code})`;\n });\n\n if (children.length > 0) {\n entries.push(`children: ${emitOxcCompatObjectChildren(children)}`);\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 emitRenderableHtmlExpression(asyncComponentNames.has(name) ? `(await ${call})` : call);\n}\n\nfunction emitRenderableHtmlExpression(code: string): string {\n return `((_value) => _value == null || typeof _value === \"boolean\" ? \"\" : _value)(${code})`;\n}\n\nfunction isClientBoundaryPlaceholder(node: Extract<JsxNodeIr, { kind: \"component\" }>): boolean {\n return node.clientReference !== undefined;\n}\n\nfunction shouldRenderClientBoundaryFallback(\n node: Extract<JsxNodeIr, { kind: \"component\" }>,\n): boolean {\n return node.clientReference?.ssrFallback === true;\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.filter((component) => component.async === true).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 (!names.has(component.name) && containsAsyncServerOperation(component.root, names)) {\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, childrenHtml = \"\") {`,\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>\\${childrenHtml}<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 { AttributeIr, ComponentPropIr, ComponentIr, JsxNodeIr, ModuleIr } from \"./ir.js\";\nimport type { RuntimeImport, ServerEscapeOptions } from \"./types.js\";\nimport { emitEscapeHtmlHelper } from \"./emit-escape-helper.js\";\nimport { createCodeBuilder } from \"./emit-code-builder.js\";\nimport { escapeHtmlAttribute as escapeHtml } from \"@reckona/mreact-shared/html-escape\";\nimport {\n htmlAttributeName,\n isDangerousHtmlAttribute,\n isStaticUrlValueUnsafe,\n isUrlAttribute,\n isVoidHtmlElement,\n parseStaticStyleObjectLiteral,\n parseStyleLiteralValue,\n simpleSideEffectFreeExpression,\n} from \"./emit-server-shared.js\";\nimport {\n emitOxcCompatObjectChildren,\n oxcServerStringReactNodeRenderHelperPlaceholder,\n} 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(ir: ModuleIr, options: EmitServerOptions = {}): EmitResult {\n const escapeHelperName = allocateEscapeHelperName(ir);\n const escapeBatchHelperName =\n options.escape === undefined ? undefined : 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 const code = createCodeBuilder();\n code.section(userImports);\n code.section(escapeImport);\n code.section(contextImport);\n code.section(moduleStatements);\n code.section(helper);\n code.section(urlSafeBlock);\n code.section(clientBoundaryBlock);\n code.section(spreadAttributesBlock);\n code.section(components);\n\n return {\n code: code.toString(),\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 ? undefined : \"renderContextProviderToString\",\n contextConsumerHelperName === undefined ? undefined : \"renderContextConsumerToString\",\n ].filter((specifier): specifier is string => specifier !== undefined);\n\n return specifiers.length === 0 ? [] : [{ 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(\n (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 conditionCode = node.conditionValueName ?? node.conditionCode;\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 let statements: string[];\n if (whenFalseStatements.length === 0) {\n statements = [\n `if (${conditionCode}) {`,\n ...whenTrueStatements.map((statement) => ` ${statement}`),\n `}`,\n ];\n } else if (whenTrueStatements.length === 0) {\n statements = [\n `if (!(${conditionCode})) {`,\n ...whenFalseStatements.map((statement) => ` ${statement}`),\n `}`,\n ];\n } else {\n statements = [\n `if (${conditionCode}) {`,\n ...whenTrueStatements.map((statement) => ` ${statement}`),\n `} else {`,\n ...whenFalseStatements.map((statement) => ` ${statement}`),\n `}`,\n ];\n }\n\n if (node.conditionValueName === undefined) {\n return statements;\n }\n\n return [\n `{`,\n ` const ${node.conditionValueName} = (${node.conditionCode});`,\n ...statements.map((statement) => ` ${statement}`),\n `}`,\n ];\n }\n\n if (node.kind === \"list\") {\n const isAsync = containsAsyncServerOperationInChildren(node.children, asyncComponentNames);\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 = 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 const boundaryProps = emitPropsObject(\n node.props,\n [],\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n const fallbackHtml = shouldRenderClientBoundaryFallback(node)\n ? emitComponentCallExpression(node.name, boundaryProps, asyncComponentNames)\n : emitHtmlExpressionFromChildren(\n node.children,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n return [\n `${outVar} += ${helperName}(${stringLiteral(node.name)}, ${boundaryProps}, ${fallbackHtml});`,\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}, ${emitCompatRuntimePropsObject(\n node.props,\n node.children,\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 if (isVoidHtmlElement(node.tagName)) {\n return statements;\n }\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 =\n node.tagName === \"select\" ? attributeScan.formValueAttributeCode : 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 const whenTrue = emitHtmlExpressionFromChildren(\n node.whenTrue,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n const whenFalse = emitHtmlExpressionFromChildren(\n node.whenFalse,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n );\n\n return [\n node.conditionValueName === undefined\n ? `((${node.conditionCode}) ? ${whenTrue} : ${whenFalse})`\n : `(() => { const ${node.conditionValueName} = (${node.conditionCode}); return ${node.conditionValueName} ? ${whenTrue} : ${whenFalse}; })()`,\n ];\n }\n\n if (node.kind === \"list\") {\n const isAsync = containsAsyncServerOperationInChildren(node.children, asyncComponentNames);\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 [\n emitSyncListIife(\n node,\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n ),\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 [],\n escapeHelperName,\n escapeBatchHelperName,\n asyncComponentNames,\n dynamicAttributes,\n contextProviderHelperName,\n contextConsumerHelperName,\n reactNodeRenderHelperName,\n )}, ${emitHtmlExpressionFromChildren(node.children, escapeHelperName, escapeBatchHelperName, asyncComponentNames, dynamicAttributes, contextProviderHelperName, contextConsumerHelperName, reactNodeRenderHelperName)})`,\n ];\n }\n\n return [stringLiteral(clientBoundaryPlaceholder(node))];\n }\n\n if (node.runtime === \"compat\" && reactNodeRenderHelperName !== undefined) {\n return [\n `${reactNodeRenderHelperName}(${node.name}, ${emitCompatRuntimePropsObject(\n node.props,\n node.children,\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 =\n node.tagName === \"select\" ? attributeScan.formValueAttributeCode : undefined;\n const selectedAttributePart = collectOptionSelectedAttributePart(node, selectedValueCode);\n const dangerousInnerHtml = emitDangerouslySetInnerHtmlExpression(node.attributes);\n const childrenParts = isVoidHtmlElement(node.tagName)\n ? []\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 ...(isVoidHtmlElement(node.tagName) ? [] : [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 [\n emitDynamicStyleAttributeExpression(attr.code, escapeHelperName, escapeBatchHelperName),\n ];\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 if (dynamicAttributes === \"emit\" && attrs.some((attr) => attr.kind === \"spread-attr\")) {\n return [emitMergedSpreadAttributeExpression(tagName, attrs, attributeScan)];\n }\n\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\nfunction emitMergedSpreadAttributeExpression(\n tagName: string,\n attrs: readonly AttributeIr[],\n attributeScan: ElementAttributeScan,\n): string {\n const statements = attrs.flatMap((attr): string[] => {\n if (\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 return [];\n }\n\n if (attr.kind === \"spread-attr\") {\n return [`Object.assign(_props, (${attr.code}) ?? {});`];\n }\n\n if (attr.kind === \"event\" || attr.name === \"key\" || attr.name === \"dangerouslySetInnerHTML\") {\n return [];\n }\n\n const valueCode = attr.kind === \"static-attr\" ? stringLiteral(attr.value) : `(${attr.code})`;\n return [`_props[${stringLiteral(attr.name)}] = ${valueCode};`];\n });\n\n return `(() => { const _props = {}; ${statements.join(\" \")} return ${currentSpreadAttributesHelperName}(${stringLiteral(tagName)}, _props); })()`;\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 ((tagName === \"textarea\" || tagName === \"select\") && attr.name === \"defaultValue\") {\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 =\n 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(\n (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(\n (attr) => attr.kind !== \"spread-attr\" && attr.name === \"value\",\n );\n if (valueAttr !== undefined && valueAttr.kind !== \"event\" && valueAttr.kind !== \"spread-attr\") {\n return valueAttr.kind === \"static-attr\"\n ? stringLiteral(valueAttr.value)\n : `(${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) =>\n 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 !(\n child.kind === \"expr\" &&\n child.renderMode !== \"html\" &&\n child.renderMode !== \"react-node\"\n ),\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 = node.indexName === undefined ? \"\" : ` const ${node.indexName} = _i;`;\n const arrayBinding = 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(node.children, asyncComponentNames)\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 emitCompatRuntimePropsObject(\n props: ComponentPropIr[],\n children: JsxNodeIr[] = [],\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)}: ${emitOxcCompatObjectChildren(prop.children)}`;\n }\n\n return `${emitPropName(prop.name)}: (${prop.code})`;\n });\n\n if (children.length > 0) {\n entries.push(`children: ${emitOxcCompatObjectChildren(children)}`);\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 emitRenderableHtmlExpression(asyncComponentNames.has(name) ? `(await ${call})` : call);\n}\n\nfunction emitRenderableHtmlExpression(code: string): string {\n return `((_value) => _value == null || typeof _value === \"boolean\" ? \"\" : _value)(${code})`;\n}\n\nfunction isClientBoundaryPlaceholder(node: Extract<JsxNodeIr, { kind: \"component\" }>): boolean {\n return node.clientReference !== undefined;\n}\n\nfunction shouldRenderClientBoundaryFallback(\n node: Extract<JsxNodeIr, { kind: \"component\" }>,\n): boolean {\n return node.clientReference?.ssrFallback === true;\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.filter((component) => component.async === true).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 (!names.has(component.name) && containsAsyncServerOperation(component.root, names)) {\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, childrenHtml = \"\") {`,\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>\\${childrenHtml}<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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oxc-runtime-emit.d.ts","sourceRoot":"","sources":["../src/oxc-runtime-emit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgC,SAAS,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"oxc-runtime-emit.d.ts","sourceRoot":"","sources":["../src/oxc-runtime-emit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgC,SAAS,EAAE,MAAM,SAAS,CAAC;AAIvE,eAAO,MAAM,+CAA+C,oCACzB,CAAC;AAEpC,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,SAAS,SAAS,EAAE,GAAG,MAAM,CAMlF;AAwID,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,SAAS,SAAS,EAAE,GAAG,MAAM,CAUlF"}
|
package/dist/oxc-runtime-emit.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isVoidHtmlElement } from "./emit-server-shared.js";
|
|
1
2
|
import { escapeHtmlAttribute } from "@reckona/mreact-shared/html-escape";
|
|
2
3
|
export const oxcServerStringReactNodeRenderHelperPlaceholder = "__mreactRenderReactNodeToString";
|
|
3
4
|
export function emitOxcServerStringChildren(children) {
|
|
@@ -41,6 +42,9 @@ function emitOxcServerStringNode(node) {
|
|
|
41
42
|
const open = attrs === ""
|
|
42
43
|
? JSON.stringify(`<${node.tagName}>`)
|
|
43
44
|
: `${JSON.stringify(`<${node.tagName}`)} + ${attrs} + ">"`;
|
|
45
|
+
if (isVoidHtmlElement(node.tagName)) {
|
|
46
|
+
return open;
|
|
47
|
+
}
|
|
44
48
|
return `${open} + ${emitOxcServerStringChildren(node.children)} + ${JSON.stringify(`</${node.tagName}>`)}`;
|
|
45
49
|
}
|
|
46
50
|
function emitOxcServerComponentProps(props, children) {
|