diff --git a/.changeset/short-cats-kiss.md b/.changeset/short-cats-kiss.md new file mode 100644 index 000000000..c65c1608d --- /dev/null +++ b/.changeset/short-cats-kiss.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fixes regression with JSX in Solid library diff --git a/packages/astro/src/vite-plugin-jsx/tag.ts b/packages/astro/src/vite-plugin-jsx/tag.ts index 7f21a5562..12bb3bcdd 100644 --- a/packages/astro/src/vite-plugin-jsx/tag.ts +++ b/packages/astro/src/vite-plugin-jsx/tag.ts @@ -55,34 +55,21 @@ export default function tagExportsWithRenderer({ if (node.exportKind === 'type') return; if (node.type === 'ExportAllDeclaration') return; - const addTag = (id: string) => { - const tags = state.get('astro:tags') ?? []; - state.set('astro:tags', [...tags, id]); - }; - - if (node.type === 'ExportNamedDeclaration' || node.type === 'ExportDefaultDeclaration') { - if (t.isIdentifier(node.declaration)) { - addTag(node.declaration.name); - } else if (t.isFunctionDeclaration(node.declaration) && node.declaration.id?.name) { - addTag(node.declaration.id.name); - } else if (t.isVariableDeclaration(node.declaration)) { - node.declaration.declarations?.forEach((declaration) => { - if (t.isArrowFunctionExpression(declaration.init) && t.isIdentifier(declaration.id)) { - addTag(declaration.id.name); - } - }); - } else if (t.isObjectExpression(node.declaration)) { - node.declaration.properties?.forEach((property) => { - if (t.isProperty(property) && t.isIdentifier(property.key)) { - addTag(property.key.name); - } - }); - } else if (t.isExportNamedDeclaration(node)) { - node.specifiers.forEach((specifier) => { - if (t.isExportSpecifier(specifier) && t.isIdentifier(specifier.exported)) { - addTag(specifier.local.name); - } - }); + if (node.type === 'ExportNamedDeclaration') { + if (t.isFunctionDeclaration(node.declaration)) { + if (node.declaration.id?.name) { + const id = node.declaration.id.name; + const tags = state.get('astro:tags') ?? []; + state.set('astro:tags', [...tags, id]); + } + } + } else if (node.type === 'ExportDefaultDeclaration') { + if (t.isFunctionDeclaration(node.declaration)) { + if (node.declaration.id?.name) { + const id = node.declaration.id.name; + const tags = state.get('astro:tags') ?? []; + state.set('astro:tags', [...tags, id]); + } } } },