@reckona/mreact-compiler 0.0.143 → 0.0.145
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 +137 -27
- package/dist/emit-compat.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 +202 -20
- package/src/transform.ts +14 -0
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.145",
|
|
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.145"
|
|
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);
|