@reckona/mreact-compiler 0.0.144 → 0.0.146
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/diagnostics.d.ts +1 -0
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +7 -0
- package/dist/diagnostics.js.map +1 -1
- package/dist/emit-client.js +7 -3
- package/dist/emit-client.js.map +1 -1
- package/dist/emit-compat.js +186 -27
- package/dist/emit-compat.js.map +1 -1
- package/dist/emit-server-stream.js +10 -6
- package/dist/emit-server-stream.js.map +1 -1
- package/dist/emit-server.js +7 -3
- package/dist/emit-server.js.map +1 -1
- package/dist/transform.d.ts.map +1 -1
- package/dist/transform.js +9 -0
- package/dist/transform.js.map +1 -1
- package/package.json +2 -2
- package/src/diagnostics.ts +8 -0
- package/src/emit-client.ts +10 -3
- package/src/emit-compat.ts +269 -20
- package/src/emit-server-stream.ts +12 -7
- package/src/emit-server.ts +17 -1
- package/src/transform.ts +14 -0
package/dist/transform.js
CHANGED
|
@@ -3,6 +3,7 @@ import { emitCompat } from "./emit-compat.js";
|
|
|
3
3
|
import { emitServer } from "./emit-server.js";
|
|
4
4
|
import { emitServerStream } from "./emit-server-stream.js";
|
|
5
5
|
import { analyzeCompilerModuleContextWithOxc, analyzeWithOxc } from "./oxc.js";
|
|
6
|
+
import { unsupportedClientAsyncComponentDiagnostic } from "./diagnostics.js";
|
|
6
7
|
export function transform(input) {
|
|
7
8
|
return transformWithAnalyzer(input, (analyzeTarget, analyzeOptions) => analyzeWithOxc({
|
|
8
9
|
code: input.code,
|
|
@@ -48,6 +49,9 @@ function transformWithAnalyzer(input, analyze) {
|
|
|
48
49
|
};
|
|
49
50
|
const analyzed = analyze(analyzeTarget, analyzeOptions);
|
|
50
51
|
const diagnostics = [...analyzed.diagnostics];
|
|
52
|
+
if (input.target === "client") {
|
|
53
|
+
diagnostics.push(...collectClientAsyncComponentDiagnostics(analyzed.ir.components));
|
|
54
|
+
}
|
|
51
55
|
const emitted = mode === "compat" && input.target === "client"
|
|
52
56
|
? emitCompat(analyzed.ir, { dev: input.dev })
|
|
53
57
|
: input.target === "server"
|
|
@@ -119,6 +123,11 @@ function transformWithAnalyzer(input, analyze) {
|
|
|
119
123
|
metadata,
|
|
120
124
|
};
|
|
121
125
|
}
|
|
126
|
+
function collectClientAsyncComponentDiagnostics(components) {
|
|
127
|
+
return components
|
|
128
|
+
.filter((component) => component.async === true)
|
|
129
|
+
.map((component) => unsupportedClientAsyncComponentDiagnostic(component.name));
|
|
130
|
+
}
|
|
122
131
|
function createSourceMap(input, outputCode) {
|
|
123
132
|
const generatedMap = createSegmentMappings(outputCode, input.code);
|
|
124
133
|
return JSON.stringify({
|
package/dist/transform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"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","sourcesContent":["import { emitClient } from \"./emit-client.js\";\nimport { emitCompat } from \"./emit-compat.js\";\nimport { emitServer } from \"./emit-server.js\";\nimport { emitServerStream } from \"./emit-server-stream.js\";\nimport { analyzeCompilerModuleContextWithOxc, analyzeWithOxc } from \"./oxc.js\";\nimport type { ComponentIr, JsxNodeIr } from \"./ir.js\";\nimport type { AnalyzeToIrInput, AnalyzeToIrOutput, CompilerModuleContext } from \"./internal.js\";\nimport type { AnalyzeModuleOptions } from \"./types.js\";\nimport type {\n ClientReferenceMetadata,\n EventHydrationEntryMetadata,\n ModuleMetadata,\n TransformInput,\n TransformOutput,\n} from \"./types.js\";\n\nexport function transform(input: TransformInput): TransformOutput {\n return transformWithAnalyzer(input, (analyzeTarget, analyzeOptions) =>\n analyzeWithOxc({\n code: input.code,\n filename: input.filename,\n target: analyzeTarget,\n options: analyzeOptions,\n }),\n );\n}\n\nexport function transformCompilerModuleContext(\n input: TransformInput & { moduleContext: CompilerModuleContext },\n): TransformOutput {\n if (input.moduleContext.code !== input.code || input.moduleContext.filename !== input.filename) {\n throw new Error(\"Transform input moduleContext must match the input code and filename.\");\n }\n\n return transformWithAnalyzer(input, (analyzeTarget, analyzeOptions) =>\n analyzeCompilerModuleContextWithOxc(input.moduleContext, {\n target: analyzeTarget,\n options: analyzeOptions,\n }),\n );\n}\n\nfunction transformWithAnalyzer(\n input: TransformInput,\n analyze: (target: AnalyzeToIrInput[\"target\"], options: AnalyzeModuleOptions) => AnalyzeToIrOutput,\n): TransformOutput {\n const mode = input.mode ?? \"reactive\";\n const serverOutput = input.serverOutput ?? \"string\";\n const serverBootstrap = input.serverBootstrap ?? \"none\";\n const analyzeTarget = mode === \"compat\" ? \"client\" : input.target;\n const bodyStatementJsx =\n input.target === \"server\"\n ? \"server-string\"\n : mode === \"compat\" && input.target === \"client\"\n ? \"compat-object\"\n : \"dom-node\";\n const analyzeOptions = {\n topLevelJsx:\n mode === \"compat\" && input.target === \"client\"\n ? \"compat-object\"\n : input.target === \"server\"\n ? \"server-string\"\n : \"diagnostic\",\n bodyStatementJsx,\n ...(input.target === \"server\" ? { serverOutput } : {}),\n awaitCompatComponents:\n input.target === \"server\" && serverOutput === \"stream\" ? \"lower\" : \"diagnostic\",\n clientBoundaryImports: input.clientBoundaryImports ?? [],\n clientBoundaryFallbackImports: input.clientBoundaryFallbackImports ?? [],\n compatReactNodeReturn: mode === \"compat\",\n ...(mode === \"compat\" && input.target === \"server\"\n ? { compatReactNodeReturnRenderMode: \"react-node\" as const }\n : {}),\n } as const;\n const analyzed = analyze(analyzeTarget, analyzeOptions);\n const diagnostics = [...analyzed.diagnostics];\n const emitted =\n mode === \"compat\" && input.target === \"client\"\n ? emitCompat(analyzed.ir, { dev: input.dev })\n : input.target === \"server\"\n ? serverOutput === \"stream\"\n ? emitServerStream(analyzed.ir, {\n ...createServerOptions(\n serverBootstrap,\n input.serverBootstrapNonce,\n input.serverBootstrapSrc,\n input.serverHydration,\n input.reactSuspenseRevealScriptSrc,\n ),\n ...(input.serverAwaitHydration === true\n ? { serverAwaitHydration: true as const }\n : {}),\n dynamicAttributes: mode === \"compat\" ? \"drop\" : \"emit\",\n escape: input.serverEscape,\n })\n : emitServer(analyzed.ir, {\n ...createServerOptions(\n serverBootstrap,\n input.serverBootstrapNonce,\n input.serverBootstrapSrc,\n input.serverHydration,\n ),\n dynamicAttributes: mode === \"compat\" ? \"drop\" : \"emit\",\n escape: input.serverEscape,\n })\n : emitClient(analyzed.ir);\n\n const metadata: ModuleMetadata = {\n filename: input.filename,\n target: input.target,\n compiler: {\n frontend: \"oxc\",\n typescriptFallback: false,\n },\n components: analyzed.ir.components.map((component) => ({\n name: component.name,\n exportName: component.exportName,\n })),\n imports: emitted.imports,\n };\n const events = collectEventHydrationEntries(analyzed.ir.components);\n\n if (events.length > 0) {\n metadata.eventHydrationManifest = {\n version: 1,\n events,\n };\n }\n const clientReferences = collectClientReferences(analyzed.ir.components);\n\n if (clientReferences.length > 0) {\n metadata.clientReferences = clientReferences;\n }\n const clientReferenceManifest = collectClientReferenceManifest(analyzed.ir.components);\n\n if (clientReferenceManifest.length > 0) {\n metadata.clientReferenceManifest = clientReferenceManifest;\n }\n\n if (input.target === \"server\") {\n metadata.serverOutput = serverOutput;\n\n if (serverBootstrap !== \"none\") {\n metadata.serverBootstrap = serverBootstrap;\n }\n\n if (input.serverBootstrapNonce !== undefined) {\n metadata.serverBootstrapNonce = input.serverBootstrapNonce;\n }\n\n if (input.serverBootstrapSrc !== undefined) {\n metadata.serverBootstrapSrc = input.serverBootstrapSrc;\n }\n\n if (input.serverHydration === true) {\n metadata.serverHydration = true;\n }\n\n if (input.reactSuspenseRevealScriptSrc !== undefined) {\n metadata.reactSuspenseRevealScriptSrc = input.reactSuspenseRevealScriptSrc;\n }\n }\n\n return {\n code: emitted.code,\n map: input.sourceMap === true ? createSourceMap(input, emitted.code) : null,\n diagnostics,\n metadata,\n };\n}\n\nfunction createSourceMap(input: TransformInput, outputCode: string): string {\n const generatedMap = createSegmentMappings(outputCode, input.code);\n\n return JSON.stringify({\n version: 3,\n file: `${input.filename}.js`,\n sources: [input.filename],\n sourcesContent: [input.code],\n names: generatedMap.names,\n mappings: generatedMap.mappings,\n });\n}\n\ninterface GeneratedSourceMap {\n mappings: string;\n names: string[];\n}\n\nfunction createSegmentMappings(outputCode: string, sourceCode: string): GeneratedSourceMap {\n const generatedLines = outputCode.split(\"\\n\");\n const sourceLines = sourceCode.split(\"\\n\");\n const lines: string[] = [];\n const names: string[] = [];\n const nameIndexes = new Map<string, number>();\n let previousSourceIndex = 0;\n let previousSourceLine = 0;\n let previousSourceColumn = 0;\n let previousNameIndex = 0;\n const searchState: SourceMapSearchState = { tokenOffsets: new Map() };\n\n for (const [lineIndex, generatedLine] of generatedLines.entries()) {\n let previousGeneratedColumn = 0;\n const segments = collectSourceMapSegments(generatedLine, lineIndex, sourceLines, searchState);\n\n lines.push(\n segments\n .map((segment) => {\n const fields = [\n encodeVlq(segment.generatedColumn - previousGeneratedColumn),\n encodeVlq(0 - previousSourceIndex),\n encodeVlq(segment.sourceLine - previousSourceLine),\n encodeVlq(segment.sourceColumn - previousSourceColumn),\n ];\n\n if (segment.name !== undefined) {\n const nameIndex = getSourceMapNameIndex(segment.name, names, nameIndexes);\n fields.push(encodeVlq(nameIndex - previousNameIndex));\n previousNameIndex = nameIndex;\n }\n\n const encoded = fields.join(\"\");\n previousGeneratedColumn = segment.generatedColumn;\n previousSourceIndex = 0;\n previousSourceLine = segment.sourceLine;\n previousSourceColumn = segment.sourceColumn;\n return encoded;\n })\n .join(\",\"),\n );\n }\n\n return { mappings: lines.join(\";\"), names };\n}\n\ninterface SourceMapSegment {\n generatedColumn: number;\n sourceLine: number;\n sourceColumn: number;\n name?: string;\n}\n\ninterface SourceMapSearchState {\n tokenOffsets: Map<string, number>;\n}\n\nfunction collectSourceMapSegments(\n generatedLine: string,\n generatedLineIndex: number,\n sourceLines: readonly string[],\n searchState: SourceMapSearchState,\n): SourceMapSegment[] {\n const fallbackSourceLine = findFallbackSourceLine(generatedLine, generatedLineIndex, sourceLines);\n const segments: SourceMapSegment[] = [\n {\n generatedColumn: 0,\n sourceLine: fallbackSourceLine,\n sourceColumn: 0,\n },\n ];\n\n const functionMatch = /function\\s+([A-Za-z_$][\\w$]*)/.exec(generatedLine);\n if (functionMatch !== null && functionMatch.index !== undefined) {\n const token = `function ${functionMatch[1]}`;\n const sourceLocation = findSourceLocation(sourceLines, token);\n\n if (sourceLocation !== undefined) {\n segments.push({\n generatedColumn: functionMatch.index,\n sourceLine: sourceLocation.line,\n sourceColumn: sourceLocation.column,\n });\n }\n }\n\n const returnColumn = generatedLine.indexOf(\"return\");\n if (returnColumn >= 0) {\n const sourceLocation = findSourceLocation(sourceLines, \"return\");\n\n if (sourceLocation !== undefined) {\n segments.push({\n generatedColumn: returnColumn,\n sourceLine: sourceLocation.line,\n sourceColumn: sourceLocation.column,\n });\n }\n }\n\n const templateStart = generatedLine.indexOf('createTemplate(\"');\n const templateTag =\n templateStart < 0\n ? undefined\n : generatedLine.slice(templateStart).match(/<[A-Za-z][\\w:-]*/)?.[0];\n if (templateTag !== undefined) {\n const generatedColumn = generatedLine.indexOf(templateTag);\n const sourceLocation = findSourceLocation(sourceLines, templateTag);\n\n if (generatedColumn >= 0 && sourceLocation !== undefined) {\n segments.push({\n generatedColumn,\n sourceLine: sourceLocation.line,\n sourceColumn: sourceLocation.column,\n });\n }\n }\n\n const dynamicExpression = /=> \\(([^)]+)\\)/.exec(generatedLine)?.[1]?.trim();\n if (dynamicExpression !== undefined && dynamicExpression !== \"\") {\n const generatedColumn = generatedLine.indexOf(dynamicExpression);\n const bindPropAttribute = /bindProp\\([^,]+,\\s+\"([^\"]+)\"/.exec(generatedLine)?.[1];\n const sourceLocation =\n bindPropAttribute === undefined\n ? undefined\n : (findSourceLocation(\n sourceLines,\n `${bindPropAttribute}={${dynamicExpression}}`,\n searchState,\n ) ??\n findSourceLocation(\n sourceLines,\n `${bindPropAttribute}=\"${dynamicExpression}\"`,\n searchState,\n ));\n const fallbackSourceLocation =\n findSourceLocation(sourceLines, `{${dynamicExpression}}`, searchState) ??\n findJsxExpressionTokenLocation(sourceLines, dynamicExpression) ??\n findSourceLocation(sourceLines, dynamicExpression, searchState);\n const resolvedSourceLocation = sourceLocation ?? fallbackSourceLocation;\n\n if (generatedColumn >= 0 && resolvedSourceLocation !== undefined) {\n const sourceColumnOffset =\n bindPropAttribute !== undefined && sourceLocation !== undefined\n ? bindPropAttribute.length + 2\n : sourceLines[resolvedSourceLocation.line]?.startsWith(\"{\", resolvedSourceLocation.column)\n ? 1\n : 0;\n\n segments.push({\n generatedColumn,\n sourceLine: resolvedSourceLocation.line,\n sourceColumn: resolvedSourceLocation.column + sourceColumnOffset,\n ...(isIdentifierName(dynamicExpression) ? { name: dynamicExpression } : {}),\n });\n\n for (const identifier of collectIdentifierReferences(dynamicExpression)) {\n segments.push({\n generatedColumn: generatedColumn + identifier.column,\n sourceLine: resolvedSourceLocation.line,\n sourceColumn: resolvedSourceLocation.column + sourceColumnOffset + identifier.column,\n name: identifier.name,\n });\n }\n }\n }\n\n return dedupeAndSortSegments(segments);\n}\n\nfunction getSourceMapNameIndex(\n name: string,\n names: string[],\n indexes: Map<string, number>,\n): number {\n const existing = indexes.get(name);\n\n if (existing !== undefined) {\n return existing;\n }\n\n const index = names.length;\n names.push(name);\n indexes.set(name, index);\n return index;\n}\n\nfunction isIdentifierName(value: string): boolean {\n return /^[A-Za-z_$][\\w$]*$/.test(value);\n}\n\nfunction collectIdentifierReferences(expression: string): { name: string; column: number }[] {\n const references: { name: string; column: number }[] = [];\n const seen = new Set<string>();\n const identifierPattern = /\\b[A-Za-z_$][\\w$]*\\b/g;\n\n for (const match of expression.matchAll(identifierPattern)) {\n const name = match[0];\n const column = match.index ?? 0;\n\n if (sourceMapIgnoredIdentifiers.has(name) || seen.has(`${name}:${column}`)) {\n continue;\n }\n\n references.push({ name, column });\n seen.add(`${name}:${column}`);\n }\n\n return references;\n}\n\nconst sourceMapIgnoredIdentifiers = new Set([\"false\", \"null\", \"true\", \"undefined\"]);\n\nfunction findFallbackSourceLine(\n generatedLine: string,\n generatedLineIndex: number,\n sourceLines: readonly string[],\n): number {\n const functionName = /function\\s+([A-Za-z_$][\\w$]*)/.exec(generatedLine)?.[1];\n\n if (functionName !== undefined) {\n return findSourceLocation(sourceLines, `function ${functionName}`)?.line ?? 0;\n }\n\n if (generatedLine.includes(\"createTemplate\")) {\n const jsxLine = sourceLines.findIndex((line) => line.includes(\"<\"));\n return jsxLine < 0 ? 0 : jsxLine;\n }\n\n if (generatedLine.includes(\"return\")) {\n return findSourceLocation(sourceLines, \"return\")?.line ?? 0;\n }\n\n return Math.min(generatedLineIndex, Math.max(0, sourceLines.length - 1));\n}\n\nfunction findSourceLocation(\n sourceLines: readonly string[],\n token: string,\n searchState?: SourceMapSearchState,\n): { line: number; column: number } | undefined {\n const source = sourceLines.join(\"\\n\");\n const start = searchState?.tokenOffsets.get(token) ?? 0;\n let offset = source.indexOf(token, start);\n\n if (offset < 0 && start > 0) {\n offset = source.indexOf(token);\n }\n\n if (offset < 0) {\n return undefined;\n }\n\n searchState?.tokenOffsets.set(token, offset + token.length);\n return sourceOffsetToLineColumn(sourceLines, offset);\n}\n\nfunction sourceOffsetToLineColumn(\n sourceLines: readonly string[],\n offset: number,\n): { line: number; column: number } {\n let remaining = offset;\n\n for (const [line, sourceLine] of sourceLines.entries()) {\n if (remaining <= sourceLine.length) {\n return { line, column: remaining };\n }\n\n remaining -= sourceLine.length + 1;\n }\n\n return {\n line: Math.max(0, sourceLines.length - 1),\n column: sourceLines.at(-1)?.length ?? 0,\n };\n}\n\nfunction findJsxExpressionTokenLocation(\n sourceLines: readonly string[],\n token: string,\n): { line: number; column: number } | undefined {\n let insideJsxExpression = false;\n\n for (const [line, sourceLine] of sourceLines.entries()) {\n if (sourceLine.includes(\"<\") && sourceLine.includes(\"{\")) {\n insideJsxExpression = true;\n }\n\n if (insideJsxExpression) {\n const column = sourceLine.indexOf(token);\n\n if (column >= 0) {\n return { line, column };\n }\n }\n\n if (sourceLine.includes(\"}\")) {\n insideJsxExpression = false;\n }\n }\n\n return undefined;\n}\n\nfunction dedupeAndSortSegments(segments: readonly SourceMapSegment[]): SourceMapSegment[] {\n const byGeneratedColumn = new Map<number, SourceMapSegment>();\n\n for (const segment of segments) {\n byGeneratedColumn.set(segment.generatedColumn, segment);\n }\n\n return Array.from(byGeneratedColumn.values()).sort(\n (left, right) => left.generatedColumn - right.generatedColumn,\n );\n}\n\nconst sourceMapBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\nfunction encodeVlq(value: number): string {\n let vlq = value < 0 ? (-value << 1) + 1 : value << 1;\n let encoded = \"\";\n\n do {\n let digit = vlq & 31;\n vlq >>>= 5;\n\n if (vlq > 0) {\n digit |= 32;\n }\n\n encoded += sourceMapBase64[digit] ?? \"\";\n } while (vlq > 0);\n\n return encoded;\n}\n\nfunction collectEventHydrationEntries(\n components: readonly ComponentIr[],\n): EventHydrationEntryMetadata[] {\n return components.flatMap((component) => {\n const entries: EventHydrationEntryMetadata[] = [];\n collectEventsFromNode(component.root, component.name, \"0\", entries);\n return entries;\n });\n}\n\nfunction collectClientReferences(components: readonly ComponentIr[]): string[] {\n const references = new Set<string>();\n\n for (const component of components) {\n collectClientReferencesFromNode(component.root, references);\n }\n\n return Array.from(references);\n}\n\nfunction collectClientReferenceManifest(\n components: readonly ComponentIr[],\n): ClientReferenceMetadata[] {\n const references = new Map<string, ClientReferenceMetadata>();\n\n for (const component of components) {\n collectClientReferenceManifestFromNode(component.root, references);\n }\n\n return Array.from(references.values());\n}\n\nfunction collectClientReferenceManifestFromNode(\n node: JsxNodeIr,\n references: Map<string, ClientReferenceMetadata>,\n): void {\n if (node.kind === \"component\" && node.clientReference !== undefined) {\n references.set(\n `${node.name}:${node.clientReference.moduleId}:${node.clientReference.exportName}`,\n {\n name: node.name,\n moduleId: node.clientReference.moduleId,\n exportName: node.clientReference.exportName,\n },\n );\n }\n\n for (const child of getNodeChildren(node)) {\n collectClientReferenceManifestFromNode(child, references);\n }\n\n if (node.kind === \"component\") {\n for (const prop of node.props) {\n if (prop.kind === \"render-prop\") {\n for (const child of prop.children) {\n collectClientReferenceManifestFromNode(child, references);\n }\n }\n }\n }\n}\n\nfunction collectClientReferencesFromNode(node: JsxNodeIr, references: Set<string>): void {\n if (\n node.kind === \"component\" &&\n node.runtime === \"compat\" &&\n node.clientReference !== undefined\n ) {\n references.add(node.name);\n }\n\n for (const child of getNodeChildren(node)) {\n collectClientReferencesFromNode(child, references);\n }\n\n if (node.kind === \"component\") {\n for (const prop of node.props) {\n if (prop.kind === \"render-prop\") {\n for (const child of prop.children) {\n collectClientReferencesFromNode(child, references);\n }\n }\n }\n }\n}\n\nfunction collectEventsFromNode(\n node: JsxNodeIr,\n componentName: string,\n path: string,\n entries: EventHydrationEntryMetadata[],\n): void {\n if (node.kind === \"element\") {\n for (const attr of node.attributes) {\n if (attr.kind === \"event\") {\n entries.push({\n id: `${componentName}:${path}`,\n event: attr.eventName,\n handler: attr.code,\n });\n }\n }\n }\n\n for (const [index, child] of getNodeChildren(node).entries()) {\n collectEventsFromNode(child, componentName, `${path}.${index}`, entries);\n }\n}\n\nfunction getNodeChildren(node: JsxNodeIr): readonly JsxNodeIr[] {\n if (node.kind === \"element\" || node.kind === \"fragment\") {\n return node.children;\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse];\n }\n\n if (node.kind === \"list\") {\n return node.children;\n }\n\n if (node.kind === \"async-boundary\") {\n return [...node.children, ...(node.placeholderChildren ?? []), ...(node.catchChildren ?? [])];\n }\n\n return [];\n}\n\nfunction createServerOptions(\n serverBootstrap: NonNullable<TransformInput[\"serverBootstrap\"]>,\n serverBootstrapNonce?: string,\n serverBootstrapSrc?: string,\n serverHydration?: boolean,\n reactSuspenseRevealScriptSrc?: string,\n) {\n return {\n serverBootstrap,\n ...(serverBootstrapNonce === undefined ? {} : { serverBootstrapNonce }),\n ...(serverBootstrapSrc === undefined ? {} : { serverBootstrapSrc }),\n ...(serverHydration === undefined ? {} : { serverHydration }),\n ...(reactSuspenseRevealScriptSrc === undefined ? {} : { reactSuspenseRevealScriptSrc }),\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"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","sourcesContent":["import { emitClient } from \"./emit-client.js\";\nimport { emitCompat } from \"./emit-compat.js\";\nimport { emitServer } from \"./emit-server.js\";\nimport { emitServerStream } from \"./emit-server-stream.js\";\nimport { analyzeCompilerModuleContextWithOxc, analyzeWithOxc } from \"./oxc.js\";\nimport { unsupportedClientAsyncComponentDiagnostic } from \"./diagnostics.js\";\nimport type { ComponentIr, JsxNodeIr } from \"./ir.js\";\nimport type { AnalyzeToIrInput, AnalyzeToIrOutput, CompilerModuleContext } from \"./internal.js\";\nimport type { AnalyzeModuleOptions } from \"./types.js\";\nimport type {\n ClientReferenceMetadata,\n EventHydrationEntryMetadata,\n ModuleMetadata,\n TransformInput,\n TransformOutput,\n} from \"./types.js\";\n\nexport function transform(input: TransformInput): TransformOutput {\n return transformWithAnalyzer(input, (analyzeTarget, analyzeOptions) =>\n analyzeWithOxc({\n code: input.code,\n filename: input.filename,\n target: analyzeTarget,\n options: analyzeOptions,\n }),\n );\n}\n\nexport function transformCompilerModuleContext(\n input: TransformInput & { moduleContext: CompilerModuleContext },\n): TransformOutput {\n if (input.moduleContext.code !== input.code || input.moduleContext.filename !== input.filename) {\n throw new Error(\"Transform input moduleContext must match the input code and filename.\");\n }\n\n return transformWithAnalyzer(input, (analyzeTarget, analyzeOptions) =>\n analyzeCompilerModuleContextWithOxc(input.moduleContext, {\n target: analyzeTarget,\n options: analyzeOptions,\n }),\n );\n}\n\nfunction transformWithAnalyzer(\n input: TransformInput,\n analyze: (target: AnalyzeToIrInput[\"target\"], options: AnalyzeModuleOptions) => AnalyzeToIrOutput,\n): TransformOutput {\n const mode = input.mode ?? \"reactive\";\n const serverOutput = input.serverOutput ?? \"string\";\n const serverBootstrap = input.serverBootstrap ?? \"none\";\n const analyzeTarget = mode === \"compat\" ? \"client\" : input.target;\n const bodyStatementJsx =\n input.target === \"server\"\n ? \"server-string\"\n : mode === \"compat\" && input.target === \"client\"\n ? \"compat-object\"\n : \"dom-node\";\n const analyzeOptions = {\n topLevelJsx:\n mode === \"compat\" && input.target === \"client\"\n ? \"compat-object\"\n : input.target === \"server\"\n ? \"server-string\"\n : \"diagnostic\",\n bodyStatementJsx,\n ...(input.target === \"server\" ? { serverOutput } : {}),\n awaitCompatComponents:\n input.target === \"server\" && serverOutput === \"stream\" ? \"lower\" : \"diagnostic\",\n clientBoundaryImports: input.clientBoundaryImports ?? [],\n clientBoundaryFallbackImports: input.clientBoundaryFallbackImports ?? [],\n compatReactNodeReturn: mode === \"compat\",\n ...(mode === \"compat\" && input.target === \"server\"\n ? { compatReactNodeReturnRenderMode: \"react-node\" as const }\n : {}),\n } as const;\n const analyzed = analyze(analyzeTarget, analyzeOptions);\n const diagnostics = [...analyzed.diagnostics];\n\n if (input.target === \"client\") {\n diagnostics.push(...collectClientAsyncComponentDiagnostics(analyzed.ir.components));\n }\n\n const emitted =\n mode === \"compat\" && input.target === \"client\"\n ? emitCompat(analyzed.ir, { dev: input.dev })\n : input.target === \"server\"\n ? serverOutput === \"stream\"\n ? emitServerStream(analyzed.ir, {\n ...createServerOptions(\n serverBootstrap,\n input.serverBootstrapNonce,\n input.serverBootstrapSrc,\n input.serverHydration,\n input.reactSuspenseRevealScriptSrc,\n ),\n ...(input.serverAwaitHydration === true\n ? { serverAwaitHydration: true as const }\n : {}),\n dynamicAttributes: mode === \"compat\" ? \"drop\" : \"emit\",\n escape: input.serverEscape,\n })\n : emitServer(analyzed.ir, {\n ...createServerOptions(\n serverBootstrap,\n input.serverBootstrapNonce,\n input.serverBootstrapSrc,\n input.serverHydration,\n ),\n dynamicAttributes: mode === \"compat\" ? \"drop\" : \"emit\",\n escape: input.serverEscape,\n })\n : emitClient(analyzed.ir);\n\n const metadata: ModuleMetadata = {\n filename: input.filename,\n target: input.target,\n compiler: {\n frontend: \"oxc\",\n typescriptFallback: false,\n },\n components: analyzed.ir.components.map((component) => ({\n name: component.name,\n exportName: component.exportName,\n })),\n imports: emitted.imports,\n };\n const events = collectEventHydrationEntries(analyzed.ir.components);\n\n if (events.length > 0) {\n metadata.eventHydrationManifest = {\n version: 1,\n events,\n };\n }\n const clientReferences = collectClientReferences(analyzed.ir.components);\n\n if (clientReferences.length > 0) {\n metadata.clientReferences = clientReferences;\n }\n const clientReferenceManifest = collectClientReferenceManifest(analyzed.ir.components);\n\n if (clientReferenceManifest.length > 0) {\n metadata.clientReferenceManifest = clientReferenceManifest;\n }\n\n if (input.target === \"server\") {\n metadata.serverOutput = serverOutput;\n\n if (serverBootstrap !== \"none\") {\n metadata.serverBootstrap = serverBootstrap;\n }\n\n if (input.serverBootstrapNonce !== undefined) {\n metadata.serverBootstrapNonce = input.serverBootstrapNonce;\n }\n\n if (input.serverBootstrapSrc !== undefined) {\n metadata.serverBootstrapSrc = input.serverBootstrapSrc;\n }\n\n if (input.serverHydration === true) {\n metadata.serverHydration = true;\n }\n\n if (input.reactSuspenseRevealScriptSrc !== undefined) {\n metadata.reactSuspenseRevealScriptSrc = input.reactSuspenseRevealScriptSrc;\n }\n }\n\n return {\n code: emitted.code,\n map: input.sourceMap === true ? createSourceMap(input, emitted.code) : null,\n diagnostics,\n metadata,\n };\n}\n\nfunction collectClientAsyncComponentDiagnostics(\n components: readonly ComponentIr[],\n): TransformOutput[\"diagnostics\"] {\n return components\n .filter((component) => component.async === true)\n .map((component) => unsupportedClientAsyncComponentDiagnostic(component.name));\n}\n\nfunction createSourceMap(input: TransformInput, outputCode: string): string {\n const generatedMap = createSegmentMappings(outputCode, input.code);\n\n return JSON.stringify({\n version: 3,\n file: `${input.filename}.js`,\n sources: [input.filename],\n sourcesContent: [input.code],\n names: generatedMap.names,\n mappings: generatedMap.mappings,\n });\n}\n\ninterface GeneratedSourceMap {\n mappings: string;\n names: string[];\n}\n\nfunction createSegmentMappings(outputCode: string, sourceCode: string): GeneratedSourceMap {\n const generatedLines = outputCode.split(\"\\n\");\n const sourceLines = sourceCode.split(\"\\n\");\n const lines: string[] = [];\n const names: string[] = [];\n const nameIndexes = new Map<string, number>();\n let previousSourceIndex = 0;\n let previousSourceLine = 0;\n let previousSourceColumn = 0;\n let previousNameIndex = 0;\n const searchState: SourceMapSearchState = { tokenOffsets: new Map() };\n\n for (const [lineIndex, generatedLine] of generatedLines.entries()) {\n let previousGeneratedColumn = 0;\n const segments = collectSourceMapSegments(generatedLine, lineIndex, sourceLines, searchState);\n\n lines.push(\n segments\n .map((segment) => {\n const fields = [\n encodeVlq(segment.generatedColumn - previousGeneratedColumn),\n encodeVlq(0 - previousSourceIndex),\n encodeVlq(segment.sourceLine - previousSourceLine),\n encodeVlq(segment.sourceColumn - previousSourceColumn),\n ];\n\n if (segment.name !== undefined) {\n const nameIndex = getSourceMapNameIndex(segment.name, names, nameIndexes);\n fields.push(encodeVlq(nameIndex - previousNameIndex));\n previousNameIndex = nameIndex;\n }\n\n const encoded = fields.join(\"\");\n previousGeneratedColumn = segment.generatedColumn;\n previousSourceIndex = 0;\n previousSourceLine = segment.sourceLine;\n previousSourceColumn = segment.sourceColumn;\n return encoded;\n })\n .join(\",\"),\n );\n }\n\n return { mappings: lines.join(\";\"), names };\n}\n\ninterface SourceMapSegment {\n generatedColumn: number;\n sourceLine: number;\n sourceColumn: number;\n name?: string;\n}\n\ninterface SourceMapSearchState {\n tokenOffsets: Map<string, number>;\n}\n\nfunction collectSourceMapSegments(\n generatedLine: string,\n generatedLineIndex: number,\n sourceLines: readonly string[],\n searchState: SourceMapSearchState,\n): SourceMapSegment[] {\n const fallbackSourceLine = findFallbackSourceLine(generatedLine, generatedLineIndex, sourceLines);\n const segments: SourceMapSegment[] = [\n {\n generatedColumn: 0,\n sourceLine: fallbackSourceLine,\n sourceColumn: 0,\n },\n ];\n\n const functionMatch = /function\\s+([A-Za-z_$][\\w$]*)/.exec(generatedLine);\n if (functionMatch !== null && functionMatch.index !== undefined) {\n const token = `function ${functionMatch[1]}`;\n const sourceLocation = findSourceLocation(sourceLines, token);\n\n if (sourceLocation !== undefined) {\n segments.push({\n generatedColumn: functionMatch.index,\n sourceLine: sourceLocation.line,\n sourceColumn: sourceLocation.column,\n });\n }\n }\n\n const returnColumn = generatedLine.indexOf(\"return\");\n if (returnColumn >= 0) {\n const sourceLocation = findSourceLocation(sourceLines, \"return\");\n\n if (sourceLocation !== undefined) {\n segments.push({\n generatedColumn: returnColumn,\n sourceLine: sourceLocation.line,\n sourceColumn: sourceLocation.column,\n });\n }\n }\n\n const templateStart = generatedLine.indexOf('createTemplate(\"');\n const templateTag =\n templateStart < 0\n ? undefined\n : generatedLine.slice(templateStart).match(/<[A-Za-z][\\w:-]*/)?.[0];\n if (templateTag !== undefined) {\n const generatedColumn = generatedLine.indexOf(templateTag);\n const sourceLocation = findSourceLocation(sourceLines, templateTag);\n\n if (generatedColumn >= 0 && sourceLocation !== undefined) {\n segments.push({\n generatedColumn,\n sourceLine: sourceLocation.line,\n sourceColumn: sourceLocation.column,\n });\n }\n }\n\n const dynamicExpression = /=> \\(([^)]+)\\)/.exec(generatedLine)?.[1]?.trim();\n if (dynamicExpression !== undefined && dynamicExpression !== \"\") {\n const generatedColumn = generatedLine.indexOf(dynamicExpression);\n const bindPropAttribute = /bindProp\\([^,]+,\\s+\"([^\"]+)\"/.exec(generatedLine)?.[1];\n const sourceLocation =\n bindPropAttribute === undefined\n ? undefined\n : (findSourceLocation(\n sourceLines,\n `${bindPropAttribute}={${dynamicExpression}}`,\n searchState,\n ) ??\n findSourceLocation(\n sourceLines,\n `${bindPropAttribute}=\"${dynamicExpression}\"`,\n searchState,\n ));\n const fallbackSourceLocation =\n findSourceLocation(sourceLines, `{${dynamicExpression}}`, searchState) ??\n findJsxExpressionTokenLocation(sourceLines, dynamicExpression) ??\n findSourceLocation(sourceLines, dynamicExpression, searchState);\n const resolvedSourceLocation = sourceLocation ?? fallbackSourceLocation;\n\n if (generatedColumn >= 0 && resolvedSourceLocation !== undefined) {\n const sourceColumnOffset =\n bindPropAttribute !== undefined && sourceLocation !== undefined\n ? bindPropAttribute.length + 2\n : sourceLines[resolvedSourceLocation.line]?.startsWith(\"{\", resolvedSourceLocation.column)\n ? 1\n : 0;\n\n segments.push({\n generatedColumn,\n sourceLine: resolvedSourceLocation.line,\n sourceColumn: resolvedSourceLocation.column + sourceColumnOffset,\n ...(isIdentifierName(dynamicExpression) ? { name: dynamicExpression } : {}),\n });\n\n for (const identifier of collectIdentifierReferences(dynamicExpression)) {\n segments.push({\n generatedColumn: generatedColumn + identifier.column,\n sourceLine: resolvedSourceLocation.line,\n sourceColumn: resolvedSourceLocation.column + sourceColumnOffset + identifier.column,\n name: identifier.name,\n });\n }\n }\n }\n\n return dedupeAndSortSegments(segments);\n}\n\nfunction getSourceMapNameIndex(\n name: string,\n names: string[],\n indexes: Map<string, number>,\n): number {\n const existing = indexes.get(name);\n\n if (existing !== undefined) {\n return existing;\n }\n\n const index = names.length;\n names.push(name);\n indexes.set(name, index);\n return index;\n}\n\nfunction isIdentifierName(value: string): boolean {\n return /^[A-Za-z_$][\\w$]*$/.test(value);\n}\n\nfunction collectIdentifierReferences(expression: string): { name: string; column: number }[] {\n const references: { name: string; column: number }[] = [];\n const seen = new Set<string>();\n const identifierPattern = /\\b[A-Za-z_$][\\w$]*\\b/g;\n\n for (const match of expression.matchAll(identifierPattern)) {\n const name = match[0];\n const column = match.index ?? 0;\n\n if (sourceMapIgnoredIdentifiers.has(name) || seen.has(`${name}:${column}`)) {\n continue;\n }\n\n references.push({ name, column });\n seen.add(`${name}:${column}`);\n }\n\n return references;\n}\n\nconst sourceMapIgnoredIdentifiers = new Set([\"false\", \"null\", \"true\", \"undefined\"]);\n\nfunction findFallbackSourceLine(\n generatedLine: string,\n generatedLineIndex: number,\n sourceLines: readonly string[],\n): number {\n const functionName = /function\\s+([A-Za-z_$][\\w$]*)/.exec(generatedLine)?.[1];\n\n if (functionName !== undefined) {\n return findSourceLocation(sourceLines, `function ${functionName}`)?.line ?? 0;\n }\n\n if (generatedLine.includes(\"createTemplate\")) {\n const jsxLine = sourceLines.findIndex((line) => line.includes(\"<\"));\n return jsxLine < 0 ? 0 : jsxLine;\n }\n\n if (generatedLine.includes(\"return\")) {\n return findSourceLocation(sourceLines, \"return\")?.line ?? 0;\n }\n\n return Math.min(generatedLineIndex, Math.max(0, sourceLines.length - 1));\n}\n\nfunction findSourceLocation(\n sourceLines: readonly string[],\n token: string,\n searchState?: SourceMapSearchState,\n): { line: number; column: number } | undefined {\n const source = sourceLines.join(\"\\n\");\n const start = searchState?.tokenOffsets.get(token) ?? 0;\n let offset = source.indexOf(token, start);\n\n if (offset < 0 && start > 0) {\n offset = source.indexOf(token);\n }\n\n if (offset < 0) {\n return undefined;\n }\n\n searchState?.tokenOffsets.set(token, offset + token.length);\n return sourceOffsetToLineColumn(sourceLines, offset);\n}\n\nfunction sourceOffsetToLineColumn(\n sourceLines: readonly string[],\n offset: number,\n): { line: number; column: number } {\n let remaining = offset;\n\n for (const [line, sourceLine] of sourceLines.entries()) {\n if (remaining <= sourceLine.length) {\n return { line, column: remaining };\n }\n\n remaining -= sourceLine.length + 1;\n }\n\n return {\n line: Math.max(0, sourceLines.length - 1),\n column: sourceLines.at(-1)?.length ?? 0,\n };\n}\n\nfunction findJsxExpressionTokenLocation(\n sourceLines: readonly string[],\n token: string,\n): { line: number; column: number } | undefined {\n let insideJsxExpression = false;\n\n for (const [line, sourceLine] of sourceLines.entries()) {\n if (sourceLine.includes(\"<\") && sourceLine.includes(\"{\")) {\n insideJsxExpression = true;\n }\n\n if (insideJsxExpression) {\n const column = sourceLine.indexOf(token);\n\n if (column >= 0) {\n return { line, column };\n }\n }\n\n if (sourceLine.includes(\"}\")) {\n insideJsxExpression = false;\n }\n }\n\n return undefined;\n}\n\nfunction dedupeAndSortSegments(segments: readonly SourceMapSegment[]): SourceMapSegment[] {\n const byGeneratedColumn = new Map<number, SourceMapSegment>();\n\n for (const segment of segments) {\n byGeneratedColumn.set(segment.generatedColumn, segment);\n }\n\n return Array.from(byGeneratedColumn.values()).sort(\n (left, right) => left.generatedColumn - right.generatedColumn,\n );\n}\n\nconst sourceMapBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n\nfunction encodeVlq(value: number): string {\n let vlq = value < 0 ? (-value << 1) + 1 : value << 1;\n let encoded = \"\";\n\n do {\n let digit = vlq & 31;\n vlq >>>= 5;\n\n if (vlq > 0) {\n digit |= 32;\n }\n\n encoded += sourceMapBase64[digit] ?? \"\";\n } while (vlq > 0);\n\n return encoded;\n}\n\nfunction collectEventHydrationEntries(\n components: readonly ComponentIr[],\n): EventHydrationEntryMetadata[] {\n return components.flatMap((component) => {\n const entries: EventHydrationEntryMetadata[] = [];\n collectEventsFromNode(component.root, component.name, \"0\", entries);\n return entries;\n });\n}\n\nfunction collectClientReferences(components: readonly ComponentIr[]): string[] {\n const references = new Set<string>();\n\n for (const component of components) {\n collectClientReferencesFromNode(component.root, references);\n }\n\n return Array.from(references);\n}\n\nfunction collectClientReferenceManifest(\n components: readonly ComponentIr[],\n): ClientReferenceMetadata[] {\n const references = new Map<string, ClientReferenceMetadata>();\n\n for (const component of components) {\n collectClientReferenceManifestFromNode(component.root, references);\n }\n\n return Array.from(references.values());\n}\n\nfunction collectClientReferenceManifestFromNode(\n node: JsxNodeIr,\n references: Map<string, ClientReferenceMetadata>,\n): void {\n if (node.kind === \"component\" && node.clientReference !== undefined) {\n references.set(\n `${node.name}:${node.clientReference.moduleId}:${node.clientReference.exportName}`,\n {\n name: node.name,\n moduleId: node.clientReference.moduleId,\n exportName: node.clientReference.exportName,\n },\n );\n }\n\n for (const child of getNodeChildren(node)) {\n collectClientReferenceManifestFromNode(child, references);\n }\n\n if (node.kind === \"component\") {\n for (const prop of node.props) {\n if (prop.kind === \"render-prop\") {\n for (const child of prop.children) {\n collectClientReferenceManifestFromNode(child, references);\n }\n }\n }\n }\n}\n\nfunction collectClientReferencesFromNode(node: JsxNodeIr, references: Set<string>): void {\n if (\n node.kind === \"component\" &&\n node.runtime === \"compat\" &&\n node.clientReference !== undefined\n ) {\n references.add(node.name);\n }\n\n for (const child of getNodeChildren(node)) {\n collectClientReferencesFromNode(child, references);\n }\n\n if (node.kind === \"component\") {\n for (const prop of node.props) {\n if (prop.kind === \"render-prop\") {\n for (const child of prop.children) {\n collectClientReferencesFromNode(child, references);\n }\n }\n }\n }\n}\n\nfunction collectEventsFromNode(\n node: JsxNodeIr,\n componentName: string,\n path: string,\n entries: EventHydrationEntryMetadata[],\n): void {\n if (node.kind === \"element\") {\n for (const attr of node.attributes) {\n if (attr.kind === \"event\") {\n entries.push({\n id: `${componentName}:${path}`,\n event: attr.eventName,\n handler: attr.code,\n });\n }\n }\n }\n\n for (const [index, child] of getNodeChildren(node).entries()) {\n collectEventsFromNode(child, componentName, `${path}.${index}`, entries);\n }\n}\n\nfunction getNodeChildren(node: JsxNodeIr): readonly JsxNodeIr[] {\n if (node.kind === \"element\" || node.kind === \"fragment\") {\n return node.children;\n }\n\n if (node.kind === \"conditional\") {\n return [...node.whenTrue, ...node.whenFalse];\n }\n\n if (node.kind === \"list\") {\n return node.children;\n }\n\n if (node.kind === \"async-boundary\") {\n return [...node.children, ...(node.placeholderChildren ?? []), ...(node.catchChildren ?? [])];\n }\n\n return [];\n}\n\nfunction createServerOptions(\n serverBootstrap: NonNullable<TransformInput[\"serverBootstrap\"]>,\n serverBootstrapNonce?: string,\n serverBootstrapSrc?: string,\n serverHydration?: boolean,\n reactSuspenseRevealScriptSrc?: string,\n) {\n return {\n serverBootstrap,\n ...(serverBootstrapNonce === undefined ? {} : { serverBootstrapNonce }),\n ...(serverBootstrapSrc === undefined ? {} : { serverBootstrapSrc }),\n ...(serverHydration === undefined ? {} : { serverHydration }),\n ...(reactSuspenseRevealScriptSrc === undefined ? {} : { reactSuspenseRevealScriptSrc }),\n };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reckona/mreact-compiler",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.146",
|
|
4
4
|
"description": "Compiler passes and OXC-backed JSX analysis for mreact.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"compiler",
|
|
@@ -50,6 +50,6 @@
|
|
|
50
50
|
"dependencies": {
|
|
51
51
|
"oxc-parser": "0.129.0",
|
|
52
52
|
"oxc-transform": "0.129.0",
|
|
53
|
-
"@reckona/mreact-shared": "0.0.
|
|
53
|
+
"@reckona/mreact-shared": "0.0.146"
|
|
54
54
|
}
|
|
55
55
|
}
|
package/src/diagnostics.ts
CHANGED
|
@@ -77,6 +77,14 @@ export function unsupportedCompatServerTargetDiagnostic(): Diagnostic {
|
|
|
77
77
|
};
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
+
export function unsupportedClientAsyncComponentDiagnostic(name: string): Diagnostic {
|
|
81
|
+
return {
|
|
82
|
+
level: "error",
|
|
83
|
+
code: "MR_ASYNC_COMPONENT_CLIENT_UNSUPPORTED",
|
|
84
|
+
message: `Async component '${name}' cannot be emitted by the client target. Async components are server-only; move data fetching into a route loader with <Await>, or fetch on the client with an effect or query library.`,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
80
88
|
export function unsupportedAwaitInnerComponentDiagnostic(
|
|
81
89
|
name: string,
|
|
82
90
|
loc?: SourceLocation,
|
package/src/emit-client.ts
CHANGED
|
@@ -293,11 +293,12 @@ function emitComponent(
|
|
|
293
293
|
const allocator = createNameAllocator([...component.bindingNames, templateName]);
|
|
294
294
|
const body = component.bodyStatements.map((statement) => ` ${statement}`);
|
|
295
295
|
const parameters = component.parameters.join(", ");
|
|
296
|
+
const functionKeyword = emitFunctionKeyword(component);
|
|
296
297
|
|
|
297
298
|
if (component.root.kind === "component") {
|
|
298
299
|
const state = { allocateName: allocator, textIndex: 0, helperNames, clientBoundaryHelperName };
|
|
299
300
|
return [
|
|
300
|
-
`${
|
|
301
|
+
`${functionKeyword} ${component.name}(${parameters}) {`,
|
|
301
302
|
...body,
|
|
302
303
|
` return ${emitComponentCall(
|
|
303
304
|
component.root.name,
|
|
@@ -317,7 +318,7 @@ function emitComponent(
|
|
|
317
318
|
const fragmentName = allocator("_fragment");
|
|
318
319
|
const markerName = allocator("_marker");
|
|
319
320
|
return [
|
|
320
|
-
`${
|
|
321
|
+
`${functionKeyword} ${component.name}(${parameters}) {`,
|
|
321
322
|
...body,
|
|
322
323
|
` const ${fragmentName} = document.createDocumentFragment();`,
|
|
323
324
|
` const ${markerName} = document.createComment("");`,
|
|
@@ -339,7 +340,7 @@ function emitComponent(
|
|
|
339
340
|
});
|
|
340
341
|
return [
|
|
341
342
|
`const ${templateName} = ${helperNames.createTemplate}(${templateHtml});`,
|
|
342
|
-
`${
|
|
343
|
+
`${functionKeyword} ${component.name}(${parameters}) {`,
|
|
343
344
|
...body,
|
|
344
345
|
` const ${fragmentName} = ${templateName}();`,
|
|
345
346
|
component.root.kind === "fragment"
|
|
@@ -353,6 +354,12 @@ function emitComponent(
|
|
|
353
354
|
.join("\n");
|
|
354
355
|
}
|
|
355
356
|
|
|
357
|
+
function emitFunctionKeyword(component: ComponentIr): string {
|
|
358
|
+
return `${component.exportDefault === true ? "export default " : component.exported === false ? "" : "export "}${
|
|
359
|
+
component.async === true ? "async " : ""
|
|
360
|
+
}function`;
|
|
361
|
+
}
|
|
362
|
+
|
|
356
363
|
function renderStaticHtml(node: JsxNodeIr): string {
|
|
357
364
|
if (node.kind === "text") {
|
|
358
365
|
return escapeHtml(node.value);
|