diff options
author | 2022-02-24 00:16:45 -0800 | |
---|---|---|
committer | 2022-02-24 00:16:45 -0800 | |
commit | 5f50de2b390ef1ddfe2e108d285024ef45d4c421 (patch) | |
tree | fc357dab0f0640345e0c7d60b6bc422732daa8d5 /packages/bun-framework-next/client.development.tsx | |
parent | b37cb738021fa87fffa2bee50329c1ae55d79f4d (diff) | |
download | bun-5f50de2b390ef1ddfe2e108d285024ef45d4c421.tar.gz bun-5f50de2b390ef1ddfe2e108d285024ef45d4c421.tar.zst bun-5f50de2b390ef1ddfe2e108d285024ef45d4c421.zip |
[bun-framework-next] Remove TextEncoder & TextDecoder polyfills
Diffstat (limited to 'packages/bun-framework-next/client.development.tsx')
-rw-r--r-- | packages/bun-framework-next/client.development.tsx | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/packages/bun-framework-next/client.development.tsx b/packages/bun-framework-next/client.development.tsx index f3d5b03e4..707e44220 100644 --- a/packages/bun-framework-next/client.development.tsx +++ b/packages/bun-framework-next/client.development.tsx @@ -5,22 +5,6 @@ globalThis.Bun_disableCSSImports = true; import * as React from "react"; -var onlyChildPolyfill = React.Children.only; - -React.Children.only = function only( - children: React.ReactNode | React.ReactNode[] -) { - if ( - children && - typeof children === "object" && - (children as any).length == 1 - ) { - return onlyChildPolyfill(children[0]); - } - - return onlyChildPolyfill(children); -}; - import * as ReactDOM from "react-dom"; import NextApp from "next/app"; import mitt, { MittEmitter } from "next/dist/shared/lib/mitt"; @@ -280,6 +264,13 @@ let reactRoot: any = null; const USE_REACT_18 = "hydrateRoot" in ReactDOM; +class BootError extends Error { + constructor(message) { + super(message); + this.name = "BootError"; + } +} + export async function _boot(EntryPointNamespace, isError) { NextRouteLoader.getClientBuildManifest = () => Promise.resolve({}); @@ -350,6 +341,12 @@ export async function _boot(EntryPointNamespace, isError) { const domEl = document.querySelector("#__next"); + if (!domEl) { + throw new BootError( + "Expected #__next to be in the DOM. That means Next.js failed to start" + ); + } + const reactEl = ( <TopLevelRender App={CachedApp} @@ -373,7 +370,11 @@ export async function _boot(EntryPointNamespace, isError) { if (isError || !domEl.hasChildNodes() || !("hydrate" in ReactDOM)) { ReactDOM.render(reactEl, domEl); } else { - ReactDOM.hydrate(reactEl, domEl); + try { + ReactDOM.hydrate(reactEl, domEl); + } catch (e) { + ReactDOM.render(reactEl, domEl); + } } } } |