From 72b26daf694b213918f02d0fcbf90ab5b7ebc31f Mon Sep 17 00:00:00 2001 From: Nate Moore Date: Wed, 20 Dec 2023 12:59:49 -0600 Subject: [PATCH] Skip `check` for known Qwik components (#9482) --- .changeset/eight-ears-call.md | 7 +++++++ packages/integrations/preact/src/server.ts | 1 + packages/integrations/react/server-v17.js | 1 + packages/integrations/react/server.js | 1 + packages/integrations/solid/src/server.ts | 1 + 5 files changed, 11 insertions(+) create mode 100644 .changeset/eight-ears-call.md diff --git a/.changeset/eight-ears-call.md b/.changeset/eight-ears-call.md new file mode 100644 index 000000000000..41a9140a7a24 --- /dev/null +++ b/.changeset/eight-ears-call.md @@ -0,0 +1,7 @@ +--- +'@astrojs/preact': patch +'@astrojs/react': patch +'@astrojs/solid-js': patch +--- + +Improves compatability with the [Qwik adapter](https://github.com/QwikDev/astro) diff --git a/packages/integrations/preact/src/server.ts b/packages/integrations/preact/src/server.ts index a395433c9bad..1de6d174f4c0 100644 --- a/packages/integrations/preact/src/server.ts +++ b/packages/integrations/preact/src/server.ts @@ -13,6 +13,7 @@ let consoleFilterRefs = 0; function check(this: RendererContext, Component: any, props: Record, children: any) { if (typeof Component !== 'function') return false; + if (Component.name === "QwikComponent") return false; if (Component.prototype != null && typeof Component.prototype.render === 'function') { return BaseComponent.isPrototypeOf(Component); diff --git a/packages/integrations/react/server-v17.js b/packages/integrations/react/server-v17.js index 5638c6fb776e..12e1f198e4f1 100644 --- a/packages/integrations/react/server-v17.js +++ b/packages/integrations/react/server-v17.js @@ -20,6 +20,7 @@ function check(Component, props, children) { return Component['$$typeof']?.toString().slice('Symbol('.length).startsWith('react'); } if (typeof Component !== 'function') return false; + if (Component.name === "QwikComponent") return false; if (Component.prototype != null && typeof Component.prototype.render === 'function') { return React.Component.isPrototypeOf(Component) || React.PureComponent.isPrototypeOf(Component); diff --git a/packages/integrations/react/server.js b/packages/integrations/react/server.js index 4c1aac9334d4..810c37250fcc 100644 --- a/packages/integrations/react/server.js +++ b/packages/integrations/react/server.js @@ -22,6 +22,7 @@ async function check(Component, props, children) { return Component['$$typeof'].toString().slice('Symbol('.length).startsWith('react'); } if (typeof Component !== 'function') return false; + if (Component.name === "QwikComponent") return false; // Preact forwarded-ref components can be functions, which React does not support if (typeof Component === 'function' && Component['$$typeof'] === Symbol.for('react.forward_ref')) diff --git a/packages/integrations/solid/src/server.ts b/packages/integrations/solid/src/server.ts index 6e371da517f6..eb73f0af18e3 100644 --- a/packages/integrations/solid/src/server.ts +++ b/packages/integrations/solid/src/server.ts @@ -6,6 +6,7 @@ const slotName = (str: string) => str.trim().replace(/[-_]([a-z])/g, (_, w) => w function check(this: RendererContext, Component: any, props: Record, children: any) { if (typeof Component !== 'function') return false; + if (Component.name === "QwikComponent") return false; const { html } = renderToStaticMarkup.call(this, Component, props, children); return typeof html === 'string'; }