diff options
author | 2022-04-11 11:19:41 -0700 | |
---|---|---|
committer | 2022-04-11 11:19:41 -0700 | |
commit | 771127ea294fb297c080b2bb3e74b433043b90f4 (patch) | |
tree | d0c80721164a81592e328d22d4ecb9af932c727f /packages/renderers/renderer-react | |
parent | 6c6e9477402e9d30659f56488b1027f7179cd43b (diff) | |
download | astro-771127ea294fb297c080b2bb3e74b433043b90f4.tar.gz astro-771127ea294fb297c080b2bb3e74b433043b90f4.tar.zst astro-771127ea294fb297c080b2bb3e74b433043b90f4.zip |
remove unused renderers (#3063)
Diffstat (limited to 'packages/renderers/renderer-react')
-rw-r--r-- | packages/renderers/renderer-react/CHANGELOG.md | 123 | ||||
-rw-r--r-- | packages/renderers/renderer-react/README.md | 31 | ||||
-rw-r--r-- | packages/renderers/renderer-react/client.js | 15 | ||||
-rw-r--r-- | packages/renderers/renderer-react/index.js | 42 | ||||
-rw-r--r-- | packages/renderers/renderer-react/jsx-runtime.js | 8 | ||||
-rw-r--r-- | packages/renderers/renderer-react/package.json | 31 | ||||
-rw-r--r-- | packages/renderers/renderer-react/server.js | 71 | ||||
-rw-r--r-- | packages/renderers/renderer-react/static-html.js | 27 |
8 files changed, 0 insertions, 348 deletions
diff --git a/packages/renderers/renderer-react/CHANGELOG.md b/packages/renderers/renderer-react/CHANGELOG.md deleted file mode 100644 index 199740b38..000000000 --- a/packages/renderers/renderer-react/CHANGELOG.md +++ /dev/null @@ -1,123 +0,0 @@ -# @astrojs/renderer-react - -## 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.1 - -### Patch Changes - -- [#2369](https://github.com/withastro/astro/pull/2369) [`20eaddb2`](https://github.com/withastro/astro/commit/20eaddb2a723253c7fbde3e56955a549bdf3f342) Thanks [@matthewp](https://github.com/matthewp)! - Fix for using the React renderer with the static build - -## 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.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 - -- 756e3769: Fixes detect to allow rendering React.PureComponents - -## 0.2.1 - -### Patch Changes - -- 97d37f8f: Update READMEs for all renderers - -## 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. - -## 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. - -## 0.1.5 - -### Patch Changes - -- 1e01251: Fixes bug with React renderer that would not hydrate correctly - -## 0.1.4 - -### Patch Changes - -- 21dc28c: Add react-dom as a knownEntrypoint (speeds up astro startup) - -## 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-react/README.md b/packages/renderers/renderer-react/README.md deleted file mode 100644 index cc36073f1..000000000 --- a/packages/renderers/renderer-react/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# @astrojs/renderer-react - -This is a plugin for [Astro][astro] apps that enables server-side rendering of React components. - -## Installation - -Install `@astrojs/renderer-react` and then add it to your `astro.config.mjs` in the `renderers` property: - -``` -npm install @astrojs/renderer-react -``` - -__astro.config.mjs__ - -```js -export default { - // ... - - renderers: [ - // ... - '@astrojs/renderer-react' - ] -} -``` - -## 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-react/client.js b/packages/renderers/renderer-react/client.js deleted file mode 100644 index 64284a0b0..000000000 --- a/packages/renderers/renderer-react/client.js +++ /dev/null @@ -1,15 +0,0 @@ -import { createElement } from 'react'; -import { hydrate } from 'react-dom'; -import StaticHtml from './static-html.js'; - -export default (element) => (Component, props, children) => - hydrate( - createElement( - Component, - { ...props, suppressHydrationWarning: true }, - children != null - ? createElement(StaticHtml, { value: children, suppressHydrationWarning: true }) - : children - ), - element - ); diff --git a/packages/renderers/renderer-react/index.js b/packages/renderers/renderer-react/index.js deleted file mode 100644 index 698f2a13c..000000000 --- a/packages/renderers/renderer-react/index.js +++ /dev/null @@ -1,42 +0,0 @@ -export default { - name: '@astrojs/renderer-react', - 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: '@astrojs/renderer-react', - } - ), - ], - }; - }, - viteConfig() { - return { - optimizeDeps: { - include: [ - '@astrojs/renderer-react/client.js', - 'react', - 'react/jsx-runtime', - 'react/jsx-dev-runtime', - 'react-dom', - ], - exclude: ['@astrojs/renderer-react/server.js'], - }, - resolve: { - dedupe: ['react', 'react-dom'], - }, - ssr: { - external: ['react-dom/server.js'], - }, - }; - }, -}; diff --git a/packages/renderers/renderer-react/jsx-runtime.js b/packages/renderers/renderer-react/jsx-runtime.js deleted file mode 100644 index d86f698b9..000000000 --- a/packages/renderers/renderer-react/jsx-runtime.js +++ /dev/null @@ -1,8 +0,0 @@ -// This module is a simple wrapper around react/jsx-runtime so that -// it can run in Node ESM. 'react' doesn't declare this module as an export map -// So we have to use the .js. The .js is not added via the babel automatic JSX transform -// hence this module as a workaround. -import jsxr from 'react/jsx-runtime.js'; -const { jsx, jsxs, Fragment } = jsxr; - -export { jsx, jsxs, Fragment }; diff --git a/packages/renderers/renderer-react/package.json b/packages/renderers/renderer-react/package.json deleted file mode 100644 index ba35445e7..000000000 --- a/packages/renderers/renderer-react/package.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "@astrojs/renderer-react", - "description": "Use React 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-react" - }, - "bugs": "https://github.com/withastro/astro/issues", - "homepage": "https://astro.build", - "exports": { - ".": "./index.js", - "./*": "./*", - "./client.js": "./client.js", - "./server.js": "./server.js", - "./package.json": "./package.json", - "./jsx-runtime": "./jsx-runtime.js" - }, - "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.17.3", - "react": "^18.0.0", - "react-dom": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || >=16.0.0" - } -} diff --git a/packages/renderers/renderer-react/server.js b/packages/renderers/renderer-react/server.js deleted file mode 100644 index b48d7b6f4..000000000 --- a/packages/renderers/renderer-react/server.js +++ /dev/null @@ -1,71 +0,0 @@ -import React from 'react'; -import ReactDOM from 'react-dom/server.js'; -import StaticHtml from './static-html.js'; - -const reactTypeof = Symbol.for('react.element'); - -function errorIsComingFromPreactComponent(err) { - return ( - err.message && - (err.message.startsWith("Cannot read property '__H'") || - err.message.includes("(reading '__H')")) - ); -} - -function check(Component, props, children) { - // Note: there are packages that do some unholy things to create "components". - // Checking the $$typeof property catches most of these patterns. - if (typeof Component === 'object') { - const $$typeof = Component['$$typeof']; - return $$typeof && $$typeof.toString().slice('Symbol('.length).startsWith('react'); - } - if (typeof Component !== 'function') return false; - - if (Component.prototype != null && typeof Component.prototype.render === 'function') { - return React.Component.isPrototypeOf(Component) || React.PureComponent.isPrototypeOf(Component); - } - - let error = null; - let isReactComponent = false; - function Tester(...args) { - try { - const vnode = Component(...args); - if (vnode && vnode['$$typeof'] === reactTypeof) { - isReactComponent = true; - } - } catch (err) { - if (!errorIsComingFromPreactComponent(err)) { - error = err; - } - } - - return React.createElement('div'); - } - - renderToStaticMarkup(Tester, props, children, {}); - - if (error) { - throw error; - } - return isReactComponent; -} - -function renderToStaticMarkup(Component, props, children, metadata) { - delete props['class']; - const vnode = React.createElement(Component, { - ...props, - children: children != null ? React.createElement(StaticHtml, { value: children }) : undefined, - }); - let html; - if (metadata && metadata.hydrate) { - html = ReactDOM.renderToString(vnode); - } else { - html = ReactDOM.renderToStaticMarkup(vnode); - } - return { html }; -} - -export default { - check, - renderToStaticMarkup, -}; diff --git a/packages/renderers/renderer-react/static-html.js b/packages/renderers/renderer-react/static-html.js deleted file mode 100644 index ecd76ae9b..000000000 --- a/packages/renderers/renderer-react/static-html.js +++ /dev/null @@ -1,27 +0,0 @@ -import { createElement as h } from 'react'; - -/** - * 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 React that this subtree is - * entirely static and will never change via `shouldComponentUpdate`. - */ -const StaticHtml = ({ value }) => { - if (!value) return null; - return h('astro-fragment', { - suppressHydrationWarning: true, - dangerouslySetInnerHTML: { __html: value }, - }); -}; - -/** - * This tells React 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; |