diff options
Diffstat (limited to 'packages/renderers/renderer-preact')
-rw-r--r-- | packages/renderers/renderer-preact/CHANGELOG.md | 119 | ||||
-rw-r--r-- | packages/renderers/renderer-preact/README.md | 31 | ||||
-rw-r--r-- | packages/renderers/renderer-preact/client.js | 8 | ||||
-rw-r--r-- | packages/renderers/renderer-preact/compat/index.js | 36 | ||||
-rw-r--r-- | packages/renderers/renderer-preact/index.js | 30 | ||||
-rw-r--r-- | packages/renderers/renderer-preact/package.json | 31 | ||||
-rw-r--r-- | packages/renderers/renderer-preact/server.js | 37 | ||||
-rw-r--r-- | packages/renderers/renderer-preact/static-html.js | 24 |
8 files changed, 0 insertions, 316 deletions
diff --git a/packages/renderers/renderer-preact/CHANGELOG.md b/packages/renderers/renderer-preact/CHANGELOG.md deleted file mode 100644 index 39179799a..000000000 --- a/packages/renderers/renderer-preact/CHANGELOG.md +++ /dev/null @@ -1,119 +0,0 @@ -# @astrojs/renderer-preact - -## 0.5.0 - -### Minor Changes - -- [#2563](https://github.com/withastro/astro/pull/2563) [`a907a73b`](https://github.com/withastro/astro/commit/a907a73b8cd14726d158ea460932f9cd8891923a) Thanks [@natemoo-re](https://github.com/natemoo-re)! - Upgrade renderer dependencies for `vite@2.8.x` - -## 0.5.0-next.0 - -### Minor Changes - -- [#2563](https://github.com/withastro/astro/pull/2563) [`a907a73b`](https://github.com/withastro/astro/commit/a907a73b8cd14726d158ea460932f9cd8891923a) Thanks [@natemoo-re](https://github.com/natemoo-re)! - Upgrade renderer dependencies for `vite@2.8.x` - -## 0.4.0 - -### Minor Changes - -- [#2202](https://github.com/withastro/astro/pull/2202) [`45cea6ae`](https://github.com/withastro/astro/commit/45cea6aec5a310fed4cb8da0d96670d6b99a2539) Thanks [@jonathantneal](https://github.com/jonathantneal)! - Officially drop support for Node v12. The minimum supported version is now Node v14.15+, - -## 0.3.2 - -### Patch Changes - -- [#2170](https://github.com/withastro/astro/pull/2170) [`5af24efb`](https://github.com/withastro/astro/commit/5af24efb3493b8f5b6a8f980c792455c7dc34eb5) Thanks [@FredKSchott](https://github.com/FredKSchott)! - Fix preact 10.6 regression by pinning to preact 10.5 - -## 0.3.1 - -### Patch Changes - -- [#2078](https://github.com/withastro/astro/pull/2078) [`ac3e8702`](https://github.com/withastro/astro/commit/ac3e870280e983a7977da79b6eec0568d38d8420) Thanks [@natemoo-re](https://github.com/natemoo-re)! - Fix behavior of renderers when no children are passed in - -## 0.3.0 - -### Minor Changes - -- e6aaeff5: Updated framework renderers for the v0.21.0 release of Astro. Assorted changes and a new renderer interface are included in this release. - -## 0.3.0-next.1 - -### Patch Changes - -- 3cd1458a: Bugfix: Bundled CSS missing files on Windows - -## 0.3.0-next.0 - -### Minor Changes - -- d84bfe71: Updates the renderers to confirm to the new renderer API. - -## 0.2.2 - -### Patch Changes - -- 97d37f8f: Update READMEs for all renderers - -## 0.2.1 - -### Patch Changes - -- f7e86150: Fix an issue where preact component UI wouldn't update on hydrate - -## 0.2.0 - -### Minor Changes - -- bd18e14: Switches to [the new JSX Transform](https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html) originally introduced for React v17. This also leverages the new `jsxTransformOptions` options for renderers. - - This change also removes the need for importing your Framework's `jsxFactory` directly, which means you can wave goodbye to `import React from "react";` and `import { h } from "preact";`. - - > **If you are using mutliple frameworks** and a file doesn't reference `react` or `preact`, Astro might not be able to locate the correct renderer! You can add a pragma comment like `/** @jsxImportSource preact */` to the top of your file. Alternatively, just import the JSX pragma as you traditionally would have. - -### Patch Changes - -- bd18e14: Update `check` logic to exclude false-positives from SolidJS - -## 0.2.0-next.0 - -### Minor Changes - -- bd18e14: Switches to [the new JSX Transform](https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html) originally introduced for React v17. This also leverages the new `jsxTransformOptions` options for renderers. - - This change also removes the need for importing your Framework's `jsxFactory` directly, which means you can wave goodbye to `import React from "react";` and `import { h } from "preact";`. - - > **If you are using mutliple frameworks** and a file doesn't reference `react` or `preact`, Astro might not be able to locate the correct renderer! You can add a pragma comment like `/** @jsxImportSource preact */` to the top of your file. Alternatively, just import the JSX pragma as you traditionally would have. - -### Patch Changes - -- bd18e14: Update `check` logic to exclude false-positives from SolidJS - -## 0.1.3 - -### Patch Changes - -- 0abd251: Allows renderers to provide knownEntrypoint config values - -## 0.1.2 - -### Patch Changes - -- 9d4a40f: Fixes bug with using arrow function components - -## 0.1.1 - -### Patch Changes - -- ab2972b: Update package.json engines for esm support - -## 0.1.0 - -### Minor Changes - -- 643c880: Initial release - -## 0.1.0-next.0 - -### Minor Changes - -- 643c880: Initial release diff --git a/packages/renderers/renderer-preact/README.md b/packages/renderers/renderer-preact/README.md deleted file mode 100644 index eba2e0db8..000000000 --- a/packages/renderers/renderer-preact/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# @astrojs/renderer-preact - -This is a plugin for [Astro][astro] apps that enables server-side rendering of Preact components. - -## Installation - -Install `@astrojs/renderer-preact` and then add it to your `astro.config.mjs` in the `renderers` property: - -``` -npm install @astrojs/renderer-preact -``` - -__astro.config.mjs__ - -```js -export default { - // ... - - renderers: [ - // ... - '@astrojs/renderer-preact' - ] -} -``` - -## Documentation - -[Astro Renderer Documentation][renderer-docs] - -[astro]: https://astro.build -[renderer-docs]: https://docs.astro.build/reference/renderer-reference diff --git a/packages/renderers/renderer-preact/client.js b/packages/renderers/renderer-preact/client.js deleted file mode 100644 index 5ece5ddb2..000000000 --- a/packages/renderers/renderer-preact/client.js +++ /dev/null @@ -1,8 +0,0 @@ -import { h, render } from 'preact'; -import StaticHtml from './static-html.js'; - -export default (element) => (Component, props, children) => - render( - h(Component, props, children != null ? h(StaticHtml, { value: children }) : children), - element - ); diff --git a/packages/renderers/renderer-preact/compat/index.js b/packages/renderers/renderer-preact/compat/index.js deleted file mode 100644 index a5580f04d..000000000 --- a/packages/renderers/renderer-preact/compat/index.js +++ /dev/null @@ -1,36 +0,0 @@ -export default { - name: '@astrojs/renderer-preact/compat', - client: '../client.js', - server: '../server.js', - jsxImportSource: 'react', - jsxTransformOptions: async () => { - const { - default: { default: jsx }, - } = await import('@babel/plugin-transform-react-jsx'); - return { - plugins: [jsx({}, { runtime: 'automatic', importSource: 'preact/compat' })], - }; - }, - viteConfig() { - return { - alias: { - react: 'preact/compat', - 'react-dom': 'preact/compat', - }, - resolve: { - dedupe: ['react', 'react-dom'], - }, - optimizeDeps: { - include: [ - '@astrojs/renderer-preact/client.js', - 'preact/compat', - 'preact/compat/jsx-runtime', - 'preact-render-to-string', - ], - }, - ssr: { - external: ['preact-render-to-string'], - }, - }; - }, -}; diff --git a/packages/renderers/renderer-preact/index.js b/packages/renderers/renderer-preact/index.js deleted file mode 100644 index fe0a24528..000000000 --- a/packages/renderers/renderer-preact/index.js +++ /dev/null @@ -1,30 +0,0 @@ -export default { - name: '@astrojs/renderer-preact', - client: './client.js', - server: './server.js', - jsxImportSource: 'preact', - jsxTransformOptions: async () => { - const { - default: { default: jsx }, - } = await import('@babel/plugin-transform-react-jsx'); - return { - plugins: [jsx({}, { runtime: 'automatic', importSource: 'preact' })], - }; - }, - viteConfig() { - return { - optimizeDeps: { - include: [ - '@astrojs/renderer-preact/client.js', - 'preact', - 'preact/jsx-runtime', - 'preact-render-to-string', - ], - exclude: ['@astrojs/renderer-preact/server.js'], - }, - ssr: { - external: ['preact-render-to-string'], - }, - }; - }, -}; diff --git a/packages/renderers/renderer-preact/package.json b/packages/renderers/renderer-preact/package.json deleted file mode 100644 index 81dea572b..000000000 --- a/packages/renderers/renderer-preact/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "@astrojs/renderer-preact", - "description": "Use Preact components within Astro", - "version": "0.5.0", - "type": "module", - "author": "withastro", - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/withastro/astro.git", - "directory": "packages/renderers/renderer-preact" - }, - "bugs": "https://github.com/withastro/astro/issues", - "homepage": "https://astro.build", - "exports": { - ".": "./index.js", - "./*": "./*", - "./compat": "./compat/index.js", - "./client.js": "./client.js", - "./server.js": "./server.js", - "./package.json": "./package.json" - }, - "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.17.3", - "preact": "^10.7.1", - "preact-render-to-string": "^5.1.21" - }, - "engines": { - "node": "^14.15.0 || >=16.0.0" - } -} diff --git a/packages/renderers/renderer-preact/server.js b/packages/renderers/renderer-preact/server.js deleted file mode 100644 index 0729f42e9..000000000 --- a/packages/renderers/renderer-preact/server.js +++ /dev/null @@ -1,37 +0,0 @@ -import { h, Component as BaseComponent } from 'preact'; -import render from 'preact-render-to-string'; -import StaticHtml from './static-html.js'; - -function check(Component, props, children) { - if (typeof Component !== 'function') return false; - - if (Component.prototype != null && typeof Component.prototype.render === 'function') { - return BaseComponent.isPrototypeOf(Component); - } - - try { - const { html } = renderToStaticMarkup(Component, props, children); - if (typeof html !== 'string') { - return false; - } - - // There are edge cases (SolidJS) where Preact *might* render a string, - // but components would be <undefined></undefined> - - return !/\<undefined\>/.test(html); - } catch (err) { - return false; - } -} - -function renderToStaticMarkup(Component, props, children) { - const html = render( - h(Component, props, children != null ? h(StaticHtml, { value: children }) : children) - ); - return { html }; -} - -export default { - check, - renderToStaticMarkup, -}; diff --git a/packages/renderers/renderer-preact/static-html.js b/packages/renderers/renderer-preact/static-html.js deleted file mode 100644 index 9af8002a7..000000000 --- a/packages/renderers/renderer-preact/static-html.js +++ /dev/null @@ -1,24 +0,0 @@ -import { h } from 'preact'; - -/** - * Astro passes `children` as a string of HTML, so we need - * a wrapper `div` to render that content as VNodes. - * - * As a bonus, we can signal to Preact that this subtree is - * entirely static and will never change via `shouldComponentUpdate`. - */ -const StaticHtml = ({ value }) => { - if (!value) return null; - return h('astro-fragment', { dangerouslySetInnerHTML: { __html: value } }); -}; - -/** - * This tells Preact to opt-out of re-rendering this subtree, - * In addition to being a performance optimization, - * this also allows other frameworks to attach to `children`. - * - * See https://preactjs.com/guide/v8/external-dom-mutations - */ -StaticHtml.shouldComponentUpdate = () => false; - -export default StaticHtml; |