@reckona/mreact-compiler 0.0.160 → 0.0.162

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.
Files changed (58) hide show
  1. package/dist/boundary-graph.d.ts +13 -0
  2. package/dist/boundary-graph.d.ts.map +1 -1
  3. package/dist/boundary-graph.js +1 -0
  4. package/dist/boundary-graph.js.map +1 -1
  5. package/dist/compiler-module-context.d.ts +2 -0
  6. package/dist/compiler-module-context.d.ts.map +1 -1
  7. package/dist/compiler-module-context.js +1 -0
  8. package/dist/compiler-module-context.js.map +1 -1
  9. package/dist/diagnostics.d.ts +1 -0
  10. package/dist/diagnostics.d.ts.map +1 -1
  11. package/dist/diagnostics.js +1 -0
  12. package/dist/diagnostics.js.map +1 -1
  13. package/dist/emit-server-stream.d.ts.map +1 -1
  14. package/dist/emit-server-stream.js +70 -4
  15. package/dist/emit-server-stream.js.map +1 -1
  16. package/dist/index.d.ts +2 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +1 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/internal.d.ts +35 -0
  21. package/dist/internal.d.ts.map +1 -1
  22. package/dist/internal.js +24 -15
  23. package/dist/internal.js.map +1 -1
  24. package/dist/ir.d.ts +21 -0
  25. package/dist/ir.d.ts.map +1 -1
  26. package/dist/ir.js.map +1 -1
  27. package/dist/oxc-compat-create-element.d.ts +2 -0
  28. package/dist/oxc-compat-create-element.d.ts.map +1 -1
  29. package/dist/oxc-compat-create-element.js +93 -18
  30. package/dist/oxc-compat-create-element.js.map +1 -1
  31. package/dist/oxc-transform.d.ts +1 -0
  32. package/dist/oxc-transform.d.ts.map +1 -1
  33. package/dist/oxc-transform.js +1 -0
  34. package/dist/oxc-transform.js.map +1 -1
  35. package/dist/oxc.d.ts +4 -0
  36. package/dist/oxc.d.ts.map +1 -1
  37. package/dist/oxc.js +180 -21
  38. package/dist/oxc.js.map +1 -1
  39. package/dist/transform.d.ts +2 -0
  40. package/dist/transform.d.ts.map +1 -1
  41. package/dist/transform.js +2 -0
  42. package/dist/transform.js.map +1 -1
  43. package/dist/types.d.ts +20 -0
  44. package/dist/types.d.ts.map +1 -1
  45. package/dist/types.js.map +1 -1
  46. package/package.json +2 -2
  47. package/src/boundary-graph.ts +13 -0
  48. package/src/compiler-module-context.ts +2 -0
  49. package/src/diagnostics.ts +1 -0
  50. package/src/emit-server-stream.ts +103 -8
  51. package/src/index.ts +2 -0
  52. package/src/internal.ts +35 -15
  53. package/src/ir.ts +21 -0
  54. package/src/oxc-compat-create-element.ts +132 -25
  55. package/src/oxc-transform.ts +1 -0
  56. package/src/oxc.ts +330 -12
  57. package/src/transform.ts +2 -0
  58. package/src/types.ts +34 -0
@@ -1 +1 @@
1
- {"version":3,"file":"emit-server-stream.js","sourceRoot":"","sources":["../src/emit-server-stream.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n AsyncBoundaryIr,\n AttributeIr,\n ComponentPropIr,\n ComponentIr,\n JsxNodeIr,\n ModuleIr,\n} from \"./ir.js\";\nimport type { RuntimeImport, ServerBootstrapMode, ServerEscapeOptions } from \"./types.js\";\nimport { emitEscapeHtmlHelper } from \"./emit-escape-helper.js\";\nimport { createCodeBuilder } from \"./emit-code-builder.js\";\nimport {\n emitAsyncBoundary as emitLoweredAsyncBoundary,\n emitOutOfOrderBoundary as emitLoweredOutOfOrderBoundary,\n emitReactSuspenseBoundary as emitLoweredReactSuspenseBoundary,\n emitReactSuspenseOutOfOrderBoundary as emitLoweredReactSuspenseOutOfOrderBoundary,\n} from \"./emit-boundary-lowering.js\";\nimport { escapeHtmlAttribute as escapeHtml } from \"@reckona/mreact-shared/html-escape\";\nimport {\n htmlAttributeName,\n isBooleanishStringAttribute,\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 setOxcServerStringUrlSafeHelperName,\n} from \"./oxc-runtime-emit.js\";\n\nexport interface EmitServerStreamResult {\n code: string;\n imports: RuntimeImport[];\n}\n\nexport interface EmitServerStreamOptions {\n dynamicAttributes?: \"drop\" | \"emit\";\n serverBootstrap?: ServerBootstrapMode;\n serverBootstrapNonce?: string;\n serverBootstrapSrc?: string;\n serverHydration?: boolean;\n serverAwaitHydration?: boolean;\n escape?: ServerEscapeOptions | undefined;\n reactSuspenseRevealScriptSrc?: string;\n}\n\nlet currentUrlSafeHelperName: string = \"_urlAttrSafe\";\nlet currentClientBoundaryHelperName: string | undefined;\nlet currentSpreadAttributesHelperName: string = \"_renderSpreadAttributes\";\nlet currentStreamNodeHelperName: string = \"_renderStreamNode\";\nlet currentAsyncBoundaryHelperName: string = \"_renderAsyncBoundary\";\nlet currentOutOfOrderBoundaryHelperName: string = \"_renderOutOfOrderBoundary\";\nlet currentReactSuspenseBoundaryHelperName: string = \"_renderReactSuspenseBoundary\";\nlet currentReactSuspenseOutOfOrderBoundaryHelperName: string =\n \"_renderReactSuspenseOutOfOrderBoundary\";\nlet currentCompatRenderToStringHelperName: string = \"_renderCompatToString\";\nlet currentPropChildrenCollectState: CollectHtmlState | undefined;\n\nexport function emitServerStream(\n ir: ModuleIr,\n options: EmitServerStreamOptions = {},\n): EmitServerStreamResult {\n const serverBootstrap = options.serverBootstrap ?? \"none\";\n const escapeHelperName = allocateHelperName(ir, \"_escapeHtml\");\n const escapeBatchHelperName =\n options.escape === undefined ? undefined : allocateHelperName(ir, \"_escapeHtmlBatch\");\n const asyncBoundaryHelperName = allocateHelperName(ir, \"_renderAsyncBoundary\");\n const outOfOrderBoundaryHelperName = allocateHelperName(ir, \"_renderOutOfOrderBoundary\");\n const reorderScriptHelperName = allocateHelperName(ir, \"_renderOutOfOrderReorderScript\");\n const reactSuspenseBoundaryHelperName = allocateHelperName(ir, \"_renderReactSuspenseBoundary\");\n const reactSuspenseOutOfOrderBoundaryHelperName = allocateHelperName(\n ir,\n \"_renderReactSuspenseOutOfOrderBoundary\",\n );\n const compatRenderToStringHelperName = allocateHelperName(ir, \"_renderCompatToString\");\n const streamNodeHelperName = allocateHelperName(ir, \"_renderStreamNode\");\n const clientBoundaryHelperName = usesClientBoundary(ir, options.serverHydration === true)\n ? allocateHelperName(ir, \"_renderClientBoundary\")\n : undefined;\n const spreadAttributesHelperName = allocateHelperName(ir, \"_renderSpreadAttributes\");\n const urlSafeHelperName = allocateHelperName(ir, \"_urlAttrSafe\");\n currentUrlSafeHelperName = urlSafeHelperName;\n setOxcServerStringUrlSafeHelperName(urlSafeHelperName);\n currentClientBoundaryHelperName = clientBoundaryHelperName;\n currentSpreadAttributesHelperName = spreadAttributesHelperName;\n currentStreamNodeHelperName = streamNodeHelperName;\n currentAsyncBoundaryHelperName = asyncBoundaryHelperName;\n currentOutOfOrderBoundaryHelperName = outOfOrderBoundaryHelperName;\n currentReactSuspenseBoundaryHelperName = reactSuspenseBoundaryHelperName;\n currentReactSuspenseOutOfOrderBoundaryHelperName = reactSuspenseOutOfOrderBoundaryHelperName;\n currentCompatRenderToStringHelperName = compatRenderToStringHelperName;\n const helper = emitEscapeHtmlHelper(escapeHelperName);\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 components = ir.components\n .map((component) =>\n emitComponent(\n component,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reorderScriptHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n compatRenderToStringHelperName,\n {\n serverBootstrap,\n ...(options.serverBootstrapNonce === undefined\n ? {}\n : { serverBootstrapNonce: options.serverBootstrapNonce }),\n ...(options.serverBootstrapSrc === undefined\n ? {}\n : { serverBootstrapSrc: options.serverBootstrapSrc }),\n ...(options.serverHydration === undefined\n ? {}\n : { serverHydration: options.serverHydration }),\n ...(options.serverAwaitHydration === undefined\n ? {}\n : { serverAwaitHydration: options.serverAwaitHydration }),\n ...(options.reactSuspenseRevealScriptSrc === undefined\n ? {}\n : { reactSuspenseRevealScriptSrc: options.reactSuspenseRevealScriptSrc }),\n dynamicAttributes: options.dynamicAttributes ?? \"emit\",\n ...(escapeBatchHelperName === undefined ? {} : { escapeBatchHelperName }),\n },\n ),\n )\n .join(\"\\n\\n\");\n // Emit batch escape import only when the helper is actually referenced\n // (issue 048: dead-import elimination).\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 imports = collectImports(ir, serverBootstrap);\n const importAliases: Record<string, string> = {\n renderAsyncBoundary: asyncBoundaryHelperName,\n renderOutOfOrderBoundary: outOfOrderBoundaryHelperName,\n renderOutOfOrderReorderScript: reorderScriptHelperName,\n renderReactSuspenseBoundary: reactSuspenseBoundaryHelperName,\n renderReactSuspenseOutOfOrderBoundary: reactSuspenseOutOfOrderBoundaryHelperName,\n renderToString: compatRenderToStringHelperName,\n };\n const importLine = imports\n .map(\n (runtimeImport) =>\n `import { ${runtimeImport.specifiers\n .map((specifier) => `${specifier} as ${importAliases[specifier]}`)\n .join(\", \")} } from \"${runtimeImport.source}\";`,\n )\n .join(\"\\n\");\n const userImports = emitUserImports(ir);\n const moduleStatements = emitModuleStatements(ir);\n const importsBlock = [importLine, escapeImport, userImports, moduleStatements]\n .filter(Boolean)\n .join(\"\\n\");\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 const streamNodeBlock = components.includes(streamNodeHelperName)\n ? emitStreamNodeHelper(streamNodeHelperName)\n : \"\";\n const code = createCodeBuilder();\n code.section(importsBlock);\n code.section(helper);\n code.section(urlSafeBlock);\n code.section(clientBoundaryBlock);\n code.section(spreadAttributesBlock);\n code.section(streamNodeBlock);\n code.section(components);\n\n return {\n code: code.toString(),\n imports,\n };\n}\n\nfunction emitUserImports(ir: ModuleIr): string {\n return ir.components.length === 0 ? \"\" : ir.userImports.join(\"\\n\");\n}\n\nfunction emitModuleStatements(ir: ModuleIr): string {\n return ir.components.length === 0 ? \"\" : ir.moduleStatements.join(\"\\n\");\n}\n\nfunction collectImports(ir: ModuleIr, serverBootstrap: ServerBootstrapMode): RuntimeImport[] {\n const serverSpecifiers = [\n ...(hasInOrderAsyncBoundary(ir) ? [\"renderAsyncBoundary\"] : []),\n ...(hasOutOfOrderAsyncBoundary(ir) ? [\"renderOutOfOrderBoundary\"] : []),\n ...(serverBootstrap === \"out-of-order-reorder\" && hasOutOfOrderAsyncBoundary(ir)\n ? [\"renderOutOfOrderReorderScript\"]\n : []),\n ...(hasReactSuspenseBoundary(ir) ? [\"renderReactSuspenseBoundary\"] : []),\n ...(hasReactSuspenseOutOfOrderBoundary(ir) ? [\"renderReactSuspenseOutOfOrderBoundary\"] : []),\n ];\n const imports: RuntimeImport[] = [];\n\n if (serverSpecifiers.length > 0) {\n imports.push({\n source: \"@reckona/mreact-server\",\n specifiers: serverSpecifiers,\n });\n }\n\n if (hasCompatComponentReference(ir) || hasReactNodeRender(ir) || hasRawJsxDynamicRender(ir)) {\n imports.push({\n source: \"@reckona/mreact-compat\",\n specifiers: [\"renderToString\"],\n });\n }\n\n return imports;\n}\n\nfunction hasInOrderAsyncBoundary(ir: ModuleIr): boolean {\n return ir.components.some((component) => containsAsyncBoundary(component.root, false));\n}\n\nfunction hasOutOfOrderAsyncBoundary(ir: ModuleIr): boolean {\n return ir.components.some((component) => containsAsyncBoundary(component.root, true));\n}\n\nfunction hasReactSuspenseBoundary(ir: ModuleIr): boolean {\n return ir.components.some((component) => containsReactSuspense(component.root, false));\n}\n\nfunction hasReactSuspenseOutOfOrderBoundary(ir: ModuleIr): boolean {\n return ir.components.some((component) => containsReactSuspense(component.root, true));\n}\n\nfunction hasCompatComponentReference(ir: ModuleIr): boolean {\n return ir.components.some((component) => containsCompatComponent(component.root));\n}\n\nfunction hasReactNodeRender(ir: ModuleIr): boolean {\n return ir.components.some((component) => containsReactNodeRender(component.root));\n}\n\nfunction hasRawJsxDynamicRender(ir: ModuleIr): boolean {\n return ir.components.some((component) => containsRawJsxDynamicRender(component.root));\n}\n\nfunction usesClientBoundary(ir: ModuleIr, serverHydration: boolean): boolean {\n return ir.components.some((component) => containsClientBoundary(component.root, serverHydration));\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(\"&\", \"&amp;\").replaceAll('\"', \"&quot;\").replaceAll(\"<\", \"&lt;\").replaceAll(\">\", \"&gt;\");`,\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) ?? \"{}\")`,\n ` .replaceAll(\"&\", \"\\\\\\\\u0026\")`,\n ` .replaceAll(\"<\", \"\\\\\\\\u003c\")`,\n ` .replaceAll(\">\", \"\\\\\\\\u003e\")`,\n ` .replaceAll(\"\\\\u2028\", \"\\\\\\\\u2028\")`,\n ` .replaceAll(\"\\\\u2029\", \"\\\\\\\\u2029\");`,\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) 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 ` const _booleanish = _name.startsWith(\"aria-\") || _name.startsWith(\"data-\") || _name === \"contenteditable\" || _name === \"draggable\" || _name === \"spellcheck\";`,\n ` if (_value === false && !_booleanish) 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 && !_booleanish ? \"\" : _value) + \"\\\\\"\";`,\n ` }`,\n ` return _out;`,\n `}`,\n ].join(\"\\n\");\n}\n\nfunction emitStreamNodeHelper(name: string): string {\n return [\n `async function ${name}($sink, value, escapeHtml) {`,\n ` if (value == null || value === false) return;`,\n ` if (typeof value === \"function\") { await value($sink); return; }`,\n ` if (Array.isArray(value)) { for (const item of value) await ${name}($sink, item, escapeHtml); return; }`,\n ` if (typeof value === \"string\") { $sink.append(value); return; }`,\n ` $sink.append(escapeHtml(value === true ? \"\" : value));`,\n `}`,\n ].join(\"\\n\");\n}\n\nfunction emitComponent(\n component: ComponentIr,\n escapeHelperName: string,\n asyncBoundaryHelperName: string,\n outOfOrderBoundaryHelperName: string,\n reorderScriptHelperName: string,\n reactSuspenseBoundaryHelperName: string,\n reactSuspenseOutOfOrderBoundaryHelperName: string,\n compatRenderToStringHelperName: string,\n options: Required<Pick<EmitServerStreamOptions, \"serverBootstrap\">> &\n Omit<EmitServerStreamOptions, \"serverBootstrap\"> & {\n dynamicAttributes: \"drop\" | \"emit\";\n escapeBatchHelperName?: string;\n },\n): string {\n const { serverBootstrap, serverBootstrapNonce, serverBootstrapSrc } = options;\n const sinkName = allocateComponentSinkName(component);\n const parameters = [sinkName, ...component.parameters].join(\", \");\n const body = component.bodyStatements.map(\n (statement) =>\n ` ${statement.replaceAll(\n oxcServerStringReactNodeRenderHelperPlaceholder,\n compatRenderToStringHelperName,\n )}`,\n );\n const markerId = encodeURIComponent(component.name);\n const hydrationStartStatements =\n options.serverHydration === true\n ? [` ${sinkName}.append(${stringLiteral(`<!--mreact-h:start:${markerId}-->`)});`]\n : [];\n const appendStatements = emitAppendStatements(\n component.root,\n sinkName,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n compatRenderToStringHelperName,\n options.serverBootstrapNonce,\n options.reactSuspenseRevealScriptSrc,\n options.serverHydration === true,\n options.serverAwaitHydration === true,\n options.dynamicAttributes,\n options.escapeBatchHelperName,\n );\n const bootstrapStatements =\n serverBootstrap === \"out-of-order-reorder\" && containsAsyncBoundary(component.root, true)\n ? [\n ` ${reorderScriptHelperName}(${sinkName}${emitBootstrapOptions(serverBootstrapNonce, serverBootstrapSrc)});`,\n ]\n : [];\n const hydrationEndStatements =\n options.serverHydration === true\n ? [` ${sinkName}.append(${stringLiteral(`<!--mreact-h:end:${markerId}-->`)});`]\n : [];\n const exportPrefix =\n component.exportDefault === true\n ? \"export default \"\n : component.exported === false\n ? \"\"\n : \"export \";\n const asyncPrefix =\n component.async === true || containsAnyAsyncBoundary(component.root) ? \"async \" : \"\";\n const functionKeyword = `${exportPrefix}${asyncPrefix}function`;\n\n return [\n `${functionKeyword} ${component.name}(${parameters}) {`,\n ...body,\n ...hydrationStartStatements,\n ...appendStatements,\n ...hydrationEndStatements,\n ...bootstrapStatements,\n `}`,\n ].join(\"\\n\");\n}\n\nfunction emitBootstrapOptions(nonce?: string, src?: string): string {\n const entries = [\n ...(nonce === undefined ? [] : [`nonce: ${stringLiteral(nonce)}`]),\n ...(src === undefined ? [] : [`src: ${stringLiteral(src)}`]),\n ];\n\n return entries.length === 0 ? \"\" : `, { ${entries.join(\", \")} }`;\n}\n\nfunction emitAppendStatements(\n node: JsxNodeIr,\n sinkName: string,\n escapeHelperName: string,\n asyncBoundaryHelperName: string,\n outOfOrderBoundaryHelperName: string,\n reactSuspenseBoundaryHelperName: string,\n reactSuspenseOutOfOrderBoundaryHelperName: string,\n compatRenderToStringHelperName: string,\n reactSuspenseRevealScriptNonce: string | undefined,\n reactSuspenseRevealScriptSrc: string | undefined,\n hydration: boolean,\n awaitHydration: boolean,\n dynamicAttributes: \"drop\" | \"emit\",\n escapeBatchHelperName: string | undefined,\n): string[] {\n if (node.kind === \"conditional\") {\n const emitBranch = (children: readonly JsxNodeIr[]): string[] =>\n children.flatMap((child) =>\n emitAppendStatements(\n child,\n sinkName,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n compatRenderToStringHelperName,\n reactSuspenseRevealScriptNonce,\n reactSuspenseRevealScriptSrc,\n hydration,\n awaitHydration,\n dynamicAttributes,\n escapeBatchHelperName,\n ),\n );\n const indentBranch = (line: string) => ` ${line}`;\n const whenTrue = emitBranch(node.whenTrue).map(indentBranch);\n const whenFalse = emitBranch(node.whenFalse).map(indentBranch);\n\n if (whenTrue.length === 0 && whenFalse.length === 0) {\n return [];\n }\n\n const conditionCode = node.conditionValueName ?? node.conditionCode;\n let statements: string[];\n\n if (whenFalse.length === 0) {\n statements = [` if (${conditionCode}) {`, ...whenTrue, ` }`];\n } else {\n statements = [` if (${conditionCode}) {`, ...whenTrue, ` } else {`, ...whenFalse, ` }`];\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 const collectState: CollectHtmlState = {\n dynamicAttributes,\n ...(escapeBatchHelperName === undefined ? {} : { escapeBatchHelperName }),\n hydration,\n awaitHydration,\n nextFragmentId: 0,\n ...(reactSuspenseRevealScriptNonce === undefined ? {} : { reactSuspenseRevealScriptNonce }),\n ...(reactSuspenseRevealScriptSrc === undefined ? {} : { reactSuspenseRevealScriptSrc }),\n };\n const collected = collectHtmlParts(\n node,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n collectState,\n );\n const previousPropChildrenCollectState = currentPropChildrenCollectState;\n currentPropChildrenCollectState = collectState;\n try {\n return coalesceAdjacentStaticParts(collected).map((part) => {\n if (part.kind === \"async-boundary\") {\n return emitLoweredAsyncBoundary(part, {\n asyncBoundaryHelperName,\n compatRenderToStringHelperName,\n emitNestedAppendStatements,\n sinkName,\n });\n }\n\n if (part.kind === \"out-of-order-boundary\") {\n return emitLoweredOutOfOrderBoundary(part, {\n compatRenderToStringHelperName,\n emitNestedAppendStatements,\n outOfOrderBoundaryHelperName,\n sinkName,\n });\n }\n\n if (part.kind === \"react-suspense-boundary\") {\n return emitLoweredReactSuspenseBoundary(part, {\n compatRenderToStringHelperName,\n emitNestedAppendStatements,\n reactSuspenseBoundaryHelperName,\n sinkName,\n });\n }\n\n if (part.kind === \"react-suspense-out-of-order-boundary\") {\n return emitLoweredReactSuspenseOutOfOrderBoundary(part, {\n compatRenderToStringHelperName,\n emitNestedAppendStatements,\n reactSuspenseOutOfOrderBoundaryHelperName,\n sinkName,\n });\n }\n\n if (part.kind === \"component\") {\n if (part.runtime === \"compat\") {\n return emitCompatComponentAppendStatements(\n part,\n sinkName,\n compatRenderToStringHelperName,\n \" \",\n );\n }\n\n return ` await ${part.name}(${sinkName}, ${emitPropsObject(part.props, part.children, part.escapeHelperName, part.name)});`;\n }\n\n if (part.kind === \"react-node\") {\n return ` ${sinkName}.append(${compatRenderToStringHelperName}(() => (${part.code})));`;\n }\n\n if (part.kind === \"stream-node\") {\n return ` await ${currentStreamNodeHelperName}(${sinkName}, (${part.code}), ${part.escapeHelperName});`;\n }\n\n if (part.kind === \"list\") {\n return emitListPart(part, sinkName, compatRenderToStringHelperName, \" \");\n }\n\n if (part.kind === \"dynamic\" && looksLikeRawJsxExpression(part.code)) {\n return emitDynamicHtmlAppendStatement(\n part.code,\n sinkName,\n escapeHelperName,\n compatRenderToStringHelperName,\n \" \",\n );\n }\n\n const expression =\n part.kind === \"static\"\n ? stringLiteral(part.value)\n : part.kind === \"dynamic\"\n ? `${escapeHelperName}(${part.code})`\n : part.code;\n\n return ` ${sinkName}.append(${expression});`;\n });\n } finally {\n currentPropChildrenCollectState = previousPropChildrenCollectState;\n }\n}\n\nfunction isHtmlSyncPart(part: HtmlPart): part is HtmlSyncPart {\n return (\n part.kind !== \"async-boundary\" &&\n part.kind !== \"out-of-order-boundary\" &&\n part.kind !== \"react-suspense-boundary\" &&\n part.kind !== \"react-suspense-out-of-order-boundary\"\n );\n}\n\n// Issue 085: collapse runs of adjacent `static` parts into a single\n// `static` part. Each part becomes one `sink.append(...)` call at emit\n// time and `sink.append` goes through 2-3 function frames, so merging\n// `[\"<span\", \">\"]` into `\"<span>\"` halves the per-iteration call count\n// for tag-heavy lists.\n//\n// Only adjacent static-kind parts are merged; dynamic / boundary /\n// component / list / react-node parts stay where they are.\nfunction coalesceAdjacentStaticParts<T extends HtmlPart>(parts: T[]): T[] {\n if (parts.length < 2) return parts;\n const result: T[] = [];\n let pending: { kind: \"static\"; value: string } | undefined;\n for (const part of parts) {\n if (part.kind === \"static\") {\n pending =\n pending === undefined\n ? { kind: \"static\", value: part.value }\n : { kind: \"static\", value: pending.value + part.value };\n continue;\n }\n if (pending !== undefined) {\n result.push(pending as T);\n pending = undefined;\n }\n result.push(part);\n }\n if (pending !== undefined) {\n result.push(pending as T);\n }\n return result;\n}\n\nfunction emitSyncPartAsAppendStatement(\n part: HtmlSyncPart,\n sinkName: string,\n compatRenderToStringHelperName: string,\n indent: string,\n): string {\n if (part.kind === \"component\") {\n if (part.runtime === \"compat\") {\n return emitCompatComponentAppendStatements(\n part,\n sinkName,\n compatRenderToStringHelperName,\n indent,\n );\n }\n\n return `${indent}await ${part.name}(${sinkName}, ${emitPropsObject(part.props, part.children, part.escapeHelperName, part.name)});`;\n }\n\n if (part.kind === \"react-node\") {\n return `${indent}${sinkName}.append(${compatRenderToStringHelperName}(() => (${part.code})));`;\n }\n\n if (part.kind === \"stream-node\") {\n return `${indent}await ${currentStreamNodeHelperName}(${sinkName}, (${part.code}), ${part.escapeHelperName});`;\n }\n\n if (part.kind === \"list\") {\n return emitListPart(part, sinkName, compatRenderToStringHelperName, indent);\n }\n\n if (part.kind === \"dynamic\" && looksLikeRawJsxExpression(part.code)) {\n return emitDynamicHtmlAppendStatement(\n part.code,\n sinkName,\n part.escapeHelperName,\n compatRenderToStringHelperName,\n indent,\n );\n }\n\n const expression =\n part.kind === \"static\"\n ? stringLiteral(part.value)\n : part.kind === \"dynamic\"\n ? `${part.escapeHelperName}(${part.code})`\n : part.code;\n\n return `${indent}${sinkName}.append(${expression});`;\n}\n\nfunction emitListPart(\n part: Extract<HtmlPart, { kind: \"list\" }>,\n sinkName: string,\n compatRenderToStringHelperName: string,\n indent: string,\n): string {\n const innerIndent = indent + \" \";\n const itemBinding = `${innerIndent}const ${part.itemName} = _arr[_i];`;\n const indexBinding =\n part.indexName === undefined ? undefined : `${innerIndent}const ${part.indexName} = _i;`;\n const arrayBinding =\n part.arrayName === undefined ? undefined : `${innerIndent}const ${part.arrayName} = _arr;`;\n const bodyLines = part.bodyStatements.map((statement) => `${innerIndent}${statement}`);\n const coalescedParts = coalesceAdjacentStaticParts(part.parts);\n\n // Issue 085 follow-up: if every child part can be expressed as a\n // pure string expression (no `sink.append`/`await` required), build\n // up a local ConsString accumulator and emit a single\n // `sink.append(_listOut)` at the end of the iteration. This matches\n // the string backend's `_out +=` pattern, which V8 turns into a\n // shallow cons-string tree (~3 ns per append). Otherwise (the list\n // contains components / nested lists with components / etc) fall\n // back to per-part `sink.append` inside the loop.\n const syncCoalescedParts = coalescedParts.every(isHtmlSyncPart) ? coalescedParts : undefined;\n const stringExpressions =\n syncCoalescedParts?.map((child) =>\n tryEmitPartAsStringExpression(child, compatRenderToStringHelperName),\n ) ?? [];\n const allStringSafe =\n syncCoalescedParts !== undefined && stringExpressions.every((expr) => expr !== undefined);\n\n if (allStringSafe) {\n const accumulatorName = \"_listOut\";\n const concatLines = stringExpressions.map(\n (expr) => `${innerIndent}${accumulatorName} += ${expr};`,\n );\n return [\n `${indent}{`,\n `${indent} const _arr = (${part.itemsCode});`,\n `${indent} let ${accumulatorName} = \"\";`,\n `${indent} for (let _i = 0, _len = _arr.length; _i < _len; _i++) {`,\n itemBinding,\n ...(indexBinding === undefined ? [] : [indexBinding]),\n ...(arrayBinding === undefined ? [] : [arrayBinding]),\n ...bodyLines,\n ...concatLines,\n `${indent} }`,\n `${indent} ${sinkName}.append(${accumulatorName});`,\n `${indent}}`,\n ].join(\"\\n\");\n }\n\n const childLines =\n syncCoalescedParts === undefined\n ? [emitNestedStreamAppendStatements(coalescedParts, sinkName, compatRenderToStringHelperName)]\n : syncCoalescedParts.map((child) =>\n emitSyncPartAsAppendStatement(\n child,\n sinkName,\n compatRenderToStringHelperName,\n innerIndent,\n ),\n );\n\n return [\n `${indent}{`,\n `${indent} const _arr = (${part.itemsCode});`,\n `${indent} for (let _i = 0, _len = _arr.length; _i < _len; _i++) {`,\n itemBinding,\n ...(indexBinding === undefined ? [] : [indexBinding]),\n ...(arrayBinding === undefined ? [] : [arrayBinding]),\n ...bodyLines,\n ...childLines,\n `${indent} }`,\n `${indent}}`,\n ].join(\"\\n\");\n}\n\n// Returns a string-typed expression for `part` if it can be evaluated\n// synchronously without writing to the sink, otherwise undefined.\n// Used by `emitListPart` to choose between the cons-string accumulator\n// path and the per-part `sink.append` path.\nfunction tryEmitPartAsStringExpression(\n part: HtmlSyncPart,\n compatRenderToStringHelperName: string,\n): string | undefined {\n if (part.kind === \"static\") return stringLiteral(part.value);\n if (part.kind === \"dynamic\") {\n return looksLikeRawJsxExpression(part.code)\n ? undefined\n : `${part.escapeHelperName}(${part.code})`;\n }\n if (part.kind === \"raw-dynamic\") return `(${part.code})`;\n if (part.kind === \"react-node\") {\n return `${compatRenderToStringHelperName}(() => (${part.code}))`;\n }\n if (part.kind === \"stream-node\") {\n return undefined;\n }\n if (part.kind === \"list\" && part.parts.every(isHtmlSyncPart)) {\n return emitListPartAsStringExpression(part, compatRenderToStringHelperName);\n }\n if (part.kind === \"component\" && part.runtime === \"compat\") {\n const rendered = `${compatRenderToStringHelperName}(${part.name}, ${emitCompatRuntimePropsObject(part.props, part.children)})`;\n if (part.hydrationId === undefined) {\n return rendered;\n }\n\n return `${stringLiteral(`<!--mreact-h:start:${encodeURIComponent(part.hydrationId)}-->`)} + ${rendered} + ${stringLiteral(`<!--mreact-h:end:${encodeURIComponent(part.hydrationId)}-->`)}`;\n }\n if (part.kind === \"component\" && part.hydrationId === undefined) {\n return emitRenderableHtmlExpression(\n `${part.name}(${emitPropsObject(part.props, part.children, part.escapeHelperName, part.name)})`,\n );\n }\n // Non-compat component parts require `await sink-write`; lists with\n // sink-needing children also can't collapse. Signal fallback.\n return undefined;\n}\n\nfunction emitListPartAsStringExpression(\n part: Extract<HtmlPart, { kind: \"list\" }>,\n compatRenderToStringHelperName: string,\n): string | undefined {\n const coalescedParts = coalesceAdjacentStaticParts(part.parts);\n if (!coalescedParts.every(isHtmlSyncPart)) {\n return undefined;\n }\n\n const stringExpressions = coalescedParts.map((child) =>\n tryEmitPartAsStringExpression(child, compatRenderToStringHelperName),\n );\n\n if (stringExpressions.some((expr) => expr === undefined)) {\n return undefined;\n }\n\n const concatLines = stringExpressions.map((expr) => `_listOut += ${expr};`);\n return `(() => { const _arr = (${part.itemsCode}); let _listOut = \"\"; for (let _i = 0, _len = _arr.length; _i < _len; _i++) { const ${part.itemName} = _arr[_i];${part.indexName === undefined ? \"\" : ` const ${part.indexName} = _i;`}${part.arrayName === undefined ? \"\" : ` const ${part.arrayName} = _arr;`}${part.bodyStatements.length === 0 ? \"\" : ` ${part.bodyStatements.join(\" \")}`} ${concatLines.join(\" \")} } return _listOut; })()`;\n}\n\nfunction emitNestedAppendStatements(\n parts: readonly HtmlSyncPart[],\n sinkName: string,\n compatRenderToStringHelperName: string,\n): string {\n return coalesceAdjacentStaticParts([...parts])\n .map((part) =>\n emitSyncPartAsAppendStatement(part, sinkName, compatRenderToStringHelperName, \" \"),\n )\n .join(\"\\n\");\n}\n\nfunction emitNestedStreamAppendStatements(\n parts: HtmlPart[],\n sinkName: string,\n compatRenderToStringHelperName: string,\n): string {\n return coalesceAdjacentStaticParts(parts)\n .map((part) => {\n if (part.kind === \"async-boundary\") {\n return emitLoweredAsyncBoundary(part, {\n asyncBoundaryHelperName: currentAsyncBoundaryHelperName,\n compatRenderToStringHelperName,\n emitNestedAppendStatements,\n sinkName,\n }).replace(/^/gm, \" \");\n }\n\n if (part.kind === \"out-of-order-boundary\") {\n return emitLoweredOutOfOrderBoundary(part, {\n compatRenderToStringHelperName,\n emitNestedAppendStatements,\n outOfOrderBoundaryHelperName: currentOutOfOrderBoundaryHelperName,\n sinkName,\n }).replace(/^/gm, \" \");\n }\n\n if (part.kind === \"react-suspense-boundary\") {\n return emitLoweredReactSuspenseBoundary(part, {\n compatRenderToStringHelperName,\n emitNestedAppendStatements,\n reactSuspenseBoundaryHelperName: currentReactSuspenseBoundaryHelperName,\n sinkName,\n }).replace(/^/gm, \" \");\n }\n\n if (part.kind === \"react-suspense-out-of-order-boundary\") {\n return emitLoweredReactSuspenseOutOfOrderBoundary(part, {\n compatRenderToStringHelperName,\n emitNestedAppendStatements,\n reactSuspenseOutOfOrderBoundaryHelperName:\n currentReactSuspenseOutOfOrderBoundaryHelperName,\n sinkName,\n }).replace(/^/gm, \" \");\n }\n\n return emitSyncPartAsAppendStatement(part, sinkName, compatRenderToStringHelperName, \" \");\n })\n .join(\"\\n\");\n}\n\nfunction emitCompatComponentAppendStatements(\n part: Extract<HtmlPart, { kind: \"component\" }>,\n sinkName: string,\n compatRenderToStringHelperName: string,\n indent: string,\n): string {\n const rendered = `${compatRenderToStringHelperName}(${part.name}, ${emitCompatRuntimePropsObject(part.props, part.children)})`;\n const statements =\n part.hydrationId === undefined\n ? [`${sinkName}.append(${rendered});`]\n : [\n `${sinkName}.append(${stringLiteral(`<!--mreact-h:start:${encodeURIComponent(part.hydrationId)}-->`)});`,\n `${sinkName}.append(${rendered});`,\n `${sinkName}.append(${stringLiteral(`<!--mreact-h:end:${encodeURIComponent(part.hydrationId)}-->`)});`,\n ];\n\n return statements.map((statement) => `${indent}${statement}`).join(\"\\n\");\n}\n\ntype HtmlPart =\n | {\n kind: \"static\";\n value: string;\n }\n | {\n kind: \"dynamic\";\n code: string;\n escapeHelperName: string;\n }\n | {\n kind: \"raw-dynamic\";\n code: string;\n }\n | {\n kind: \"react-node\";\n code: string;\n }\n | {\n kind: \"stream-node\";\n code: string;\n escapeHelperName: string;\n }\n | {\n kind: \"async-boundary\";\n valueCode: string;\n valueName: string;\n parts: HtmlSyncPart[];\n catchName?: string;\n catchParts?: HtmlSyncPart[];\n awaitId?: string;\n }\n | {\n kind: \"out-of-order-boundary\";\n id: string;\n hydration: boolean;\n valueCode: string;\n valueName: string;\n parts: HtmlSyncPart[];\n placeholderParts: HtmlSyncPart[];\n placeholderTagCode?: string;\n catchName?: string;\n catchParts?: HtmlSyncPart[];\n awaitId?: string;\n }\n | {\n kind: \"react-suspense-boundary\";\n parts: HtmlSyncPart[];\n }\n | {\n kind: \"react-suspense-out-of-order-boundary\";\n boundaryId: string;\n segmentId: string;\n valueCode: string;\n valueName: string;\n parts: HtmlSyncPart[];\n fallbackParts: HtmlSyncPart[];\n catchName?: string;\n catchParts?: HtmlSyncPart[];\n nonce?: string;\n scriptSrc?: string;\n }\n | {\n kind: \"component\";\n name: string;\n runtime?: \"compat\";\n async?: boolean;\n hydrationId?: string;\n props: ComponentPropIr[];\n children: JsxNodeIr[];\n escapeHelperName: string;\n }\n | {\n // Issue 085: list direct streaming. The list iterates\n // `itemsCode`, runs `bodyStatements` and then emits each inner\n // part per iteration. Sync-only lists still use the string\n // accumulator fast path; lists that contain async/oob/Suspense\n // boundaries keep those boundary parts visible to the stream\n // emitter instead of falling back to a raw `.map().join(\"\")`.\n kind: \"list\";\n itemsCode: string;\n itemName: string;\n indexName?: string;\n arrayName?: string;\n bodyStatements: string[];\n parts: HtmlPart[];\n };\n\ntype HtmlSyncPart = Exclude<\n HtmlPart,\n {\n kind:\n | \"async-boundary\"\n | \"out-of-order-boundary\"\n | \"react-suspense-boundary\"\n | \"react-suspense-out-of-order-boundary\";\n }\n>;\n\ninterface CollectHtmlState {\n dynamicAttributes: \"drop\" | \"emit\";\n escapeBatchHelperName?: string;\n hydration: boolean;\n awaitHydration: boolean;\n nextFragmentId: number;\n reactSuspenseRevealScriptNonce?: string;\n reactSuspenseRevealScriptSrc?: string;\n selectedValueCode?: string;\n}\n\nfunction collectHtmlParts(\n node: JsxNodeIr,\n escapeHelperName: string,\n asyncBoundaryHelperName: string,\n outOfOrderBoundaryHelperName: string,\n reactSuspenseBoundaryHelperName: string,\n reactSuspenseOutOfOrderBoundaryHelperName: string,\n state: CollectHtmlState,\n): HtmlPart[] {\n void asyncBoundaryHelperName;\n void outOfOrderBoundaryHelperName;\n void reactSuspenseBoundaryHelperName;\n void reactSuspenseOutOfOrderBoundaryHelperName;\n\n if (node.kind === \"text\") {\n return [{ kind: \"static\", value: escapeHtml(node.value) }];\n }\n\n if (node.kind === \"expr\") {\n if (node.renderMode === \"html\" && isChildrenExpressionCode(node.code)) {\n return [{ kind: \"stream-node\", code: node.code, escapeHelperName }];\n }\n\n if (node.renderMode === \"html\") {\n return [{ kind: \"raw-dynamic\", code: rawHtmlExpression(node.code) }];\n }\n\n if (node.renderMode === \"react-node\") {\n return [{ kind: \"react-node\", code: node.code }];\n }\n\n if (node.renderMode === \"stream-node\") {\n return [{ kind: \"stream-node\", code: node.code, escapeHelperName }];\n }\n\n return [{ kind: \"dynamic\", code: node.code, escapeHelperName }];\n }\n\n if (node.kind === \"conditional\") {\n const whenTrue = emitHtmlExpressionFromChildren(node.whenTrue, escapeHelperName);\n const whenFalse = emitHtmlExpressionFromChildren(node.whenFalse, escapeHelperName);\n\n return [\n {\n kind: \"raw-dynamic\",\n code:\n node.conditionValueName === undefined\n ? `((${node.conditionCode}) ? ${whenTrue} : ${whenFalse})`\n : `(() => { const ${node.conditionValueName} = (${node.conditionCode}); return ${node.conditionValueName} ? ${whenTrue} : ${whenFalse}; })()`,\n },\n ];\n }\n\n if (node.kind === \"list\") {\n // Keep mapped children in the stream emitter so direct `<Await>`\n // boundaries inside list renderers stay visible to out-of-order\n // lowering.\n const collectedChildParts: HtmlPart[] = node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n );\n\n return [\n {\n kind: \"list\",\n itemsCode: node.itemsCode,\n itemName: node.itemName,\n ...(node.indexName === undefined ? {} : { indexName: node.indexName }),\n ...(node.arrayName === undefined ? {} : { arrayName: node.arrayName }),\n bodyStatements: node.bodyStatements ?? [],\n parts: collectedChildParts,\n },\n ];\n }\n\n if (node.kind === \"async-boundary\") {\n if (node.placeholderChildren !== undefined) {\n const id = `mreact-${state.nextFragmentId}`;\n state.nextFragmentId += 1;\n\n return [\n {\n kind: \"out-of-order-boundary\",\n id,\n hydration: state.hydration,\n valueCode: node.valueCode,\n valueName: node.valueName,\n parts: node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ) as HtmlSyncPart[],\n placeholderParts: node.placeholderChildren.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ) as HtmlSyncPart[],\n ...(node.placeholderTagCode === undefined\n ? {}\n : { placeholderTagCode: node.placeholderTagCode }),\n ...(state.awaitHydration && node.awaitId !== undefined ? { awaitId: node.awaitId } : {}),\n ...(node.catchName === undefined || node.catchChildren === undefined\n ? {}\n : {\n catchName: node.catchName,\n catchParts: node.catchChildren.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ) as HtmlSyncPart[],\n }),\n },\n ];\n }\n\n return [\n {\n kind: \"async-boundary\",\n valueCode: node.valueCode,\n valueName: node.valueName,\n parts: node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ) as HtmlSyncPart[],\n ...(state.awaitHydration && node.awaitId !== undefined ? { awaitId: node.awaitId } : {}),\n ...(node.catchName === undefined || node.catchChildren === undefined\n ? {}\n : {\n catchName: node.catchName,\n catchParts: node.catchChildren.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ) as HtmlSyncPart[],\n }),\n },\n ];\n }\n\n if (node.kind === \"fragment\") {\n return node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n );\n }\n\n if (node.kind === \"component\") {\n if (node.name === \"Suspense\") {\n const asyncBoundary = findSuspenseAsyncBoundary(node.children);\n\n if (asyncBoundary !== undefined) {\n const id = state.nextFragmentId;\n state.nextFragmentId += 1;\n\n return [\n {\n kind: \"react-suspense-out-of-order-boundary\",\n boundaryId: `B:${id}`,\n segmentId: `S:${id}`,\n valueCode: asyncBoundary.valueCode,\n valueName: asyncBoundary.valueName,\n parts: replaceSuspenseAsyncBoundary(\n node.children,\n asyncBoundary,\n asyncBoundary.children,\n ).flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ) as HtmlSyncPart[],\n fallbackParts: collectSuspenseFallbackParts(\n node.props,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ...(state.reactSuspenseRevealScriptNonce === undefined\n ? {}\n : { nonce: state.reactSuspenseRevealScriptNonce }),\n ...(state.reactSuspenseRevealScriptSrc === undefined\n ? {}\n : { scriptSrc: state.reactSuspenseRevealScriptSrc }),\n ...(asyncBoundary.catchName === undefined || asyncBoundary.catchChildren === undefined\n ? {}\n : {\n catchName: asyncBoundary.catchName,\n catchParts: replaceSuspenseAsyncBoundary(\n node.children,\n asyncBoundary,\n asyncBoundary.catchChildren,\n ).flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ) as HtmlSyncPart[],\n }),\n },\n ];\n }\n\n if (containsAsyncComponent(node.children)) {\n const id = state.nextFragmentId;\n state.nextFragmentId += 1;\n\n return [\n {\n kind: \"react-suspense-out-of-order-boundary\",\n boundaryId: `B:${id}`,\n segmentId: `S:${id}`,\n valueCode: \"undefined\",\n valueName: \"_\",\n parts: node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ) as HtmlSyncPart[],\n fallbackParts: collectSuspenseFallbackParts(\n node.props,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ...(state.reactSuspenseRevealScriptNonce === undefined\n ? {}\n : { nonce: state.reactSuspenseRevealScriptNonce }),\n ...(state.reactSuspenseRevealScriptSrc === undefined\n ? {}\n : { scriptSrc: state.reactSuspenseRevealScriptSrc }),\n },\n ];\n }\n\n return [\n {\n kind: \"react-suspense-boundary\",\n parts: node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ) as HtmlSyncPart[],\n },\n ];\n }\n\n if (isClientBoundaryPlaceholder(node, state.hydration)) {\n const helperName = currentClientBoundaryHelperName;\n if (helperName !== undefined) {\n const boundaryProps = emitPropsObject(node.props, [], escapeHelperName);\n const fallbackHtml = shouldRenderClientBoundaryFallback(node)\n ? `${node.name}(${boundaryProps})`\n : emitHtmlExpressionFromChildren(node.children, escapeHelperName);\n return [\n {\n kind: \"raw-dynamic\",\n code: `${helperName}(${stringLiteral(node.name)}, ${boundaryProps}, ${fallbackHtml})`,\n },\n ];\n }\n\n return [{ kind: \"static\", value: clientBoundaryPlaceholder(node) }];\n }\n\n return [\n {\n kind: \"component\",\n name: node.name,\n ...(node.runtime === undefined ? {} : { runtime: node.runtime }),\n ...(node.async === undefined ? {} : { async: node.async }),\n ...(node.runtime === \"compat\" && state.hydration\n ? { hydrationId: `mreact-${state.nextFragmentId++}` }\n : {}),\n props: node.props,\n children: node.children,\n escapeHelperName,\n },\n ];\n }\n\n const closeTag = `</${node.tagName}>`;\n if (node.tagName === \"textarea\") {\n const attributeScan = scanElementAttributes(node.tagName, node.attributes);\n return [\n { kind: \"static\", value: \"<textarea\" },\n ...collectElementAttributeParts(\n node.tagName,\n node.attributes,\n escapeHelperName,\n state,\n attributeScan,\n ),\n { kind: \"static\", value: \">\" },\n ...collectTextareaValueParts(\n node,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n attributeScan,\n ),\n { kind: \"static\", value: closeTag },\n ];\n }\n const attributeScan = scanElementAttributes(node.tagName, node.attributes);\n const childSelectedValueCode =\n node.tagName === \"select\" ? attributeScan.formValueAttributeCode : undefined;\n const childState =\n childSelectedValueCode === undefined\n ? state\n : { ...state, selectedValueCode: childSelectedValueCode };\n const selectedAttributePart = collectOptionSelectedAttributePart(node, state.selectedValueCode);\n const dangerousInnerHtml = emitDangerouslySetInnerHtmlPart(node.attributes);\n const childrenParts: HtmlPart[] = isVoidHtmlElement(node.tagName)\n ? []\n : dangerousInnerHtml !== undefined\n ? [dangerousInnerHtml]\n : ((childState.selectedValueCode === undefined\n ? collectBatchedSimpleChildrenParts(node.children, state.escapeBatchHelperName)\n : undefined) ??\n node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n childState,\n ),\n ));\n\n return [\n { kind: \"static\", value: `<${node.tagName}` },\n ...collectElementAttributeParts(\n node.tagName,\n node.attributes,\n escapeHelperName,\n state,\n attributeScan,\n ),\n ...(selectedAttributePart === undefined ? [] : [selectedAttributePart]),\n { kind: \"static\", value: \">\" },\n ...childrenParts,\n ...(isVoidHtmlElement(node.tagName) ? [] : [{ kind: \"static\" as const, value: closeTag }]),\n ];\n}\n\nfunction emitDangerouslySetInnerHtmlPart(attrs: readonly AttributeIr[]): HtmlSyncPart | 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 {\n kind: \"raw-dynamic\",\n code: `(() => { const _value = (${attr.code}); return typeof _value === \"object\" && _value !== null && typeof _value.__html === \"string\" ? _value.__html : \"\"; })()`,\n };\n}\n\nfunction isChildrenExpressionCode(code: string): boolean {\n const trimmed = code.trim();\n return (\n trimmed === \"children\" ||\n endsWithChildrenMemberAccess(trimmed) ||\n endsWithChildrenStringIndex(trimmed)\n );\n}\n\nfunction endsWithChildrenMemberAccess(code: string): boolean {\n const propertyName = \"children\";\n if (!code.endsWith(propertyName)) {\n return false;\n }\n\n return code[code.length - propertyName.length - 1] === \".\";\n}\n\nfunction endsWithChildrenStringIndex(code: string): boolean {\n return code.endsWith('[\"children\"]') || code.endsWith(\"['children']\");\n}\n\nfunction collectHtmlAttributeParts(\n tagName: string,\n attr: AttributeIr,\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n dynamicAttributes: \"drop\" | \"emit\",\n): HtmlSyncPart[] {\n if (attr.kind === \"spread-attr\") {\n return dynamicAttributes === \"drop\"\n ? []\n : [\n {\n kind: \"raw-dynamic\",\n code: `${currentSpreadAttributesHelperName}(${stringLiteral(tagName)}, (${attr.code}))`,\n },\n ];\n }\n\n if (attr.kind === \"event\" || attr.name === \"key\" || attr.name === \"dangerouslySetInnerHTML\") {\n return [];\n }\n\n if (attr.kind === \"static-attr\") {\n const htmlName = htmlAttributeNameForElement(tagName, attr.name);\n if (isUrlAttribute(htmlName) && isStaticUrlValueUnsafe(htmlName, attr.value)) {\n return [];\n }\n if (isDangerousHtmlAttribute(htmlName)) {\n // Issue 077: literal srcdoc strings cannot match the opt-in shape.\n return [];\n }\n return [\n {\n kind: \"static\",\n value: ` ${htmlName}=\"${escapeHtml(attr.value)}\"`,\n },\n ];\n }\n\n if (dynamicAttributes === \"drop\") {\n return [];\n }\n\n if (attr.name === \"style\") {\n return [\n {\n kind: \"raw-dynamic\",\n code: emitDynamicStyleAttributeExpression(\n attr.code,\n escapeHelperName,\n escapeBatchHelperName,\n ),\n },\n ];\n }\n\n const dynamicHtmlName = htmlAttributeNameForElement(tagName, attr.name);\n if (isDangerousHtmlAttribute(dynamicHtmlName)) {\n return [\n {\n kind: \"raw-dynamic\",\n code: `(() => { const _value = (${attr.code}); if (_value == null || _value === false) return \"\"; if (typeof _value === \"object\" && _value !== null && typeof _value.__html === \"string\") return ${stringLiteral(` ${dynamicHtmlName}=\"`)} + ${escapeHelperName}(_value.__html) + ${stringLiteral('\"')}; return \"\"; })()`,\n },\n ];\n }\n\n return [\n {\n kind: \"raw-dynamic\",\n code: emitDynamicAttributeExpression(dynamicHtmlName, attr.code, escapeHelperName),\n },\n ];\n}\n\nfunction collectElementAttributeParts(\n tagName: string,\n attrs: readonly AttributeIr[],\n escapeHelperName: string,\n state: CollectHtmlState,\n attributeScan = scanElementAttributes(tagName, attrs),\n): HtmlSyncPart[] {\n const escapeBatchHelperName = state.escapeBatchHelperName;\n\n if (state.dynamicAttributes === \"emit\" && attrs.some((attr) => attr.kind === \"spread-attr\")) {\n return [\n {\n kind: \"raw-dynamic\",\n code: emitMergedSpreadAttributeExpression(tagName, attrs, attributeScan),\n },\n ];\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 state.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 const booleanishString = isBooleanishStringAttribute(name);\n\n if (isUrlAttribute(name)) {\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 return booleanishString\n ? `(${inlineExpr} == null ? \"\" : ${stringLiteral(` ${name}=\"`)} + ${escapeHelperName}(${inlineExpr}) + ${stringLiteral('\"')})`\n : `(${inlineExpr} == null || ${inlineExpr} === false ? \"\" : ${stringLiteral(` ${name}=\"`)} + ${escapeHelperName}(${inlineExpr} === true ? \"\" : ${inlineExpr}) + ${stringLiteral('\"')})`;\n }\n\n return booleanishString\n ? `(() => { const _value = (${code}); return _value == null ? \"\" : ${stringLiteral(` ${name}=\"`)} + ${escapeHelperName}(_value) + ${stringLiteral('\"')}; })()`\n : `(() => { 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 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 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 asyncBoundaryHelperName: string,\n outOfOrderBoundaryHelperName: string,\n reactSuspenseBoundaryHelperName: string,\n reactSuspenseOutOfOrderBoundaryHelperName: string,\n state: CollectHtmlState,\n attributeScan = scanElementAttributes(node.tagName, node.attributes),\n): HtmlPart[] {\n const valueCode = attributeScan.formValueAttributeCode;\n if (valueCode !== undefined) {\n return [{ kind: \"dynamic\", code: valueCode, escapeHelperName }];\n }\n\n return node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n );\n}\n\nfunction collectOptionSelectedAttributePart(\n node: Extract<JsxNodeIr, { kind: \"element\" }>,\n selectedValueCode: string | undefined,\n): HtmlSyncPart | 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 {\n kind: \"raw-dynamic\",\n code: `(() => { const _selected = (${selectedValueCode}); return _selected == null ? \"\" : String(_selected) === String(${optionValueCode}) ? ${stringLiteral(' selected=\"\"')} : \"\"; })()`,\n };\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 findSuspenseAsyncBoundary(children: readonly JsxNodeIr[]): AsyncBoundaryIr | undefined {\n for (const child of children) {\n if (child.kind === \"async-boundary\" && child.placeholderChildren === undefined) {\n return child;\n }\n\n const nested =\n child.kind === \"element\" || child.kind === \"fragment\" || child.kind === \"component\"\n ? findSuspenseAsyncBoundary(child.children)\n : child.kind === \"conditional\"\n ? findSuspenseAsyncBoundary([...child.whenTrue, ...child.whenFalse])\n : child.kind === \"list\"\n ? findSuspenseAsyncBoundary(child.children)\n : undefined;\n\n if (nested !== undefined) {\n return nested;\n }\n }\n\n return undefined;\n}\n\nfunction replaceSuspenseAsyncBoundary(\n children: readonly JsxNodeIr[],\n target: AsyncBoundaryIr,\n replacement: readonly JsxNodeIr[],\n): JsxNodeIr[] {\n return children.flatMap((child): JsxNodeIr[] => {\n if (child === target) {\n return [...replacement];\n }\n\n if (child.kind === \"element\") {\n return [\n {\n ...child,\n children: replaceSuspenseAsyncBoundary(child.children, target, replacement),\n },\n ];\n }\n\n if (child.kind === \"fragment\") {\n return [\n {\n ...child,\n children: replaceSuspenseAsyncBoundary(child.children, target, replacement),\n },\n ];\n }\n\n if (child.kind === \"component\") {\n return [\n {\n ...child,\n children: replaceSuspenseAsyncBoundary(child.children, target, replacement),\n },\n ];\n }\n\n if (child.kind === \"conditional\") {\n return [\n {\n ...child,\n whenTrue: replaceSuspenseAsyncBoundary(child.whenTrue, target, replacement),\n whenFalse: replaceSuspenseAsyncBoundary(child.whenFalse, target, replacement),\n },\n ];\n }\n\n if (child.kind === \"list\") {\n return [\n {\n ...child,\n children: replaceSuspenseAsyncBoundary(child.children, target, replacement),\n },\n ];\n }\n\n return [child];\n });\n}\n\nfunction collectSuspenseFallbackParts(\n props: readonly ComponentPropIr[],\n escapeHelperName: string,\n asyncBoundaryHelperName: string,\n outOfOrderBoundaryHelperName: string,\n reactSuspenseBoundaryHelperName: string,\n reactSuspenseOutOfOrderBoundaryHelperName: string,\n state: CollectHtmlState,\n): HtmlSyncPart[] {\n for (const prop of props) {\n if (prop.kind === \"render-prop\" && prop.name === \"fallback\") {\n return prop.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ) as HtmlSyncPart[];\n }\n\n if (prop.kind === \"prop\" && prop.name === \"fallback\") {\n return [\n {\n kind: \"dynamic\",\n code: prop.code,\n escapeHelperName,\n },\n ];\n }\n }\n\n return [];\n}\n\nfunction rawHtmlExpression(code: string): string {\n return `(() => { const _render = (_value) => { if (_value == null) return \"\"; if (Array.isArray(_value)) return _value.map(_render).join(\"\"); if (typeof _value === \"object\" && _value.$$typeof === Symbol.for(\"react.transitional.element\")) return ${currentCompatRenderToStringHelperName}(() => _value); return String(_value); }; return _render(${code}); })()`;\n}\n\nfunction emitDynamicHtmlAppendStatement(\n code: string,\n sinkName: string,\n escapeHelperName: string,\n compatRenderToStringHelperName: string,\n indent: string,\n): string {\n if (!looksLikeRawJsxExpression(code)) {\n return `${indent}${sinkName}.append(${escapeHelperName}(${code}));`;\n }\n\n return [\n `${indent}{`,\n `${indent} const _appendDynamic = async (_value) => {`,\n `${indent} if (_value == null || _value === false) return;`,\n `${indent} if (Array.isArray(_value)) { for (const _item of _value) await _appendDynamic(_item); return; }`,\n `${indent} if (typeof _value === \"object\" && _value.$$typeof === Symbol.for(\"react.transitional.element\")) {`,\n `${indent} if (typeof _value.type === \"function\" && _value.type.length >= 2) {`,\n `${indent} await _value.type(${sinkName}, _value.props ?? {});`,\n `${indent} } else {`,\n `${indent} ${sinkName}.append(${compatRenderToStringHelperName}(() => _value));`,\n `${indent} }`,\n `${indent} return;`,\n `${indent} }`,\n `${indent} ${sinkName}.append(${escapeHelperName}(_value === true ? \"\" : _value));`,\n `${indent} };`,\n `${indent} await _appendDynamic(${code});`,\n `${indent}}`,\n ].join(\"\\n\");\n}\n\nfunction looksLikeRawJsxExpression(code: string): boolean {\n return /<\\s*(?:[A-Za-z]|>)/.test(code);\n}\n\nfunction collectBatchedSimpleChildrenParts(\n children: readonly JsxNodeIr[],\n escapeBatchHelperName: string | undefined,\n): HtmlSyncPart[] | 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 [\n {\n kind: \"raw-dynamic\",\n code: `(() => { const _escaped = ${escapeBatchHelperName}([${values.join(\", \")}]); return ${pieces.join(\" + \")}; })()`,\n },\n ];\n}\n\nfunction emitHtmlExpressionFromChildren(children: JsxNodeIr[], escapeHelperName: string): string {\n if (children.length === 0) {\n return '\"\"';\n }\n\n const parts = children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n \"_renderAsyncBoundary\",\n \"_renderOutOfOrderBoundary\",\n \"_renderReactSuspenseBoundary\",\n \"_renderReactSuspenseOutOfOrderBoundary\",\n {\n dynamicAttributes: \"emit\",\n hydration: false,\n awaitHydration: false,\n nextFragmentId: 0,\n },\n ),\n );\n const expressions = parts.map((part) =>\n isHtmlSyncPart(part)\n ? (tryEmitPartAsStringExpression(part, currentCompatRenderToStringHelperName) ?? '\"\"')\n : '\"\"',\n );\n\n return expressions.length === 0 ? '\"\"' : expressions.join(\" + \");\n}\n\nfunction emitStreamRendererFromChildren(\n children: JsxNodeIr[],\n escapeHelperName: string,\n): string | undefined {\n if (children.length === 0) {\n return undefined;\n }\n\n const parentState = currentPropChildrenCollectState;\n const childState: CollectHtmlState = {\n dynamicAttributes: \"emit\",\n hydration: false,\n awaitHydration: false,\n nextFragmentId: parentState?.nextFragmentId ?? 0,\n ...(parentState?.reactSuspenseRevealScriptNonce === undefined\n ? {}\n : { reactSuspenseRevealScriptNonce: parentState.reactSuspenseRevealScriptNonce }),\n ...(parentState?.reactSuspenseRevealScriptSrc === undefined\n ? {}\n : { reactSuspenseRevealScriptSrc: parentState.reactSuspenseRevealScriptSrc }),\n };\n const parts = children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n currentAsyncBoundaryHelperName,\n currentOutOfOrderBoundaryHelperName,\n currentReactSuspenseBoundaryHelperName,\n currentReactSuspenseOutOfOrderBoundaryHelperName,\n childState,\n ),\n );\n if (parentState !== undefined) {\n parentState.nextFragmentId = childState.nextFragmentId;\n }\n\n if (\n parts.every(\n (part) =>\n isHtmlSyncPart(part) &&\n tryEmitPartAsStringExpression(part, currentCompatRenderToStringHelperName) !== undefined,\n )\n ) {\n return undefined;\n }\n\n return `async ($sink) => {\\n${emitNestedStreamAppendStatements(parts, \"$sink\", currentCompatRenderToStringHelperName)}\\n}`;\n}\n\nfunction containsAsyncBoundary(node: JsxNodeIr, outOfOrder: boolean): boolean {\n if (node.kind === \"async-boundary\") {\n return outOfOrder\n ? node.placeholderChildren !== undefined\n : node.placeholderChildren === undefined;\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse].some((child) =>\n containsAsyncBoundary(child, outOfOrder),\n );\n }\n\n if (node.kind === \"list\") {\n return node.children.some((child) => containsAsyncBoundary(child, outOfOrder));\n }\n\n if (node.kind === \"element\" || node.kind === \"fragment\") {\n return node.children.some((child) => containsAsyncBoundary(child, outOfOrder));\n }\n\n if (node.kind === \"component\") {\n if (isClientBoundaryPlaceholder(node)) {\n return false;\n }\n\n return node.name === \"Suspense\" ? false : true;\n }\n\n return false;\n}\n\nfunction containsAnyAsyncBoundary(node: JsxNodeIr): boolean {\n if (node.kind === \"async-boundary\") {\n return true;\n }\n\n if (node.kind === \"expr\") {\n return (\n node.renderMode === \"stream-node\" ||\n looksLikeRawJsxExpression(node.code) ||\n (node.renderMode === \"html\" && isChildrenExpressionCode(node.code))\n );\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse].some(containsAnyAsyncBoundary);\n }\n\n if (node.kind === \"list\") {\n return node.children.some(containsAnyAsyncBoundary);\n }\n\n if (node.kind === \"element\" || node.kind === \"fragment\") {\n return node.children.some(containsAnyAsyncBoundary);\n }\n\n if (node.kind === \"component\") {\n if (isClientBoundaryPlaceholder(node)) {\n return false;\n }\n\n return node.name === \"Suspense\" ? true : true;\n }\n\n return false;\n}\n\nfunction containsReactSuspense(node: JsxNodeIr, outOfOrder: boolean): boolean {\n if (node.kind === \"component\" && node.name === \"Suspense\") {\n return outOfOrder\n ? findSuspenseAsyncBoundary(node.children) !== undefined ||\n containsAsyncComponent(node.children)\n : findSuspenseAsyncBoundary(node.children) === undefined &&\n !containsAsyncComponent(node.children);\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse].some((child) =>\n containsReactSuspense(child, outOfOrder),\n );\n }\n\n if (node.kind === \"list\") {\n return node.children.some((child) => containsReactSuspense(child, outOfOrder));\n }\n\n if (node.kind === \"element\" || node.kind === \"fragment\") {\n return node.children.some((child) => containsReactSuspense(child, outOfOrder));\n }\n\n if (node.kind === \"async-boundary\") {\n return [\n ...node.children,\n ...(node.placeholderChildren ?? []),\n ...(node.catchChildren ?? []),\n ].some((child) => containsReactSuspense(child, outOfOrder));\n }\n\n return false;\n}\n\nfunction containsAsyncComponent(children: readonly JsxNodeIr[]): boolean {\n return children.some((child) => {\n if (child.kind === \"component\") {\n if (isClientBoundaryPlaceholder(child)) {\n return false;\n }\n\n return (\n child.async === true ||\n containsAsyncComponent(child.children) ||\n child.props.some(\n (prop) => prop.kind === \"render-prop\" && containsAsyncComponent(prop.children),\n )\n );\n }\n\n if (child.kind === \"conditional\") {\n return containsAsyncComponent([...child.whenTrue, ...child.whenFalse]);\n }\n\n if (child.kind === \"list\") {\n return containsAsyncComponent(child.children);\n }\n\n if (child.kind === \"element\" || child.kind === \"fragment\") {\n return containsAsyncComponent(child.children);\n }\n\n if (child.kind === \"async-boundary\") {\n return containsAsyncComponent([\n ...child.children,\n ...(child.placeholderChildren ?? []),\n ...(child.catchChildren ?? []),\n ]);\n }\n\n return false;\n });\n}\n\nfunction containsCompatComponent(node: JsxNodeIr): boolean {\n if (node.kind === \"component\") {\n return (\n node.runtime === \"compat\" ||\n node.children.some(containsCompatComponent) ||\n node.props.some(\n (prop) => prop.kind === \"render-prop\" && prop.children.some(containsCompatComponent),\n )\n );\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse].some(containsCompatComponent);\n }\n\n if (node.kind === \"list\") {\n return node.children.some(containsCompatComponent);\n }\n\n if (node.kind === \"element\" || node.kind === \"fragment\") {\n return node.children.some(containsCompatComponent);\n }\n\n if (node.kind === \"async-boundary\") {\n return [\n ...node.children,\n ...(node.placeholderChildren ?? []),\n ...(node.catchChildren ?? []),\n ].some(containsCompatComponent);\n }\n\n return false;\n}\n\nfunction containsClientBoundary(node: JsxNodeIr, serverHydration: boolean): boolean {\n if (node.kind === \"component\" && isClientBoundaryPlaceholder(node, serverHydration)) {\n return true;\n }\n\n if (node.kind === \"component\") {\n return (\n node.children.some((child) => containsClientBoundary(child, serverHydration)) ||\n node.props.some(\n (prop) =>\n prop.kind === \"render-prop\" &&\n prop.children.some((child) => containsClientBoundary(child, serverHydration)),\n )\n );\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse].some((child) =>\n containsClientBoundary(child, serverHydration),\n );\n }\n\n if (node.kind === \"list\") {\n return node.children.some((child) => containsClientBoundary(child, serverHydration));\n }\n\n if (node.kind === \"element\" || node.kind === \"fragment\") {\n return node.children.some((child) => containsClientBoundary(child, serverHydration));\n }\n\n if (node.kind === \"async-boundary\") {\n return [\n ...node.children,\n ...(node.placeholderChildren ?? []),\n ...(node.catchChildren ?? []),\n ].some((child) => containsClientBoundary(child, serverHydration));\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 === \"component\") {\n if (node.runtime === \"compat\") {\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 === \"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 === \"element\" || node.kind === \"fragment\") {\n return node.children.some(containsReactNodeRender);\n }\n\n if (node.kind === \"async-boundary\") {\n return [\n ...node.children,\n ...(node.placeholderChildren ?? []),\n ...(node.catchChildren ?? []),\n ].some(containsReactNodeRender);\n }\n\n return false;\n}\n\nfunction containsRawJsxDynamicRender(node: JsxNodeIr): boolean {\n if (node.kind === \"expr\") {\n return node.renderMode !== \"react-node\" && looksLikeRawJsxExpression(node.code);\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse].some(containsRawJsxDynamicRender);\n }\n\n if (node.kind === \"list\") {\n return node.children.some(containsRawJsxDynamicRender);\n }\n\n if (node.kind === \"component\") {\n return (\n node.children.some(containsRawJsxDynamicRender) ||\n node.props.some(\n (prop) => prop.kind === \"render-prop\" && prop.children.some(containsRawJsxDynamicRender),\n )\n );\n }\n\n if (node.kind === \"element\" || node.kind === \"fragment\") {\n return node.children.some(containsRawJsxDynamicRender);\n }\n\n if (node.kind === \"async-boundary\") {\n return [\n ...node.children,\n ...(node.placeholderChildren ?? []),\n ...(node.catchChildren ?? []),\n ].some(containsRawJsxDynamicRender);\n }\n\n return false;\n}\n\nfunction emitPropsObject(\n props: ComponentPropIr[],\n children: JsxNodeIr[] = [],\n escapeHelperName = \"_escapeHtml\",\n componentName?: 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)}`;\n }\n\n return `${emitPropName(prop.name)}: (${prop.code})`;\n });\n\n if (children.length > 0) {\n const childrenExpression =\n emitStreamRendererFromChildren(children, escapeHelperName) ??\n emitHtmlExpressionFromChildren(children, escapeHelperName);\n entries.push(\n `children: ${isRouterLinkComponentName(componentName) ? `${componentName}.trustedHtml(${childrenExpression})` : childrenExpression}`,\n );\n }\n\n return `{ ${entries.join(\", \")} }`;\n}\n\nfunction isRouterLinkComponentName(name: string | undefined): name is string {\n return name !== undefined && (name === \"Link\" || name.endsWith(\".Link\"));\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 emitPropName(name: string): string {\n return /^[A-Za-z_$][\\w$]*$/.test(name) ? name : JSON.stringify(name);\n}\n\nfunction isClientBoundaryPlaceholder(\n node: Extract<JsxNodeIr, { kind: \"component\" }>,\n serverHydration = true,\n): boolean {\n return node.clientReference !== undefined && (!serverHydration || !isCompatClientReference(node));\n}\n\nfunction isCompatClientReference(node: Extract<JsxNodeIr, { kind: \"component\" }>): boolean {\n return (\n node.clientReference !== undefined &&\n /\\.(?:compat)\\.[cm]?[jt]sx?$/.test(node.clientReference.moduleId)\n );\n}\n\nfunction emitRenderableHtmlExpression(code: string): string {\n return `((_value) => _value == null || typeof _value === \"boolean\" ? \"\" : _value)(${code})`;\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 allocateComponentSinkName(component: ComponentIr): string {\n const reservedNames = new Set([component.name, component.exportName, ...component.bindingNames]);\n let name = \"$sink\";\n let index = 1;\n\n while (reservedNames.has(name)) {\n name = `$sink$${index}`;\n index += 1;\n }\n\n return name;\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 reservedNames.add(component.exportName);\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 stringLiteral(value: string): string {\n return JSON.stringify(value);\n}\n"]}
1
+ {"version":3,"file":"emit-server-stream.js","sourceRoot":"","sources":["../src/emit-server-stream.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n AsyncBoundaryIr,\n AttributeIr,\n ComponentPropIr,\n ComponentIr,\n JsxNodeIr,\n ModuleIr,\n} from \"./ir.js\";\nimport type { RuntimeImport, ServerBootstrapMode, ServerEscapeOptions } from \"./types.js\";\nimport { emitEscapeHtmlHelper } from \"./emit-escape-helper.js\";\nimport { createCodeBuilder } from \"./emit-code-builder.js\";\nimport {\n emitAsyncBoundary as emitLoweredAsyncBoundary,\n emitOutOfOrderBoundary as emitLoweredOutOfOrderBoundary,\n emitReactSuspenseBoundary as emitLoweredReactSuspenseBoundary,\n emitReactSuspenseOutOfOrderBoundary as emitLoweredReactSuspenseOutOfOrderBoundary,\n} from \"./emit-boundary-lowering.js\";\nimport { escapeHtmlAttribute as escapeHtml } from \"@reckona/mreact-shared/html-escape\";\nimport {\n htmlAttributeName,\n isBooleanishStringAttribute,\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 setOxcServerStringUrlSafeHelperName,\n} from \"./oxc-runtime-emit.js\";\n\nexport interface EmitServerStreamResult {\n code: string;\n imports: RuntimeImport[];\n}\n\nexport interface EmitServerStreamOptions {\n dynamicAttributes?: \"drop\" | \"emit\";\n serverBootstrap?: ServerBootstrapMode;\n serverBootstrapNonce?: string;\n serverBootstrapSrc?: string;\n serverHydration?: boolean;\n serverAwaitHydration?: boolean;\n escape?: ServerEscapeOptions | undefined;\n reactSuspenseRevealScriptSrc?: string;\n}\n\nlet currentUrlSafeHelperName: string = \"_urlAttrSafe\";\nlet currentClientBoundaryHelperName: string | undefined;\nlet currentSpreadAttributesHelperName: string = \"_renderSpreadAttributes\";\nlet currentStreamNodeHelperName: string = \"_renderStreamNode\";\nlet currentAsyncBoundaryHelperName: string = \"_renderAsyncBoundary\";\nlet currentOutOfOrderBoundaryHelperName: string = \"_renderOutOfOrderBoundary\";\nlet currentReactSuspenseBoundaryHelperName: string = \"_renderReactSuspenseBoundary\";\nlet currentReactSuspenseOutOfOrderBoundaryHelperName: string =\n \"_renderReactSuspenseOutOfOrderBoundary\";\nlet currentCompatRenderToStringHelperName: string = \"_renderCompatToString\";\nlet currentCompatChildHelperName: string | undefined;\nlet currentPropChildrenCollectState: CollectHtmlState | undefined;\n\nexport function emitServerStream(\n ir: ModuleIr,\n options: EmitServerStreamOptions = {},\n): EmitServerStreamResult {\n const serverBootstrap = options.serverBootstrap ?? \"none\";\n const escapeHelperName = allocateHelperName(ir, \"_escapeHtml\");\n const escapeBatchHelperName =\n options.escape === undefined ? undefined : allocateHelperName(ir, \"_escapeHtmlBatch\");\n const asyncBoundaryHelperName = allocateHelperName(ir, \"_renderAsyncBoundary\");\n const outOfOrderBoundaryHelperName = allocateHelperName(ir, \"_renderOutOfOrderBoundary\");\n const reorderScriptHelperName = allocateHelperName(ir, \"_renderOutOfOrderReorderScript\");\n const reactSuspenseBoundaryHelperName = allocateHelperName(ir, \"_renderReactSuspenseBoundary\");\n const reactSuspenseOutOfOrderBoundaryHelperName = allocateHelperName(\n ir,\n \"_renderReactSuspenseOutOfOrderBoundary\",\n );\n const compatRenderToStringHelperName = allocateHelperName(ir, \"_renderCompatToString\");\n const compatChildHelperName = usesCompatChildRender(ir)\n ? allocateHelperName(ir, \"_renderCompatChild\")\n : undefined;\n const streamNodeHelperName = allocateHelperName(ir, \"_renderStreamNode\");\n const clientBoundaryHelperName = usesClientBoundary(ir, options.serverHydration === true)\n ? allocateHelperName(ir, \"_renderClientBoundary\")\n : undefined;\n const spreadAttributesHelperName = allocateHelperName(ir, \"_renderSpreadAttributes\");\n const urlSafeHelperName = allocateHelperName(ir, \"_urlAttrSafe\");\n currentUrlSafeHelperName = urlSafeHelperName;\n setOxcServerStringUrlSafeHelperName(urlSafeHelperName);\n currentClientBoundaryHelperName = clientBoundaryHelperName;\n currentSpreadAttributesHelperName = spreadAttributesHelperName;\n currentStreamNodeHelperName = streamNodeHelperName;\n currentAsyncBoundaryHelperName = asyncBoundaryHelperName;\n currentOutOfOrderBoundaryHelperName = outOfOrderBoundaryHelperName;\n currentReactSuspenseBoundaryHelperName = reactSuspenseBoundaryHelperName;\n currentReactSuspenseOutOfOrderBoundaryHelperName = reactSuspenseOutOfOrderBoundaryHelperName;\n currentCompatRenderToStringHelperName = compatRenderToStringHelperName;\n currentCompatChildHelperName = compatChildHelperName;\n const helper = emitEscapeHtmlHelper(escapeHelperName);\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 components = ir.components\n .map((component) =>\n emitComponent(\n component,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reorderScriptHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n compatRenderToStringHelperName,\n {\n serverBootstrap,\n ...(options.serverBootstrapNonce === undefined\n ? {}\n : { serverBootstrapNonce: options.serverBootstrapNonce }),\n ...(options.serverBootstrapSrc === undefined\n ? {}\n : { serverBootstrapSrc: options.serverBootstrapSrc }),\n ...(options.serverHydration === undefined\n ? {}\n : { serverHydration: options.serverHydration }),\n ...(options.serverAwaitHydration === undefined\n ? {}\n : { serverAwaitHydration: options.serverAwaitHydration }),\n ...(options.reactSuspenseRevealScriptSrc === undefined\n ? {}\n : { reactSuspenseRevealScriptSrc: options.reactSuspenseRevealScriptSrc }),\n dynamicAttributes: options.dynamicAttributes ?? \"emit\",\n ...(escapeBatchHelperName === undefined ? {} : { escapeBatchHelperName }),\n },\n ),\n )\n .join(\"\\n\\n\");\n // Emit batch escape import only when the helper is actually referenced\n // (issue 048: dead-import elimination).\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 imports = collectImports(ir, serverBootstrap);\n const importAliases: Record<string, string> = {\n renderAsyncBoundary: asyncBoundaryHelperName,\n renderOutOfOrderBoundary: outOfOrderBoundaryHelperName,\n renderOutOfOrderReorderScript: reorderScriptHelperName,\n renderReactSuspenseBoundary: reactSuspenseBoundaryHelperName,\n renderReactSuspenseOutOfOrderBoundary: reactSuspenseOutOfOrderBoundaryHelperName,\n renderToString: compatRenderToStringHelperName,\n ...(compatChildHelperName === undefined\n ? {}\n : { renderChildToString: compatChildHelperName }),\n };\n const importLine = imports\n .map(\n (runtimeImport) =>\n `import { ${runtimeImport.specifiers\n .map((specifier) => `${specifier} as ${importAliases[specifier]}`)\n .join(\", \")} } from \"${runtimeImport.source}\";`,\n )\n .join(\"\\n\");\n const userImports = emitUserImports(ir);\n const moduleStatements = emitModuleStatements(ir);\n const importsBlock = [importLine, escapeImport, userImports, moduleStatements]\n .filter(Boolean)\n .join(\"\\n\");\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 const streamNodeBlock = components.includes(streamNodeHelperName)\n ? emitStreamNodeHelper(streamNodeHelperName)\n : \"\";\n const code = createCodeBuilder();\n code.section(importsBlock);\n code.section(helper);\n code.section(urlSafeBlock);\n code.section(clientBoundaryBlock);\n code.section(spreadAttributesBlock);\n code.section(streamNodeBlock);\n code.section(components);\n\n return {\n code: code.toString(),\n imports,\n };\n}\n\nfunction emitUserImports(ir: ModuleIr): string {\n return ir.components.length === 0 ? \"\" : ir.userImports.join(\"\\n\");\n}\n\nfunction emitModuleStatements(ir: ModuleIr): string {\n return ir.components.length === 0 ? \"\" : ir.moduleStatements.join(\"\\n\");\n}\n\nfunction collectImports(ir: ModuleIr, serverBootstrap: ServerBootstrapMode): RuntimeImport[] {\n const serverSpecifiers = [\n ...(hasInOrderAsyncBoundary(ir) ? [\"renderAsyncBoundary\"] : []),\n ...(hasOutOfOrderAsyncBoundary(ir) ? [\"renderOutOfOrderBoundary\"] : []),\n ...(serverBootstrap === \"out-of-order-reorder\" && hasOutOfOrderAsyncBoundary(ir)\n ? [\"renderOutOfOrderReorderScript\"]\n : []),\n ...(hasReactSuspenseBoundary(ir) ? [\"renderReactSuspenseBoundary\"] : []),\n ...(hasReactSuspenseOutOfOrderBoundary(ir) ? [\"renderReactSuspenseOutOfOrderBoundary\"] : []),\n ];\n const imports: RuntimeImport[] = [];\n\n if (serverSpecifiers.length > 0) {\n imports.push({\n source: \"@reckona/mreact-server\",\n specifiers: serverSpecifiers,\n });\n }\n\n const compatSpecifiers = [\n ...(hasCompatComponentReference(ir) || hasReactNodeRender(ir) || hasRawJsxDynamicRender(ir)\n ? [\"renderToString\"]\n : []),\n ...(usesCompatChildRender(ir) ? [\"renderChildToString\"] : []),\n ];\n\n if (compatSpecifiers.length > 0) {\n imports.push({\n source: \"@reckona/mreact-compat\",\n specifiers: compatSpecifiers,\n });\n }\n\n return imports;\n}\n\nfunction hasInOrderAsyncBoundary(ir: ModuleIr): boolean {\n return ir.components.some((component) => containsAsyncBoundary(component.root, false));\n}\n\nfunction hasOutOfOrderAsyncBoundary(ir: ModuleIr): boolean {\n return ir.components.some((component) => containsAsyncBoundary(component.root, true));\n}\n\nfunction hasReactSuspenseBoundary(ir: ModuleIr): boolean {\n return ir.components.some((component) => containsReactSuspense(component.root, false));\n}\n\nfunction hasReactSuspenseOutOfOrderBoundary(ir: ModuleIr): boolean {\n return ir.components.some((component) => containsReactSuspense(component.root, true));\n}\n\nfunction hasCompatComponentReference(ir: ModuleIr): boolean {\n return ir.components.some((component) => containsCompatComponent(component.root));\n}\n\nfunction hasReactNodeRender(ir: ModuleIr): boolean {\n return ir.components.some((component) => containsReactNodeRender(component.root));\n}\n\nfunction hasRawJsxDynamicRender(ir: ModuleIr): boolean {\n return ir.components.some((component) => containsRawJsxDynamicRender(component.root));\n}\n\nfunction usesClientBoundary(ir: ModuleIr, serverHydration: boolean): boolean {\n return ir.components.some((component) => containsClientBoundary(component.root, serverHydration));\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(\"&\", \"&amp;\").replaceAll('\"', \"&quot;\").replaceAll(\"<\", \"&lt;\").replaceAll(\">\", \"&gt;\");`,\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) ?? \"{}\")`,\n ` .replaceAll(\"&\", \"\\\\\\\\u0026\")`,\n ` .replaceAll(\"<\", \"\\\\\\\\u003c\")`,\n ` .replaceAll(\">\", \"\\\\\\\\u003e\")`,\n ` .replaceAll(\"\\\\u2028\", \"\\\\\\\\u2028\")`,\n ` .replaceAll(\"\\\\u2029\", \"\\\\\\\\u2029\");`,\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) 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 ` const _booleanish = _name.startsWith(\"aria-\") || _name.startsWith(\"data-\") || _name === \"contenteditable\" || _name === \"draggable\" || _name === \"spellcheck\";`,\n ` if (_value === false && !_booleanish) 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 && !_booleanish ? \"\" : _value) + \"\\\\\"\";`,\n ` }`,\n ` return _out;`,\n `}`,\n ].join(\"\\n\");\n}\n\nfunction emitStreamNodeHelper(name: string): string {\n return [\n `async function ${name}($sink, value, escapeHtml) {`,\n ` if (value == null || value === false) return;`,\n ` if (typeof value === \"function\") { await value($sink); return; }`,\n ` if (Array.isArray(value)) { for (const item of value) await ${name}($sink, item, escapeHtml); return; }`,\n ` if (typeof value === \"string\") { $sink.append(value); return; }`,\n ` $sink.append(escapeHtml(value === true ? \"\" : value));`,\n `}`,\n ].join(\"\\n\");\n}\n\nfunction emitComponent(\n component: ComponentIr,\n escapeHelperName: string,\n asyncBoundaryHelperName: string,\n outOfOrderBoundaryHelperName: string,\n reorderScriptHelperName: string,\n reactSuspenseBoundaryHelperName: string,\n reactSuspenseOutOfOrderBoundaryHelperName: string,\n compatRenderToStringHelperName: string,\n options: Required<Pick<EmitServerStreamOptions, \"serverBootstrap\">> &\n Omit<EmitServerStreamOptions, \"serverBootstrap\"> & {\n dynamicAttributes: \"drop\" | \"emit\";\n escapeBatchHelperName?: string;\n },\n): string {\n const { serverBootstrap, serverBootstrapNonce, serverBootstrapSrc } = options;\n const sinkName = allocateComponentSinkName(component);\n const parameters = [sinkName, ...component.parameters].join(\", \");\n const body = component.bodyStatements.map(\n (statement) =>\n ` ${statement.replaceAll(\n oxcServerStringReactNodeRenderHelperPlaceholder,\n compatRenderToStringHelperName,\n )}`,\n );\n const markerId = encodeURIComponent(component.name);\n const hydrationStartStatements =\n options.serverHydration === true\n ? [` ${sinkName}.append(${stringLiteral(`<!--mreact-h:start:${markerId}-->`)});`]\n : [];\n const appendStatements = emitAppendStatements(\n component.root,\n sinkName,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n compatRenderToStringHelperName,\n options.serverBootstrapNonce,\n options.reactSuspenseRevealScriptSrc,\n options.serverHydration === true,\n options.serverAwaitHydration === true,\n options.dynamicAttributes,\n options.escapeBatchHelperName,\n );\n const bootstrapStatements =\n serverBootstrap === \"out-of-order-reorder\" && containsAsyncBoundary(component.root, true)\n ? [\n ` ${reorderScriptHelperName}(${sinkName}${emitBootstrapOptions(serverBootstrapNonce, serverBootstrapSrc)});`,\n ]\n : [];\n const hydrationEndStatements =\n options.serverHydration === true\n ? [` ${sinkName}.append(${stringLiteral(`<!--mreact-h:end:${markerId}-->`)});`]\n : [];\n const exportPrefix =\n component.exportDefault === true\n ? \"export default \"\n : component.exported === false\n ? \"\"\n : \"export \";\n const asyncPrefix =\n component.async === true || containsAnyAsyncBoundary(component.root) ? \"async \" : \"\";\n const functionKeyword = `${exportPrefix}${asyncPrefix}function`;\n\n return [\n `${functionKeyword} ${component.name}(${parameters}) {`,\n ...body,\n ...hydrationStartStatements,\n ...appendStatements,\n ...hydrationEndStatements,\n ...bootstrapStatements,\n `}`,\n ].join(\"\\n\");\n}\n\nfunction emitBootstrapOptions(nonce?: string, src?: string): string {\n const entries = [\n ...(nonce === undefined ? [] : [`nonce: ${stringLiteral(nonce)}`]),\n ...(src === undefined ? [] : [`src: ${stringLiteral(src)}`]),\n ];\n\n return entries.length === 0 ? \"\" : `, { ${entries.join(\", \")} }`;\n}\n\nfunction emitAppendStatements(\n node: JsxNodeIr,\n sinkName: string,\n escapeHelperName: string,\n asyncBoundaryHelperName: string,\n outOfOrderBoundaryHelperName: string,\n reactSuspenseBoundaryHelperName: string,\n reactSuspenseOutOfOrderBoundaryHelperName: string,\n compatRenderToStringHelperName: string,\n reactSuspenseRevealScriptNonce: string | undefined,\n reactSuspenseRevealScriptSrc: string | undefined,\n hydration: boolean,\n awaitHydration: boolean,\n dynamicAttributes: \"drop\" | \"emit\",\n escapeBatchHelperName: string | undefined,\n): string[] {\n if (node.kind === \"conditional\") {\n const emitBranch = (children: readonly JsxNodeIr[]): string[] =>\n children.flatMap((child) =>\n emitAppendStatements(\n child,\n sinkName,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n compatRenderToStringHelperName,\n reactSuspenseRevealScriptNonce,\n reactSuspenseRevealScriptSrc,\n hydration,\n awaitHydration,\n dynamicAttributes,\n escapeBatchHelperName,\n ),\n );\n const indentBranch = (line: string) => ` ${line}`;\n const whenTrue = emitBranch(node.whenTrue).map(indentBranch);\n const whenFalse = emitBranch(node.whenFalse).map(indentBranch);\n\n if (whenTrue.length === 0 && whenFalse.length === 0) {\n return [];\n }\n\n const conditionCode = node.conditionValueName ?? node.conditionCode;\n let statements: string[];\n\n if (whenFalse.length === 0) {\n statements = [` if (${conditionCode}) {`, ...whenTrue, ` }`];\n } else {\n statements = [` if (${conditionCode}) {`, ...whenTrue, ` } else {`, ...whenFalse, ` }`];\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 const collectState: CollectHtmlState = {\n dynamicAttributes,\n ...(escapeBatchHelperName === undefined ? {} : { escapeBatchHelperName }),\n hydration,\n awaitHydration,\n nextFragmentId: 0,\n ...(reactSuspenseRevealScriptNonce === undefined ? {} : { reactSuspenseRevealScriptNonce }),\n ...(reactSuspenseRevealScriptSrc === undefined ? {} : { reactSuspenseRevealScriptSrc }),\n };\n const collected = collectHtmlParts(\n node,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n collectState,\n );\n const previousPropChildrenCollectState = currentPropChildrenCollectState;\n currentPropChildrenCollectState = collectState;\n try {\n return coalesceAdjacentStaticParts(collected).map((part) => {\n if (part.kind === \"async-boundary\") {\n return emitLoweredAsyncBoundary(part, {\n asyncBoundaryHelperName,\n compatRenderToStringHelperName,\n emitNestedAppendStatements,\n sinkName,\n });\n }\n\n if (part.kind === \"out-of-order-boundary\") {\n return emitLoweredOutOfOrderBoundary(part, {\n compatRenderToStringHelperName,\n emitNestedAppendStatements,\n outOfOrderBoundaryHelperName,\n sinkName,\n });\n }\n\n if (part.kind === \"react-suspense-boundary\") {\n return emitLoweredReactSuspenseBoundary(part, {\n compatRenderToStringHelperName,\n emitNestedAppendStatements,\n reactSuspenseBoundaryHelperName,\n sinkName,\n });\n }\n\n if (part.kind === \"react-suspense-out-of-order-boundary\") {\n return emitLoweredReactSuspenseOutOfOrderBoundary(part, {\n compatRenderToStringHelperName,\n emitNestedAppendStatements,\n reactSuspenseOutOfOrderBoundaryHelperName,\n sinkName,\n });\n }\n\n if (part.kind === \"component\") {\n if (part.runtime === \"compat\") {\n return emitCompatComponentAppendStatements(\n part,\n sinkName,\n compatRenderToStringHelperName,\n \" \",\n );\n }\n\n return ` await ${part.name}(${sinkName}, ${emitPropsObject(part.props, part.children, part.escapeHelperName, part.name)});`;\n }\n\n if (part.kind === \"react-node\") {\n return ` ${sinkName}.append(${compatRenderToStringHelperName}(() => (${part.code})));`;\n }\n\n if (part.kind === \"stream-node\") {\n return ` await ${currentStreamNodeHelperName}(${sinkName}, (${part.code}), ${part.escapeHelperName});`;\n }\n\n if (part.kind === \"list\") {\n return emitListPart(part, sinkName, compatRenderToStringHelperName, \" \");\n }\n\n if (part.kind === \"dynamic\" && looksLikeRawJsxExpression(part.code)) {\n return emitDynamicHtmlAppendStatement(\n part.code,\n sinkName,\n escapeHelperName,\n compatRenderToStringHelperName,\n \" \",\n );\n }\n\n const expression =\n part.kind === \"static\"\n ? stringLiteral(part.value)\n : part.kind === \"dynamic\"\n ? `${escapeHelperName}(${part.code})`\n : part.code;\n\n return ` ${sinkName}.append(${expression});`;\n });\n } finally {\n currentPropChildrenCollectState = previousPropChildrenCollectState;\n }\n}\n\nfunction isHtmlSyncPart(part: HtmlPart): part is HtmlSyncPart {\n return (\n part.kind !== \"async-boundary\" &&\n part.kind !== \"out-of-order-boundary\" &&\n part.kind !== \"react-suspense-boundary\" &&\n part.kind !== \"react-suspense-out-of-order-boundary\"\n );\n}\n\n// Issue 085: collapse runs of adjacent `static` parts into a single\n// `static` part. Each part becomes one `sink.append(...)` call at emit\n// time and `sink.append` goes through 2-3 function frames, so merging\n// `[\"<span\", \">\"]` into `\"<span>\"` halves the per-iteration call count\n// for tag-heavy lists.\n//\n// Only adjacent static-kind parts are merged; dynamic / boundary /\n// component / list / react-node parts stay where they are.\nfunction coalesceAdjacentStaticParts<T extends HtmlPart>(parts: T[]): T[] {\n if (parts.length < 2) return parts;\n const result: T[] = [];\n let pending: { kind: \"static\"; value: string } | undefined;\n for (const part of parts) {\n if (part.kind === \"static\") {\n pending =\n pending === undefined\n ? { kind: \"static\", value: part.value }\n : { kind: \"static\", value: pending.value + part.value };\n continue;\n }\n if (pending !== undefined) {\n result.push(pending as T);\n pending = undefined;\n }\n result.push(part);\n }\n if (pending !== undefined) {\n result.push(pending as T);\n }\n return result;\n}\n\nfunction emitSyncPartAsAppendStatement(\n part: HtmlSyncPart,\n sinkName: string,\n compatRenderToStringHelperName: string,\n indent: string,\n): string {\n if (part.kind === \"component\") {\n if (part.runtime === \"compat\") {\n return emitCompatComponentAppendStatements(\n part,\n sinkName,\n compatRenderToStringHelperName,\n indent,\n );\n }\n\n return `${indent}await ${part.name}(${sinkName}, ${emitPropsObject(part.props, part.children, part.escapeHelperName, part.name)});`;\n }\n\n if (part.kind === \"react-node\") {\n return `${indent}${sinkName}.append(${compatRenderToStringHelperName}(() => (${part.code})));`;\n }\n\n if (part.kind === \"stream-node\") {\n return `${indent}await ${currentStreamNodeHelperName}(${sinkName}, (${part.code}), ${part.escapeHelperName});`;\n }\n\n if (part.kind === \"list\") {\n return emitListPart(part, sinkName, compatRenderToStringHelperName, indent);\n }\n\n if (part.kind === \"dynamic\" && looksLikeRawJsxExpression(part.code)) {\n return emitDynamicHtmlAppendStatement(\n part.code,\n sinkName,\n part.escapeHelperName,\n compatRenderToStringHelperName,\n indent,\n );\n }\n\n const expression =\n part.kind === \"static\"\n ? stringLiteral(part.value)\n : part.kind === \"dynamic\"\n ? `${part.escapeHelperName}(${part.code})`\n : part.code;\n\n return `${indent}${sinkName}.append(${expression});`;\n}\n\nfunction emitListPart(\n part: Extract<HtmlPart, { kind: \"list\" }>,\n sinkName: string,\n compatRenderToStringHelperName: string,\n indent: string,\n): string {\n const innerIndent = indent + \" \";\n const itemBinding = `${innerIndent}const ${part.itemName} = _arr[_i];`;\n const indexBinding =\n part.indexName === undefined ? undefined : `${innerIndent}const ${part.indexName} = _i;`;\n const arrayBinding =\n part.arrayName === undefined ? undefined : `${innerIndent}const ${part.arrayName} = _arr;`;\n const bodyLines = part.bodyStatements.map((statement) => `${innerIndent}${statement}`);\n const coalescedParts = coalesceAdjacentStaticParts(part.parts);\n\n // Issue 085 follow-up: if every child part can be expressed as a\n // pure string expression (no `sink.append`/`await` required), build\n // up a local ConsString accumulator and emit a single\n // `sink.append(_listOut)` at the end of the iteration. This matches\n // the string backend's `_out +=` pattern, which V8 turns into a\n // shallow cons-string tree (~3 ns per append). Otherwise (the list\n // contains components / nested lists with components / etc) fall\n // back to per-part `sink.append` inside the loop.\n const syncCoalescedParts = coalescedParts.every(isHtmlSyncPart) ? coalescedParts : undefined;\n const stringExpressions =\n syncCoalescedParts?.map((child) =>\n tryEmitPartAsStringExpression(child, compatRenderToStringHelperName),\n ) ?? [];\n const allStringSafe =\n syncCoalescedParts !== undefined && stringExpressions.every((expr) => expr !== undefined);\n\n if (allStringSafe) {\n const accumulatorName = \"_listOut\";\n const concatLines = stringExpressions.map(\n (expr) => `${innerIndent}${accumulatorName} += ${expr};`,\n );\n return [\n `${indent}{`,\n `${indent} const _arr = (${part.itemsCode});`,\n `${indent} let ${accumulatorName} = \"\";`,\n `${indent} for (let _i = 0, _len = _arr.length; _i < _len; _i++) {`,\n itemBinding,\n ...(indexBinding === undefined ? [] : [indexBinding]),\n ...(arrayBinding === undefined ? [] : [arrayBinding]),\n ...bodyLines,\n ...concatLines,\n `${indent} }`,\n `${indent} ${sinkName}.append(${accumulatorName});`,\n `${indent}}`,\n ].join(\"\\n\");\n }\n\n const childLines =\n syncCoalescedParts === undefined\n ? [emitNestedStreamAppendStatements(coalescedParts, sinkName, compatRenderToStringHelperName)]\n : syncCoalescedParts.map((child) =>\n emitSyncPartAsAppendStatement(\n child,\n sinkName,\n compatRenderToStringHelperName,\n innerIndent,\n ),\n );\n\n return [\n `${indent}{`,\n `${indent} const _arr = (${part.itemsCode});`,\n `${indent} for (let _i = 0, _len = _arr.length; _i < _len; _i++) {`,\n itemBinding,\n ...(indexBinding === undefined ? [] : [indexBinding]),\n ...(arrayBinding === undefined ? [] : [arrayBinding]),\n ...bodyLines,\n ...childLines,\n `${indent} }`,\n `${indent}}`,\n ].join(\"\\n\");\n}\n\n// Returns a string-typed expression for `part` if it can be evaluated\n// synchronously without writing to the sink, otherwise undefined.\n// Used by `emitListPart` to choose between the cons-string accumulator\n// path and the per-part `sink.append` path.\nfunction tryEmitPartAsStringExpression(\n part: HtmlSyncPart,\n compatRenderToStringHelperName: string,\n): string | undefined {\n if (part.kind === \"static\") return stringLiteral(part.value);\n if (part.kind === \"dynamic\") {\n return looksLikeRawJsxExpression(part.code)\n ? undefined\n : `${part.escapeHelperName}(${part.code})`;\n }\n if (part.kind === \"raw-dynamic\") return `(${part.code})`;\n if (part.kind === \"react-node\") {\n return `${compatRenderToStringHelperName}(() => (${part.code}))`;\n }\n if (part.kind === \"stream-node\") {\n return undefined;\n }\n if (part.kind === \"list\" && part.parts.every(isHtmlSyncPart)) {\n return emitListPartAsStringExpression(part, compatRenderToStringHelperName);\n }\n if (part.kind === \"component\" && part.runtime === \"compat\") {\n const rendered = `${compatRenderToStringHelperName}(${part.name}, ${emitCompatRuntimePropsObject(part.props, part.children)})`;\n if (part.hydrationId === undefined) {\n return rendered;\n }\n\n return `${stringLiteral(`<!--mreact-h:start:${encodeURIComponent(part.hydrationId)}-->`)} + ${rendered} + ${stringLiteral(`<!--mreact-h:end:${encodeURIComponent(part.hydrationId)}-->`)}`;\n }\n if (part.kind === \"component\" && part.hydrationId === undefined) {\n return emitRenderableHtmlExpression(\n `${part.name}(${emitPropsObject(part.props, part.children, part.escapeHelperName, part.name)})`,\n );\n }\n // Non-compat component parts require `await sink-write`; lists with\n // sink-needing children also can't collapse. Signal fallback.\n return undefined;\n}\n\nfunction emitListPartAsStringExpression(\n part: Extract<HtmlPart, { kind: \"list\" }>,\n compatRenderToStringHelperName: string,\n): string | undefined {\n const coalescedParts = coalesceAdjacentStaticParts(part.parts);\n if (!coalescedParts.every(isHtmlSyncPart)) {\n return undefined;\n }\n\n const stringExpressions = coalescedParts.map((child) =>\n tryEmitPartAsStringExpression(child, compatRenderToStringHelperName),\n );\n\n if (stringExpressions.some((expr) => expr === undefined)) {\n return undefined;\n }\n\n const concatLines = stringExpressions.map((expr) => `_listOut += ${expr};`);\n return `(() => { const _arr = (${part.itemsCode}); let _listOut = \"\"; for (let _i = 0, _len = _arr.length; _i < _len; _i++) { const ${part.itemName} = _arr[_i];${part.indexName === undefined ? \"\" : ` const ${part.indexName} = _i;`}${part.arrayName === undefined ? \"\" : ` const ${part.arrayName} = _arr;`}${part.bodyStatements.length === 0 ? \"\" : ` ${part.bodyStatements.join(\" \")}`} ${concatLines.join(\" \")} } return _listOut; })()`;\n}\n\nfunction emitNestedAppendStatements(\n parts: readonly HtmlSyncPart[],\n sinkName: string,\n compatRenderToStringHelperName: string,\n): string {\n return coalesceAdjacentStaticParts([...parts])\n .map((part) =>\n emitSyncPartAsAppendStatement(part, sinkName, compatRenderToStringHelperName, \" \"),\n )\n .join(\"\\n\");\n}\n\nfunction emitNestedStreamAppendStatements(\n parts: HtmlPart[],\n sinkName: string,\n compatRenderToStringHelperName: string,\n): string {\n return coalesceAdjacentStaticParts(parts)\n .map((part) => {\n if (part.kind === \"async-boundary\") {\n return emitLoweredAsyncBoundary(part, {\n asyncBoundaryHelperName: currentAsyncBoundaryHelperName,\n compatRenderToStringHelperName,\n emitNestedAppendStatements,\n sinkName,\n }).replace(/^/gm, \" \");\n }\n\n if (part.kind === \"out-of-order-boundary\") {\n return emitLoweredOutOfOrderBoundary(part, {\n compatRenderToStringHelperName,\n emitNestedAppendStatements,\n outOfOrderBoundaryHelperName: currentOutOfOrderBoundaryHelperName,\n sinkName,\n }).replace(/^/gm, \" \");\n }\n\n if (part.kind === \"react-suspense-boundary\") {\n return emitLoweredReactSuspenseBoundary(part, {\n compatRenderToStringHelperName,\n emitNestedAppendStatements,\n reactSuspenseBoundaryHelperName: currentReactSuspenseBoundaryHelperName,\n sinkName,\n }).replace(/^/gm, \" \");\n }\n\n if (part.kind === \"react-suspense-out-of-order-boundary\") {\n return emitLoweredReactSuspenseOutOfOrderBoundary(part, {\n compatRenderToStringHelperName,\n emitNestedAppendStatements,\n reactSuspenseOutOfOrderBoundaryHelperName:\n currentReactSuspenseOutOfOrderBoundaryHelperName,\n sinkName,\n }).replace(/^/gm, \" \");\n }\n\n return emitSyncPartAsAppendStatement(part, sinkName, compatRenderToStringHelperName, \" \");\n })\n .join(\"\\n\");\n}\n\nfunction emitCompatComponentAppendStatements(\n part: Extract<HtmlPart, { kind: \"component\" }>,\n sinkName: string,\n compatRenderToStringHelperName: string,\n indent: string,\n): string {\n const rendered = `${compatRenderToStringHelperName}(${part.name}, ${emitCompatRuntimePropsObject(part.props, part.children)})`;\n const statements =\n part.hydrationId === undefined\n ? [`${sinkName}.append(${rendered});`]\n : [\n `${sinkName}.append(${stringLiteral(`<!--mreact-h:start:${encodeURIComponent(part.hydrationId)}-->`)});`,\n `${sinkName}.append(${rendered});`,\n `${sinkName}.append(${stringLiteral(`<!--mreact-h:end:${encodeURIComponent(part.hydrationId)}-->`)});`,\n ];\n\n return statements.map((statement) => `${indent}${statement}`).join(\"\\n\");\n}\n\ntype HtmlPart =\n | {\n kind: \"static\";\n value: string;\n }\n | {\n kind: \"dynamic\";\n code: string;\n escapeHelperName: string;\n }\n | {\n kind: \"raw-dynamic\";\n code: string;\n }\n | {\n kind: \"react-node\";\n code: string;\n }\n | {\n kind: \"stream-node\";\n code: string;\n escapeHelperName: string;\n }\n | {\n kind: \"async-boundary\";\n valueCode: string;\n valueName: string;\n parts: HtmlSyncPart[];\n catchName?: string;\n catchParts?: HtmlSyncPart[];\n awaitId?: string;\n }\n | {\n kind: \"out-of-order-boundary\";\n id: string;\n hydration: boolean;\n valueCode: string;\n valueName: string;\n parts: HtmlSyncPart[];\n placeholderParts: HtmlSyncPart[];\n placeholderTagCode?: string;\n catchName?: string;\n catchParts?: HtmlSyncPart[];\n awaitId?: string;\n }\n | {\n kind: \"react-suspense-boundary\";\n parts: HtmlSyncPart[];\n }\n | {\n kind: \"react-suspense-out-of-order-boundary\";\n boundaryId: string;\n segmentId: string;\n valueCode: string;\n valueName: string;\n parts: HtmlSyncPart[];\n fallbackParts: HtmlSyncPart[];\n catchName?: string;\n catchParts?: HtmlSyncPart[];\n nonce?: string;\n scriptSrc?: string;\n }\n | {\n kind: \"component\";\n name: string;\n runtime?: \"compat\";\n async?: boolean;\n hydrationId?: string;\n props: ComponentPropIr[];\n children: JsxNodeIr[];\n escapeHelperName: string;\n }\n | {\n // Issue 085: list direct streaming. The list iterates\n // `itemsCode`, runs `bodyStatements` and then emits each inner\n // part per iteration. Sync-only lists still use the string\n // accumulator fast path; lists that contain async/oob/Suspense\n // boundaries keep those boundary parts visible to the stream\n // emitter instead of falling back to a raw `.map().join(\"\")`.\n kind: \"list\";\n itemsCode: string;\n itemName: string;\n indexName?: string;\n arrayName?: string;\n bodyStatements: string[];\n parts: HtmlPart[];\n };\n\ntype HtmlSyncPart = Exclude<\n HtmlPart,\n {\n kind:\n | \"async-boundary\"\n | \"out-of-order-boundary\"\n | \"react-suspense-boundary\"\n | \"react-suspense-out-of-order-boundary\";\n }\n>;\n\ninterface CollectHtmlState {\n dynamicAttributes: \"drop\" | \"emit\";\n escapeBatchHelperName?: string;\n hydration: boolean;\n awaitHydration: boolean;\n nextFragmentId: number;\n reactSuspenseRevealScriptNonce?: string;\n reactSuspenseRevealScriptSrc?: string;\n selectedValueCode?: string;\n}\n\nfunction collectHtmlParts(\n node: JsxNodeIr,\n escapeHelperName: string,\n asyncBoundaryHelperName: string,\n outOfOrderBoundaryHelperName: string,\n reactSuspenseBoundaryHelperName: string,\n reactSuspenseOutOfOrderBoundaryHelperName: string,\n state: CollectHtmlState,\n): HtmlPart[] {\n void asyncBoundaryHelperName;\n void outOfOrderBoundaryHelperName;\n void reactSuspenseBoundaryHelperName;\n void reactSuspenseOutOfOrderBoundaryHelperName;\n\n if (node.kind === \"text\") {\n return [{ kind: \"static\", value: escapeHtml(node.value) }];\n }\n\n if (node.kind === \"expr\") {\n if (node.renderMode === \"html\" && isChildrenExpressionCode(node.code)) {\n return [{ kind: \"stream-node\", code: node.code, escapeHelperName }];\n }\n\n if (node.renderMode === \"html\") {\n return [{ kind: \"raw-dynamic\", code: rawHtmlExpression(node.code) }];\n }\n\n if (node.renderMode === \"react-node\") {\n return [{ kind: \"react-node\", code: node.code }];\n }\n\n if (node.renderMode === \"stream-node\") {\n return [{ kind: \"stream-node\", code: node.code, escapeHelperName }];\n }\n\n if (node.renderMode === \"compat-child\" && currentCompatChildHelperName !== undefined) {\n return [{ kind: \"raw-dynamic\", code: `${currentCompatChildHelperName}(${node.code})` }];\n }\n\n return [{ kind: \"dynamic\", code: node.code, escapeHelperName }];\n }\n\n if (node.kind === \"conditional\") {\n const whenTrue = emitHtmlExpressionFromChildren(node.whenTrue, escapeHelperName);\n const whenFalse = emitHtmlExpressionFromChildren(node.whenFalse, escapeHelperName);\n\n return [\n {\n kind: \"raw-dynamic\",\n code:\n node.conditionValueName === undefined\n ? `((${node.conditionCode}) ? ${whenTrue} : ${whenFalse})`\n : `(() => { const ${node.conditionValueName} = (${node.conditionCode}); return ${node.conditionValueName} ? ${whenTrue} : ${whenFalse}; })()`,\n },\n ];\n }\n\n if (node.kind === \"list\") {\n // Keep mapped children in the stream emitter so direct `<Await>`\n // boundaries inside list renderers stay visible to out-of-order\n // lowering.\n const collectedChildParts: HtmlPart[] = node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n );\n\n return [\n {\n kind: \"list\",\n itemsCode: node.itemsCode,\n itemName: node.itemName,\n ...(node.indexName === undefined ? {} : { indexName: node.indexName }),\n ...(node.arrayName === undefined ? {} : { arrayName: node.arrayName }),\n bodyStatements: node.bodyStatements ?? [],\n parts: collectedChildParts,\n },\n ];\n }\n\n if (node.kind === \"async-boundary\") {\n if (node.placeholderChildren !== undefined) {\n const id = `mreact-${state.nextFragmentId}`;\n state.nextFragmentId += 1;\n\n return [\n {\n kind: \"out-of-order-boundary\",\n id,\n hydration: state.hydration,\n valueCode: node.valueCode,\n valueName: node.valueName,\n parts: node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ) as HtmlSyncPart[],\n placeholderParts: node.placeholderChildren.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ) as HtmlSyncPart[],\n ...(node.placeholderTagCode === undefined\n ? {}\n : { placeholderTagCode: node.placeholderTagCode }),\n ...(state.awaitHydration && node.awaitId !== undefined ? { awaitId: node.awaitId } : {}),\n ...(node.catchName === undefined || node.catchChildren === undefined\n ? {}\n : {\n catchName: node.catchName,\n catchParts: node.catchChildren.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ) as HtmlSyncPart[],\n }),\n },\n ];\n }\n\n return [\n {\n kind: \"async-boundary\",\n valueCode: node.valueCode,\n valueName: node.valueName,\n parts: node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ) as HtmlSyncPart[],\n ...(state.awaitHydration && node.awaitId !== undefined ? { awaitId: node.awaitId } : {}),\n ...(node.catchName === undefined || node.catchChildren === undefined\n ? {}\n : {\n catchName: node.catchName,\n catchParts: node.catchChildren.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ) as HtmlSyncPart[],\n }),\n },\n ];\n }\n\n if (node.kind === \"fragment\") {\n return node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n );\n }\n\n if (node.kind === \"component\") {\n if (node.name === \"Suspense\") {\n const asyncBoundary = findSuspenseAsyncBoundary(node.children);\n\n if (asyncBoundary !== undefined) {\n const id = state.nextFragmentId;\n state.nextFragmentId += 1;\n\n return [\n {\n kind: \"react-suspense-out-of-order-boundary\",\n boundaryId: `B:${id}`,\n segmentId: `S:${id}`,\n valueCode: asyncBoundary.valueCode,\n valueName: asyncBoundary.valueName,\n parts: replaceSuspenseAsyncBoundary(\n node.children,\n asyncBoundary,\n asyncBoundary.children,\n ).flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ) as HtmlSyncPart[],\n fallbackParts: collectSuspenseFallbackParts(\n node.props,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ...(state.reactSuspenseRevealScriptNonce === undefined\n ? {}\n : { nonce: state.reactSuspenseRevealScriptNonce }),\n ...(state.reactSuspenseRevealScriptSrc === undefined\n ? {}\n : { scriptSrc: state.reactSuspenseRevealScriptSrc }),\n ...(asyncBoundary.catchName === undefined || asyncBoundary.catchChildren === undefined\n ? {}\n : {\n catchName: asyncBoundary.catchName,\n catchParts: replaceSuspenseAsyncBoundary(\n node.children,\n asyncBoundary,\n asyncBoundary.catchChildren,\n ).flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ) as HtmlSyncPart[],\n }),\n },\n ];\n }\n\n if (containsAsyncComponent(node.children)) {\n const id = state.nextFragmentId;\n state.nextFragmentId += 1;\n\n return [\n {\n kind: \"react-suspense-out-of-order-boundary\",\n boundaryId: `B:${id}`,\n segmentId: `S:${id}`,\n valueCode: \"undefined\",\n valueName: \"_\",\n parts: node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ) as HtmlSyncPart[],\n fallbackParts: collectSuspenseFallbackParts(\n node.props,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ...(state.reactSuspenseRevealScriptNonce === undefined\n ? {}\n : { nonce: state.reactSuspenseRevealScriptNonce }),\n ...(state.reactSuspenseRevealScriptSrc === undefined\n ? {}\n : { scriptSrc: state.reactSuspenseRevealScriptSrc }),\n },\n ];\n }\n\n return [\n {\n kind: \"react-suspense-boundary\",\n parts: node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ) as HtmlSyncPart[],\n },\n ];\n }\n\n if (isClientBoundaryPlaceholder(node, state.hydration)) {\n const helperName = currentClientBoundaryHelperName;\n if (helperName !== undefined) {\n const boundaryProps = emitPropsObject(node.props, [], escapeHelperName);\n const fallbackHtml = shouldRenderClientBoundaryFallback(node)\n ? `${node.name}(${boundaryProps})`\n : emitHtmlExpressionFromChildren(node.children, escapeHelperName);\n return [\n {\n kind: \"raw-dynamic\",\n code: `${helperName}(${stringLiteral(node.name)}, ${boundaryProps}, ${fallbackHtml})`,\n },\n ];\n }\n\n return [{ kind: \"static\", value: clientBoundaryPlaceholder(node) }];\n }\n\n return [\n {\n kind: \"component\",\n name: node.name,\n ...(node.runtime === undefined ? {} : { runtime: node.runtime }),\n ...(node.async === undefined ? {} : { async: node.async }),\n ...(node.runtime === \"compat\" && state.hydration\n ? { hydrationId: `mreact-${state.nextFragmentId++}` }\n : {}),\n props: node.props,\n children: node.children,\n escapeHelperName,\n },\n ];\n }\n\n const closeTag = `</${node.tagName}>`;\n if (node.tagName === \"textarea\") {\n const attributeScan = scanElementAttributes(node.tagName, node.attributes);\n return [\n { kind: \"static\", value: \"<textarea\" },\n ...collectElementAttributeParts(\n node.tagName,\n node.attributes,\n escapeHelperName,\n state,\n attributeScan,\n ),\n { kind: \"static\", value: \">\" },\n ...collectTextareaValueParts(\n node,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n attributeScan,\n ),\n { kind: \"static\", value: closeTag },\n ];\n }\n const attributeScan = scanElementAttributes(node.tagName, node.attributes);\n const childSelectedValueCode =\n node.tagName === \"select\" ? attributeScan.formValueAttributeCode : undefined;\n const childState =\n childSelectedValueCode === undefined\n ? state\n : { ...state, selectedValueCode: childSelectedValueCode };\n const selectedAttributePart = collectOptionSelectedAttributePart(node, state.selectedValueCode);\n const dangerousInnerHtml = emitDangerouslySetInnerHtmlPart(node.attributes);\n const childrenParts: HtmlPart[] = isVoidHtmlElement(node.tagName)\n ? []\n : dangerousInnerHtml !== undefined\n ? [dangerousInnerHtml]\n : ((childState.selectedValueCode === undefined\n ? collectBatchedSimpleChildrenParts(node.children, state.escapeBatchHelperName)\n : undefined) ??\n node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n childState,\n ),\n ));\n\n return [\n { kind: \"static\", value: `<${node.tagName}` },\n ...collectElementAttributeParts(\n node.tagName,\n node.attributes,\n escapeHelperName,\n state,\n attributeScan,\n ),\n ...(selectedAttributePart === undefined ? [] : [selectedAttributePart]),\n { kind: \"static\", value: \">\" },\n ...childrenParts,\n ...(isVoidHtmlElement(node.tagName) ? [] : [{ kind: \"static\" as const, value: closeTag }]),\n ];\n}\n\nfunction emitDangerouslySetInnerHtmlPart(attrs: readonly AttributeIr[]): HtmlSyncPart | 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 {\n kind: \"raw-dynamic\",\n code: `(() => { const _value = (${attr.code}); return typeof _value === \"object\" && _value !== null && typeof _value.__html === \"string\" ? _value.__html : \"\"; })()`,\n };\n}\n\nfunction isChildrenExpressionCode(code: string): boolean {\n const trimmed = code.trim();\n return (\n trimmed === \"children\" ||\n endsWithChildrenMemberAccess(trimmed) ||\n endsWithChildrenStringIndex(trimmed)\n );\n}\n\nfunction endsWithChildrenMemberAccess(code: string): boolean {\n const propertyName = \"children\";\n if (!code.endsWith(propertyName)) {\n return false;\n }\n\n return code[code.length - propertyName.length - 1] === \".\";\n}\n\nfunction endsWithChildrenStringIndex(code: string): boolean {\n return code.endsWith('[\"children\"]') || code.endsWith(\"['children']\");\n}\n\nfunction collectHtmlAttributeParts(\n tagName: string,\n attr: AttributeIr,\n escapeHelperName: string,\n escapeBatchHelperName: string | undefined,\n dynamicAttributes: \"drop\" | \"emit\",\n): HtmlSyncPart[] {\n if (attr.kind === \"spread-attr\") {\n return dynamicAttributes === \"drop\"\n ? []\n : [\n {\n kind: \"raw-dynamic\",\n code: `${currentSpreadAttributesHelperName}(${stringLiteral(tagName)}, (${attr.code}))`,\n },\n ];\n }\n\n if (attr.kind === \"event\" || attr.name === \"key\" || attr.name === \"dangerouslySetInnerHTML\") {\n return [];\n }\n\n if (attr.kind === \"static-attr\") {\n const htmlName = htmlAttributeNameForElement(tagName, attr.name);\n if (isUrlAttribute(htmlName) && isStaticUrlValueUnsafe(htmlName, attr.value)) {\n return [];\n }\n if (isDangerousHtmlAttribute(htmlName)) {\n // Issue 077: literal srcdoc strings cannot match the opt-in shape.\n return [];\n }\n return [\n {\n kind: \"static\",\n value: ` ${htmlName}=\"${escapeHtml(attr.value)}\"`,\n },\n ];\n }\n\n if (dynamicAttributes === \"drop\") {\n return [];\n }\n\n if (attr.name === \"style\") {\n return [\n {\n kind: \"raw-dynamic\",\n code:\n attr.serialization === \"compat\"\n ? emitCompatDynamicStyleAttributeExpression(attr.code, escapeHelperName)\n : emitDynamicStyleAttributeExpression(\n attr.code,\n escapeHelperName,\n escapeBatchHelperName,\n ),\n },\n ];\n }\n\n const dynamicHtmlName = htmlAttributeNameForElement(tagName, attr.name);\n if (isDangerousHtmlAttribute(dynamicHtmlName)) {\n return [\n {\n kind: \"raw-dynamic\",\n code: `(() => { const _value = (${attr.code}); if (_value == null || _value === false) return \"\"; if (typeof _value === \"object\" && _value !== null && typeof _value.__html === \"string\") return ${stringLiteral(` ${dynamicHtmlName}=\"`)} + ${escapeHelperName}(_value.__html) + ${stringLiteral('\"')}; return \"\"; })()`,\n },\n ];\n }\n\n return [\n {\n kind: \"raw-dynamic\",\n code:\n attr.serialization === \"compat\" && !isUrlAttribute(dynamicHtmlName)\n ? emitCompatDynamicAttributeExpression(dynamicHtmlName, attr.code, escapeHelperName)\n : emitDynamicAttributeExpression(dynamicHtmlName, attr.code, escapeHelperName),\n },\n ];\n}\n\nfunction collectElementAttributeParts(\n tagName: string,\n attrs: readonly AttributeIr[],\n escapeHelperName: string,\n state: CollectHtmlState,\n attributeScan = scanElementAttributes(tagName, attrs),\n): HtmlSyncPart[] {\n const escapeBatchHelperName = state.escapeBatchHelperName;\n\n if (state.dynamicAttributes === \"emit\" && attrs.some((attr) => attr.kind === \"spread-attr\")) {\n return [\n {\n kind: \"raw-dynamic\",\n code: emitMergedSpreadAttributeExpression(tagName, attrs, attributeScan),\n },\n ];\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 state.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 const booleanishString = isBooleanishStringAttribute(name);\n\n if (isUrlAttribute(name)) {\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 return booleanishString\n ? `(${inlineExpr} == null ? \"\" : ${stringLiteral(` ${name}=\"`)} + ${escapeHelperName}(${inlineExpr}) + ${stringLiteral('\"')})`\n : `(${inlineExpr} == null || ${inlineExpr} === false ? \"\" : ${stringLiteral(` ${name}=\"`)} + ${escapeHelperName}(${inlineExpr} === true ? \"\" : ${inlineExpr}) + ${stringLiteral('\"')})`;\n }\n\n return booleanishString\n ? `(() => { const _value = (${code}); return _value == null ? \"\" : ${stringLiteral(` ${name}=\"`)} + ${escapeHelperName}(_value) + ${stringLiteral('\"')}; })()`\n : `(() => { const _value = (${code}); return _value == null || _value === false ? \"\" : ${stringLiteral(` ${name}=\"`)} + ${escapeHelperName}(_value === true ? \"\" : _value) + ${stringLiteral('\"')}; })()`;\n}\n\nfunction emitCompatDynamicAttributeExpression(\n name: string,\n code: string,\n escapeHelperName: string,\n): string {\n const lowerCased = name.toLowerCase();\n const booleanishOrData =\n lowerCased.startsWith(\"aria-\") ||\n lowerCased.startsWith(\"data-\") ||\n lowerCased === \"contenteditable\" ||\n lowerCased === \"draggable\" ||\n lowerCased === \"spellcheck\";\n const booleanBranch = booleanishOrData\n ? `return ${stringLiteral(` ${name}=\"`)} + (_value ? \"true\" : \"false\") + ${stringLiteral('\"')};`\n : `return _value ? ${stringLiteral(` ${name}=\"\"`)} : \"\";`;\n\n return `(() => { const _value = (${code}); if (_value == null || typeof _value === \"function\") return \"\"; if (typeof _value === \"boolean\") { ${booleanBranch} } if (typeof _value === \"object\") return \"\"; return ${stringLiteral(` ${name}=\"`)} + ${escapeHelperName}(_value) + ${stringLiteral('\"')}; })()`;\n}\n\nfunction emitCompatDynamicStyleAttributeExpression(\n code: string,\n escapeHelperName: string,\n): string {\n const unitlessCheck =\n '_styleName === \"flex\" || _styleName === \"fontWeight\" || _styleName === \"lineHeight\" || _styleName === \"opacity\" || _styleName === \"order\" || _styleName === \"zIndex\" || _styleName === \"zoom\"';\n\n return `(() => { const _value = (${code}); if (_value == null || typeof _value !== \"object\") return \"\"; let _style = \"\"; for (const _styleName in _value) { const _styleValue = _value[_styleName]; if (_styleValue == null || typeof _styleValue === \"boolean\" || _styleValue === \"\") continue; const _cssName = _styleName.startsWith(\"--\") ? _styleName : _styleName.replace(/[A-Z]/g, (_char) => \"-\" + _char.toLowerCase()); const _css = typeof _styleValue !== \"number\" || _styleValue === 0 || (${unitlessCheck}) ? String(_styleValue) : _styleValue + \"px\"; _style += (_style === \"\" ? \"\" : \";\") + ${escapeHelperName}(_cssName) + \":\" + ${escapeHelperName}(_css); } return _style === \"\" ? \"\" : ${stringLiteral(' style=\"')} + _style + ${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 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 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 asyncBoundaryHelperName: string,\n outOfOrderBoundaryHelperName: string,\n reactSuspenseBoundaryHelperName: string,\n reactSuspenseOutOfOrderBoundaryHelperName: string,\n state: CollectHtmlState,\n attributeScan = scanElementAttributes(node.tagName, node.attributes),\n): HtmlPart[] {\n const valueCode = attributeScan.formValueAttributeCode;\n if (valueCode !== undefined) {\n return [{ kind: \"dynamic\", code: valueCode, escapeHelperName }];\n }\n\n return node.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n );\n}\n\nfunction collectOptionSelectedAttributePart(\n node: Extract<JsxNodeIr, { kind: \"element\" }>,\n selectedValueCode: string | undefined,\n): HtmlSyncPart | 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 {\n kind: \"raw-dynamic\",\n code: `(() => { const _selected = (${selectedValueCode}); return _selected == null ? \"\" : String(_selected) === String(${optionValueCode}) ? ${stringLiteral(' selected=\"\"')} : \"\"; })()`,\n };\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 findSuspenseAsyncBoundary(children: readonly JsxNodeIr[]): AsyncBoundaryIr | undefined {\n for (const child of children) {\n if (child.kind === \"async-boundary\" && child.placeholderChildren === undefined) {\n return child;\n }\n\n const nested =\n child.kind === \"element\" || child.kind === \"fragment\" || child.kind === \"component\"\n ? findSuspenseAsyncBoundary(child.children)\n : child.kind === \"conditional\"\n ? findSuspenseAsyncBoundary([...child.whenTrue, ...child.whenFalse])\n : child.kind === \"list\"\n ? findSuspenseAsyncBoundary(child.children)\n : undefined;\n\n if (nested !== undefined) {\n return nested;\n }\n }\n\n return undefined;\n}\n\nfunction replaceSuspenseAsyncBoundary(\n children: readonly JsxNodeIr[],\n target: AsyncBoundaryIr,\n replacement: readonly JsxNodeIr[],\n): JsxNodeIr[] {\n return children.flatMap((child): JsxNodeIr[] => {\n if (child === target) {\n return [...replacement];\n }\n\n if (child.kind === \"element\") {\n return [\n {\n ...child,\n children: replaceSuspenseAsyncBoundary(child.children, target, replacement),\n },\n ];\n }\n\n if (child.kind === \"fragment\") {\n return [\n {\n ...child,\n children: replaceSuspenseAsyncBoundary(child.children, target, replacement),\n },\n ];\n }\n\n if (child.kind === \"component\") {\n return [\n {\n ...child,\n children: replaceSuspenseAsyncBoundary(child.children, target, replacement),\n },\n ];\n }\n\n if (child.kind === \"conditional\") {\n return [\n {\n ...child,\n whenTrue: replaceSuspenseAsyncBoundary(child.whenTrue, target, replacement),\n whenFalse: replaceSuspenseAsyncBoundary(child.whenFalse, target, replacement),\n },\n ];\n }\n\n if (child.kind === \"list\") {\n return [\n {\n ...child,\n children: replaceSuspenseAsyncBoundary(child.children, target, replacement),\n },\n ];\n }\n\n return [child];\n });\n}\n\nfunction collectSuspenseFallbackParts(\n props: readonly ComponentPropIr[],\n escapeHelperName: string,\n asyncBoundaryHelperName: string,\n outOfOrderBoundaryHelperName: string,\n reactSuspenseBoundaryHelperName: string,\n reactSuspenseOutOfOrderBoundaryHelperName: string,\n state: CollectHtmlState,\n): HtmlSyncPart[] {\n for (const prop of props) {\n if (prop.kind === \"render-prop\" && prop.name === \"fallback\") {\n return prop.children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n asyncBoundaryHelperName,\n outOfOrderBoundaryHelperName,\n reactSuspenseBoundaryHelperName,\n reactSuspenseOutOfOrderBoundaryHelperName,\n state,\n ),\n ) as HtmlSyncPart[];\n }\n\n if (prop.kind === \"prop\" && prop.name === \"fallback\") {\n return [\n {\n kind: \"dynamic\",\n code: prop.code,\n escapeHelperName,\n },\n ];\n }\n }\n\n return [];\n}\n\nfunction rawHtmlExpression(code: string): string {\n return `(() => { const _render = (_value) => { if (_value == null) return \"\"; if (Array.isArray(_value)) return _value.map(_render).join(\"\"); if (typeof _value === \"object\" && _value.$$typeof === Symbol.for(\"react.transitional.element\")) return ${currentCompatRenderToStringHelperName}(() => _value); return String(_value); }; return _render(${code}); })()`;\n}\n\nfunction emitDynamicHtmlAppendStatement(\n code: string,\n sinkName: string,\n escapeHelperName: string,\n compatRenderToStringHelperName: string,\n indent: string,\n): string {\n if (!looksLikeRawJsxExpression(code)) {\n return `${indent}${sinkName}.append(${escapeHelperName}(${code}));`;\n }\n\n return [\n `${indent}{`,\n `${indent} const _appendDynamic = async (_value) => {`,\n `${indent} if (_value == null || _value === false) return;`,\n `${indent} if (Array.isArray(_value)) { for (const _item of _value) await _appendDynamic(_item); return; }`,\n `${indent} if (typeof _value === \"object\" && _value.$$typeof === Symbol.for(\"react.transitional.element\")) {`,\n `${indent} if (typeof _value.type === \"function\" && _value.type.length >= 2) {`,\n `${indent} await _value.type(${sinkName}, _value.props ?? {});`,\n `${indent} } else {`,\n `${indent} ${sinkName}.append(${compatRenderToStringHelperName}(() => _value));`,\n `${indent} }`,\n `${indent} return;`,\n `${indent} }`,\n `${indent} ${sinkName}.append(${escapeHelperName}(_value === true ? \"\" : _value));`,\n `${indent} };`,\n `${indent} await _appendDynamic(${code});`,\n `${indent}}`,\n ].join(\"\\n\");\n}\n\nfunction looksLikeRawJsxExpression(code: string): boolean {\n return /<\\s*(?:[A-Za-z]|>)/.test(code);\n}\n\nfunction collectBatchedSimpleChildrenParts(\n children: readonly JsxNodeIr[],\n escapeBatchHelperName: string | undefined,\n): HtmlSyncPart[] | 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 [\n {\n kind: \"raw-dynamic\",\n code: `(() => { const _escaped = ${escapeBatchHelperName}([${values.join(\", \")}]); return ${pieces.join(\" + \")}; })()`,\n },\n ];\n}\n\nfunction emitHtmlExpressionFromChildren(children: JsxNodeIr[], escapeHelperName: string): string {\n if (children.length === 0) {\n return '\"\"';\n }\n\n const parts = children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n \"_renderAsyncBoundary\",\n \"_renderOutOfOrderBoundary\",\n \"_renderReactSuspenseBoundary\",\n \"_renderReactSuspenseOutOfOrderBoundary\",\n {\n dynamicAttributes: \"emit\",\n hydration: false,\n awaitHydration: false,\n nextFragmentId: 0,\n },\n ),\n );\n const expressions = parts.map((part) =>\n isHtmlSyncPart(part)\n ? (tryEmitPartAsStringExpression(part, currentCompatRenderToStringHelperName) ?? '\"\"')\n : '\"\"',\n );\n\n return expressions.length === 0 ? '\"\"' : expressions.join(\" + \");\n}\n\nfunction emitStreamRendererFromChildren(\n children: JsxNodeIr[],\n escapeHelperName: string,\n): string | undefined {\n if (children.length === 0) {\n return undefined;\n }\n\n const parentState = currentPropChildrenCollectState;\n const childState: CollectHtmlState = {\n dynamicAttributes: \"emit\",\n hydration: false,\n awaitHydration: false,\n nextFragmentId: parentState?.nextFragmentId ?? 0,\n ...(parentState?.reactSuspenseRevealScriptNonce === undefined\n ? {}\n : { reactSuspenseRevealScriptNonce: parentState.reactSuspenseRevealScriptNonce }),\n ...(parentState?.reactSuspenseRevealScriptSrc === undefined\n ? {}\n : { reactSuspenseRevealScriptSrc: parentState.reactSuspenseRevealScriptSrc }),\n };\n const parts = children.flatMap((child) =>\n collectHtmlParts(\n child,\n escapeHelperName,\n currentAsyncBoundaryHelperName,\n currentOutOfOrderBoundaryHelperName,\n currentReactSuspenseBoundaryHelperName,\n currentReactSuspenseOutOfOrderBoundaryHelperName,\n childState,\n ),\n );\n if (parentState !== undefined) {\n parentState.nextFragmentId = childState.nextFragmentId;\n }\n\n if (\n parts.every(\n (part) =>\n isHtmlSyncPart(part) &&\n tryEmitPartAsStringExpression(part, currentCompatRenderToStringHelperName) !== undefined,\n )\n ) {\n return undefined;\n }\n\n return `async ($sink) => {\\n${emitNestedStreamAppendStatements(parts, \"$sink\", currentCompatRenderToStringHelperName)}\\n}`;\n}\n\nfunction containsAsyncBoundary(node: JsxNodeIr, outOfOrder: boolean): boolean {\n if (node.kind === \"async-boundary\") {\n return outOfOrder\n ? node.placeholderChildren !== undefined\n : node.placeholderChildren === undefined;\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse].some((child) =>\n containsAsyncBoundary(child, outOfOrder),\n );\n }\n\n if (node.kind === \"list\") {\n return node.children.some((child) => containsAsyncBoundary(child, outOfOrder));\n }\n\n if (node.kind === \"element\" || node.kind === \"fragment\") {\n return node.children.some((child) => containsAsyncBoundary(child, outOfOrder));\n }\n\n if (node.kind === \"component\") {\n if (isClientBoundaryPlaceholder(node)) {\n return false;\n }\n\n return node.name === \"Suspense\" ? false : true;\n }\n\n return false;\n}\n\nfunction containsAnyAsyncBoundary(node: JsxNodeIr): boolean {\n if (node.kind === \"async-boundary\") {\n return true;\n }\n\n if (node.kind === \"expr\") {\n return (\n node.renderMode === \"stream-node\" ||\n looksLikeRawJsxExpression(node.code) ||\n (node.renderMode === \"html\" && isChildrenExpressionCode(node.code))\n );\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse].some(containsAnyAsyncBoundary);\n }\n\n if (node.kind === \"list\") {\n return node.children.some(containsAnyAsyncBoundary);\n }\n\n if (node.kind === \"element\" || node.kind === \"fragment\") {\n return node.children.some(containsAnyAsyncBoundary);\n }\n\n if (node.kind === \"component\") {\n if (isClientBoundaryPlaceholder(node)) {\n return false;\n }\n\n return node.name === \"Suspense\" ? true : true;\n }\n\n return false;\n}\n\nfunction containsReactSuspense(node: JsxNodeIr, outOfOrder: boolean): boolean {\n if (node.kind === \"component\" && node.name === \"Suspense\") {\n return outOfOrder\n ? findSuspenseAsyncBoundary(node.children) !== undefined ||\n containsAsyncComponent(node.children)\n : findSuspenseAsyncBoundary(node.children) === undefined &&\n !containsAsyncComponent(node.children);\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse].some((child) =>\n containsReactSuspense(child, outOfOrder),\n );\n }\n\n if (node.kind === \"list\") {\n return node.children.some((child) => containsReactSuspense(child, outOfOrder));\n }\n\n if (node.kind === \"element\" || node.kind === \"fragment\") {\n return node.children.some((child) => containsReactSuspense(child, outOfOrder));\n }\n\n if (node.kind === \"async-boundary\") {\n return [\n ...node.children,\n ...(node.placeholderChildren ?? []),\n ...(node.catchChildren ?? []),\n ].some((child) => containsReactSuspense(child, outOfOrder));\n }\n\n return false;\n}\n\nfunction containsAsyncComponent(children: readonly JsxNodeIr[]): boolean {\n return children.some((child) => {\n if (child.kind === \"component\") {\n if (isClientBoundaryPlaceholder(child)) {\n return false;\n }\n\n return (\n child.async === true ||\n containsAsyncComponent(child.children) ||\n child.props.some(\n (prop) => prop.kind === \"render-prop\" && containsAsyncComponent(prop.children),\n )\n );\n }\n\n if (child.kind === \"conditional\") {\n return containsAsyncComponent([...child.whenTrue, ...child.whenFalse]);\n }\n\n if (child.kind === \"list\") {\n return containsAsyncComponent(child.children);\n }\n\n if (child.kind === \"element\" || child.kind === \"fragment\") {\n return containsAsyncComponent(child.children);\n }\n\n if (child.kind === \"async-boundary\") {\n return containsAsyncComponent([\n ...child.children,\n ...(child.placeholderChildren ?? []),\n ...(child.catchChildren ?? []),\n ]);\n }\n\n return false;\n });\n}\n\nfunction containsCompatComponent(node: JsxNodeIr): boolean {\n if (node.kind === \"component\") {\n return (\n node.runtime === \"compat\" ||\n node.children.some(containsCompatComponent) ||\n node.props.some(\n (prop) => prop.kind === \"render-prop\" && prop.children.some(containsCompatComponent),\n )\n );\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse].some(containsCompatComponent);\n }\n\n if (node.kind === \"list\") {\n return node.children.some(containsCompatComponent);\n }\n\n if (node.kind === \"element\" || node.kind === \"fragment\") {\n return node.children.some(containsCompatComponent);\n }\n\n if (node.kind === \"async-boundary\") {\n return [\n ...node.children,\n ...(node.placeholderChildren ?? []),\n ...(node.catchChildren ?? []),\n ].some(containsCompatComponent);\n }\n\n return false;\n}\n\nfunction containsClientBoundary(node: JsxNodeIr, serverHydration: boolean): boolean {\n if (node.kind === \"component\" && isClientBoundaryPlaceholder(node, serverHydration)) {\n return true;\n }\n\n if (node.kind === \"component\") {\n return (\n node.children.some((child) => containsClientBoundary(child, serverHydration)) ||\n node.props.some(\n (prop) =>\n prop.kind === \"render-prop\" &&\n prop.children.some((child) => containsClientBoundary(child, serverHydration)),\n )\n );\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse].some((child) =>\n containsClientBoundary(child, serverHydration),\n );\n }\n\n if (node.kind === \"list\") {\n return node.children.some((child) => containsClientBoundary(child, serverHydration));\n }\n\n if (node.kind === \"element\" || node.kind === \"fragment\") {\n return node.children.some((child) => containsClientBoundary(child, serverHydration));\n }\n\n if (node.kind === \"async-boundary\") {\n return [\n ...node.children,\n ...(node.placeholderChildren ?? []),\n ...(node.catchChildren ?? []),\n ].some((child) => containsClientBoundary(child, serverHydration));\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 === \"component\") {\n if (node.runtime === \"compat\") {\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 === \"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 === \"element\" || node.kind === \"fragment\") {\n return node.children.some(containsReactNodeRender);\n }\n\n if (node.kind === \"async-boundary\") {\n return [\n ...node.children,\n ...(node.placeholderChildren ?? []),\n ...(node.catchChildren ?? []),\n ].some(containsReactNodeRender);\n }\n\n return false;\n}\n\nfunction usesCompatChildRender(ir: ModuleIr): boolean {\n return ir.components.some((component) => containsCompatChildRender(component.root));\n}\n\nfunction containsCompatChildRender(node: JsxNodeIr): boolean {\n if (node.kind === \"expr\") {\n return node.renderMode === \"compat-child\";\n }\n\n if (node.kind === \"component\") {\n return (\n node.children.some(containsCompatChildRender) ||\n node.props.some(\n (prop) => prop.kind === \"render-prop\" && prop.children.some(containsCompatChildRender),\n )\n );\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse].some(containsCompatChildRender);\n }\n\n if (node.kind === \"list\") {\n return node.children.some(containsCompatChildRender);\n }\n\n if (node.kind === \"element\" || node.kind === \"fragment\") {\n return node.children.some(containsCompatChildRender);\n }\n\n if (node.kind === \"async-boundary\") {\n return [\n ...node.children,\n ...(node.placeholderChildren ?? []),\n ...(node.catchChildren ?? []),\n ].some(containsCompatChildRender);\n }\n\n return false;\n}\n\nfunction containsRawJsxDynamicRender(node: JsxNodeIr): boolean {\n if (node.kind === \"expr\") {\n return node.renderMode !== \"react-node\" && looksLikeRawJsxExpression(node.code);\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse].some(containsRawJsxDynamicRender);\n }\n\n if (node.kind === \"list\") {\n return node.children.some(containsRawJsxDynamicRender);\n }\n\n if (node.kind === \"component\") {\n return (\n node.children.some(containsRawJsxDynamicRender) ||\n node.props.some(\n (prop) => prop.kind === \"render-prop\" && prop.children.some(containsRawJsxDynamicRender),\n )\n );\n }\n\n if (node.kind === \"element\" || node.kind === \"fragment\") {\n return node.children.some(containsRawJsxDynamicRender);\n }\n\n if (node.kind === \"async-boundary\") {\n return [\n ...node.children,\n ...(node.placeholderChildren ?? []),\n ...(node.catchChildren ?? []),\n ].some(containsRawJsxDynamicRender);\n }\n\n return false;\n}\n\nfunction emitPropsObject(\n props: ComponentPropIr[],\n children: JsxNodeIr[] = [],\n escapeHelperName = \"_escapeHtml\",\n componentName?: 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)}`;\n }\n\n return `${emitPropName(prop.name)}: (${prop.code})`;\n });\n\n if (children.length > 0) {\n const childrenExpression =\n emitStreamRendererFromChildren(children, escapeHelperName) ??\n emitHtmlExpressionFromChildren(children, escapeHelperName);\n entries.push(\n `children: ${isRouterLinkComponentName(componentName) ? `${componentName}.trustedHtml(${childrenExpression})` : childrenExpression}`,\n );\n }\n\n return `{ ${entries.join(\", \")} }`;\n}\n\nfunction isRouterLinkComponentName(name: string | undefined): name is string {\n return name !== undefined && (name === \"Link\" || name.endsWith(\".Link\"));\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 emitPropName(name: string): string {\n return /^[A-Za-z_$][\\w$]*$/.test(name) ? name : JSON.stringify(name);\n}\n\nfunction isClientBoundaryPlaceholder(\n node: Extract<JsxNodeIr, { kind: \"component\" }>,\n serverHydration = true,\n): boolean {\n return node.clientReference !== undefined && (!serverHydration || !isCompatClientReference(node));\n}\n\nfunction isCompatClientReference(node: Extract<JsxNodeIr, { kind: \"component\" }>): boolean {\n return (\n node.clientReference !== undefined &&\n /\\.(?:compat)\\.[cm]?[jt]sx?$/.test(node.clientReference.moduleId)\n );\n}\n\nfunction emitRenderableHtmlExpression(code: string): string {\n return `((_value) => _value == null || typeof _value === \"boolean\" ? \"\" : _value)(${code})`;\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 allocateComponentSinkName(component: ComponentIr): string {\n const reservedNames = new Set([component.name, component.exportName, ...component.bindingNames]);\n let name = \"$sink\";\n let index = 1;\n\n while (reservedNames.has(name)) {\n name = `$sink$${index}`;\n index += 1;\n }\n\n return name;\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 reservedNames.add(component.exportName);\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 stringLiteral(value: string): string {\n return JSON.stringify(value);\n}\n"]}