remote-components 0.1.2 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{next/config.cjs → config/nextjs.cjs} +77 -102
- package/dist/config/nextjs.cjs.map +1 -0
- package/dist/{next/config.d.ts → config/nextjs.d.ts} +4 -4
- package/dist/{next/config.js → config/nextjs.js} +73 -98
- package/dist/config/nextjs.js.map +1 -0
- package/dist/{webpack.cjs → config/webpack.cjs} +13 -29
- package/dist/config/webpack.cjs.map +1 -0
- package/dist/{webpack.js → config/webpack.js} +12 -28
- package/dist/config/webpack.js.map +1 -0
- package/dist/{shared/remote → host/defaults}/app.cjs +2 -2
- package/dist/host/defaults/app.cjs.map +1 -0
- package/dist/host/defaults/app.js +8 -0
- package/dist/host/defaults/app.js.map +1 -0
- package/dist/{shared/remote → host/defaults}/pages.cjs +2 -2
- package/dist/host/defaults/pages.cjs.map +1 -0
- package/dist/host/defaults/pages.js +8 -0
- package/dist/host/defaults/pages.js.map +1 -0
- package/dist/{html/host.cjs → host/html.cjs} +1019 -1080
- package/dist/host/html.cjs.map +1 -0
- package/dist/{html/host.d.ts → host/html.d.ts} +0 -2
- package/dist/{html/host.js → host/html.js} +1016 -1076
- package/dist/host/html.js.map +1 -0
- package/dist/{next/host/client/index.cjs → host/nextjs/app/client-only.cjs} +685 -623
- package/dist/host/nextjs/app/client-only.cjs.map +1 -0
- package/dist/host/nextjs/app/client-only.d.ts +16 -0
- package/dist/{next/host/client/index.js → host/nextjs/app/client-only.js} +687 -618
- package/dist/host/nextjs/app/client-only.js.map +1 -0
- package/dist/{next/host/app-router-server.cjs → host/nextjs/app.cjs} +11 -10
- package/dist/host/nextjs/app.cjs.map +1 -0
- package/dist/host/nextjs/app.d.ts +29 -0
- package/dist/{next/host/app-router-server.js → host/nextjs/app.js} +7 -6
- package/dist/host/nextjs/app.js.map +1 -0
- package/dist/{next/host/pages-router-client.cjs → host/nextjs/pages/client-only.cjs} +8 -8
- package/dist/host/nextjs/pages/client-only.cjs.map +1 -0
- package/dist/host/nextjs/pages/client-only.d.ts +31 -0
- package/dist/{next/host/pages-router-client.js → host/nextjs/pages/client-only.js} +4 -4
- package/dist/host/nextjs/pages/client-only.js.map +1 -0
- package/dist/{next/host/pages-router-server.cjs → host/nextjs/pages.cjs} +44 -55
- package/dist/host/nextjs/pages.cjs.map +1 -0
- package/dist/{next/host/pages-router-server.d.ts → host/nextjs/pages.d.ts} +11 -13
- package/dist/{next/host/pages-router-server.js → host/nextjs/pages.js} +38 -49
- package/dist/host/nextjs/pages.js.map +1 -0
- package/dist/host/proxy/client.cjs +57 -0
- package/dist/host/proxy/client.cjs.map +1 -0
- package/dist/host/proxy/client.d.ts +31 -0
- package/dist/host/proxy/client.js +30 -0
- package/dist/host/proxy/client.js.map +1 -0
- package/dist/{shared/host/proxy.cjs → host/proxy/protected-fetch.cjs} +6 -6
- package/dist/host/proxy/protected-fetch.cjs.map +1 -0
- package/dist/{shared/host/proxy.js → host/proxy/protected-fetch.js} +3 -3
- package/dist/host/proxy/protected-fetch.js.map +1 -0
- package/dist/{next → host}/proxy.cjs +12 -92
- package/dist/host/proxy.cjs.map +1 -0
- package/dist/host/proxy.d.ts +30 -0
- package/dist/{next → host}/proxy.js +11 -88
- package/dist/host/proxy.js.map +1 -0
- package/dist/{react/index.cjs → host/react.cjs} +524 -555
- package/dist/host/react.cjs.map +1 -0
- package/dist/{component-loader-21865da3.d.ts → host/react.d.ts} +141 -99
- package/dist/{react/index.js → host/react.js} +523 -552
- package/dist/host/react.js.map +1 -0
- package/dist/internal/{webpack/shared-modules.cjs → config/webpack/apply-shared-modules.cjs} +18 -17
- package/dist/internal/config/webpack/apply-shared-modules.cjs.map +1 -0
- package/dist/internal/{webpack/shared-modules.js → config/webpack/apply-shared-modules.js} +15 -14
- package/dist/internal/config/webpack/apply-shared-modules.js.map +1 -0
- package/dist/internal/{webpack → config/webpack}/next-client-pages-loader.cjs +1 -1
- package/dist/internal/config/webpack/next-client-pages-loader.cjs.map +1 -0
- package/dist/internal/{webpack → config/webpack}/next-client-pages-loader.js +1 -1
- package/dist/internal/config/webpack/next-client-pages-loader.js.map +1 -0
- package/dist/internal/{next/host/app-router-client.cjs → host/nextjs/app-client.cjs} +29 -24
- package/dist/internal/host/nextjs/app-client.cjs.map +1 -0
- package/dist/internal/host/nextjs/app-client.d.ts +25 -0
- package/dist/internal/{next/host/app-router-client.js → host/nextjs/app-client.js} +19 -19
- package/dist/internal/host/nextjs/app-client.js.map +1 -0
- package/dist/internal/{next/host/app-router-compat.cjs → host/nextjs/app-compat.cjs} +5 -22
- package/dist/internal/host/nextjs/app-compat.cjs.map +1 -0
- package/dist/internal/{next/host/app-router-compat.d.ts → host/nextjs/app-compat.d.ts} +1 -7
- package/dist/internal/{next/host/app-router-compat.js → host/nextjs/app-compat.js} +2 -18
- package/dist/internal/host/nextjs/app-compat.js.map +1 -0
- package/dist/internal/host/nextjs/dom-flight.cjs.map +1 -0
- package/dist/internal/host/nextjs/dom-flight.d.ts +39 -0
- package/dist/internal/host/nextjs/dom-flight.js.map +1 -0
- package/dist/internal/host/nextjs/image-impl.cjs +60 -0
- package/dist/internal/host/nextjs/image-impl.cjs.map +1 -0
- package/dist/internal/host/nextjs/image-impl.d.ts +10 -0
- package/dist/internal/host/nextjs/image-impl.js +36 -0
- package/dist/internal/host/nextjs/image-impl.js.map +1 -0
- package/dist/internal/host/nextjs/image-shared.cjs +43 -0
- package/dist/internal/host/nextjs/image-shared.cjs.map +1 -0
- package/dist/internal/host/nextjs/image-shared.d.ts +9 -0
- package/dist/internal/host/nextjs/image-shared.js +19 -0
- package/dist/internal/host/nextjs/image-shared.js.map +1 -0
- package/dist/internal/{next/host → host/nextjs}/remote-component-links.cjs +2 -2
- package/dist/internal/host/nextjs/remote-component-links.cjs.map +1 -0
- package/dist/internal/{next/host → host/nextjs}/remote-component-links.d.ts +1 -1
- package/dist/internal/{next/host → host/nextjs}/remote-component-links.js +2 -2
- package/dist/internal/host/nextjs/remote-component-links.js.map +1 -0
- package/dist/internal/host/nextjs/skeleton.cjs.map +1 -0
- package/dist/internal/host/nextjs/skeleton.js.map +1 -0
- package/dist/internal/{react → host/react}/context.cjs +3 -3
- package/dist/internal/host/react/context.cjs.map +1 -0
- package/dist/internal/{react → host/react}/context.d.ts +4 -4
- package/dist/internal/{react → host/react}/context.js +2 -2
- package/dist/internal/host/react/context.js.map +1 -0
- package/dist/internal/{react → host/react}/hooks/use-resolve-client-url.cjs +2 -2
- package/dist/internal/host/react/hooks/use-resolve-client-url.cjs.map +1 -0
- package/dist/internal/{react → host/react}/hooks/use-resolve-client-url.d.ts +1 -1
- package/dist/internal/{react → host/react}/hooks/use-resolve-client-url.js +2 -2
- package/dist/internal/host/react/hooks/use-resolve-client-url.js.map +1 -0
- package/dist/internal/host/server/fetch-headers.cjs.map +1 -0
- package/dist/internal/host/server/fetch-headers.js.map +1 -0
- package/dist/internal/{shared/ssr → host/server}/fetch-remote-component.cjs +6 -6
- package/dist/internal/host/server/fetch-remote-component.cjs.map +1 -0
- package/dist/internal/{shared/ssr → host/server}/fetch-remote-component.d.ts +6 -1
- package/dist/internal/{shared/ssr → host/server}/fetch-remote-component.js +9 -9
- package/dist/internal/host/server/fetch-remote-component.js.map +1 -0
- package/dist/internal/{shared/ssr → host/server}/fetch-with-hooks.cjs +11 -15
- package/dist/internal/host/server/fetch-with-hooks.cjs.map +1 -0
- package/dist/internal/host/server/fetch-with-hooks.d.ts +21 -0
- package/dist/internal/{shared/ssr → host/server}/fetch-with-hooks.js +11 -15
- package/dist/internal/host/server/fetch-with-hooks.js.map +1 -0
- package/dist/internal/host/server/get-client-or-server-url.cjs.map +1 -0
- package/dist/internal/host/server/get-client-or-server-url.js.map +1 -0
- package/dist/internal/{shared/client → host/server}/get-client-src.cjs +1 -1
- package/dist/internal/host/server/get-client-src.cjs.map +1 -0
- package/dist/internal/{shared/client → host/server}/get-client-src.js +1 -1
- package/dist/internal/host/server/get-client-src.js.map +1 -0
- package/dist/internal/host/server/get-ssr-relative-path-base-url.cjs.map +1 -0
- package/dist/internal/host/server/get-ssr-relative-path-base-url.js.map +1 -0
- package/dist/{next/remote/server.cjs → internal/host/server/types.cjs} +3 -15
- package/dist/internal/host/server/types.cjs.map +1 -0
- package/dist/internal/host/server/types.d.ts +33 -0
- package/dist/internal/host/server/types.js +1 -0
- package/dist/internal/host/server/types.js.map +1 -0
- package/dist/internal/host/shared/asset-descriptors.cjs +17 -0
- package/dist/internal/host/shared/asset-descriptors.cjs.map +1 -0
- package/dist/internal/host/shared/asset-descriptors.d.ts +21 -0
- package/dist/internal/host/shared/asset-descriptors.js +1 -0
- package/dist/internal/host/shared/asset-descriptors.js.map +1 -0
- package/dist/internal/host/shared/config.cjs +17 -0
- package/dist/internal/host/shared/config.cjs.map +1 -0
- package/dist/{host-config-58cdccea.d.ts → internal/host/shared/config.d.ts} +32 -19
- package/dist/internal/host/shared/config.js +1 -0
- package/dist/internal/host/shared/config.js.map +1 -0
- package/dist/internal/host/shared/fetch-interceptors.cjs +17 -0
- package/dist/internal/host/shared/fetch-interceptors.cjs.map +1 -0
- package/dist/{types-2b26a246.d.ts → internal/host/shared/fetch-interceptors.d.ts} +4 -87
- package/dist/internal/host/shared/fetch-interceptors.js +1 -0
- package/dist/internal/host/shared/fetch-interceptors.js.map +1 -0
- package/dist/internal/{shared/client → host/shared}/polyfill.cjs +7 -6
- package/dist/internal/host/shared/polyfill.cjs.map +1 -0
- package/dist/internal/{shared/client → host/shared}/polyfill.d.ts +2 -1
- package/dist/internal/{shared/client → host/shared}/polyfill.js +7 -6
- package/dist/internal/host/shared/polyfill.js.map +1 -0
- package/dist/internal/host/shared/resolved-data.cjs +17 -0
- package/dist/internal/host/shared/resolved-data.cjs.map +1 -0
- package/dist/internal/host/shared/resolved-data.d.ts +48 -0
- package/dist/internal/host/shared/resolved-data.js +1 -0
- package/dist/internal/host/shared/resolved-data.js.map +1 -0
- package/dist/internal/{shared/contract/host-state.cjs → host/shared/state.cjs} +4 -4
- package/dist/internal/host/shared/state.cjs.map +1 -0
- package/dist/internal/{shared/contract/host-state.js → host/shared/state.js} +1 -1
- package/dist/internal/host/shared/state.js.map +1 -0
- package/dist/internal/host/utils/resolve-name-from-src.cjs.map +1 -0
- package/dist/internal/host/utils/resolve-name-from-src.js.map +1 -0
- package/dist/internal/{next/remote/render-client.cjs → remote/nextjs/app-client.cjs} +8 -8
- package/dist/internal/remote/nextjs/app-client.cjs.map +1 -0
- package/dist/internal/{next/remote/render-client.js → remote/nextjs/app-client.js} +4 -4
- package/dist/internal/remote/nextjs/app-client.js.map +1 -0
- package/dist/internal/runtime/constants.cjs +50 -0
- package/dist/internal/runtime/constants.cjs.map +1 -0
- package/dist/internal/runtime/constants.d.ts +10 -0
- package/dist/internal/runtime/constants.js +20 -0
- package/dist/internal/runtime/constants.js.map +1 -0
- package/dist/internal/{shared/client → runtime/html}/apply-origin.cjs.map +1 -1
- package/dist/internal/{shared/client → runtime/html}/apply-origin.d.ts +1 -1
- package/dist/internal/{shared/client → runtime/html}/apply-origin.js.map +1 -1
- package/dist/internal/runtime/html/parse-remote-html.cjs +140 -0
- package/dist/internal/runtime/html/parse-remote-html.cjs.map +1 -0
- package/dist/internal/runtime/html/parse-remote-html.d.ts +88 -0
- package/dist/internal/runtime/html/parse-remote-html.js +110 -0
- package/dist/internal/runtime/html/parse-remote-html.js.map +1 -0
- package/dist/internal/runtime/html/set-attributes-from-props.cjs +68 -0
- package/dist/internal/runtime/html/set-attributes-from-props.cjs.map +1 -0
- package/dist/internal/runtime/html/set-attributes-from-props.d.ts +3 -0
- package/dist/internal/runtime/html/set-attributes-from-props.js +44 -0
- package/dist/internal/runtime/html/set-attributes-from-props.js.map +1 -0
- package/dist/internal/runtime/loaders/component-loader.cjs +184 -0
- package/dist/internal/runtime/loaders/component-loader.cjs.map +1 -0
- package/dist/internal/runtime/loaders/component-loader.d.ts +31 -0
- package/dist/internal/runtime/loaders/component-loader.js +150 -0
- package/dist/internal/runtime/loaders/component-loader.js.map +1 -0
- package/dist/internal/runtime/loaders/script-loader.cjs +64 -0
- package/dist/internal/runtime/loaders/script-loader.cjs.map +1 -0
- package/dist/internal/runtime/loaders/script-loader.d.ts +10 -0
- package/dist/internal/runtime/loaders/script-loader.js +43 -0
- package/dist/internal/runtime/loaders/script-loader.js.map +1 -0
- package/dist/internal/runtime/loaders/static-loader.cjs +177 -0
- package/dist/internal/runtime/loaders/static-loader.cjs.map +1 -0
- package/dist/internal/runtime/loaders/static-loader.d.ts +10 -0
- package/dist/internal/runtime/loaders/static-loader.js +153 -0
- package/dist/internal/runtime/loaders/static-loader.js.map +1 -0
- package/dist/internal/runtime/metadata.cjs +17 -0
- package/dist/internal/runtime/metadata.cjs.map +1 -0
- package/dist/internal/runtime/metadata.d.ts +16 -0
- package/dist/internal/runtime/metadata.js +1 -0
- package/dist/internal/runtime/metadata.js.map +1 -0
- package/dist/internal/runtime/rsc.cjs +92 -0
- package/dist/internal/runtime/rsc.cjs.map +1 -0
- package/dist/internal/runtime/rsc.d.ts +8 -0
- package/dist/internal/runtime/rsc.js +68 -0
- package/dist/internal/runtime/rsc.js.map +1 -0
- package/dist/internal/runtime/turbopack/chunk-loader.cjs +239 -0
- package/dist/internal/runtime/turbopack/chunk-loader.cjs.map +1 -0
- package/dist/internal/runtime/turbopack/chunk-loader.d.ts +11 -0
- package/dist/internal/runtime/turbopack/chunk-loader.js +222 -0
- package/dist/internal/runtime/turbopack/chunk-loader.js.map +1 -0
- package/dist/internal/runtime/turbopack/module.cjs +257 -0
- package/dist/internal/runtime/turbopack/module.cjs.map +1 -0
- package/dist/internal/runtime/turbopack/module.d.ts +61 -0
- package/dist/internal/runtime/turbopack/module.js +233 -0
- package/dist/internal/runtime/turbopack/module.js.map +1 -0
- package/dist/internal/runtime/turbopack/patterns.cjs +44 -0
- package/dist/internal/runtime/turbopack/patterns.cjs.map +1 -0
- package/dist/internal/runtime/turbopack/patterns.d.ts +109 -0
- package/dist/internal/runtime/turbopack/patterns.js +15 -0
- package/dist/internal/runtime/turbopack/patterns.js.map +1 -0
- package/dist/internal/runtime/turbopack/shared-modules.cjs +153 -0
- package/dist/internal/runtime/turbopack/shared-modules.cjs.map +1 -0
- package/dist/internal/runtime/turbopack/shared-modules.d.ts +17 -0
- package/dist/internal/runtime/turbopack/shared-modules.js +134 -0
- package/dist/internal/runtime/turbopack/shared-modules.js.map +1 -0
- package/dist/internal/runtime/turbopack/webpack-runtime.cjs +137 -0
- package/dist/internal/runtime/turbopack/webpack-runtime.cjs.map +1 -0
- package/dist/internal/runtime/turbopack/webpack-runtime.d.ts +20 -0
- package/dist/internal/runtime/turbopack/webpack-runtime.js +107 -0
- package/dist/internal/runtime/turbopack/webpack-runtime.js.map +1 -0
- package/dist/internal/runtime/types.cjs +17 -0
- package/dist/internal/runtime/types.cjs.map +1 -0
- package/dist/internal/runtime/types.d.ts +40 -0
- package/dist/internal/runtime/types.js +1 -0
- package/dist/internal/runtime/types.js.map +1 -0
- package/dist/internal/{shared/client → runtime/url}/default-resolve-client-url.cjs +2 -2
- package/dist/internal/runtime/url/default-resolve-client-url.cjs.map +1 -0
- package/dist/internal/{shared/client → runtime/url}/default-resolve-client-url.d.ts +1 -1
- package/dist/internal/{shared/client → runtime/url}/default-resolve-client-url.js +1 -1
- package/dist/internal/runtime/url/default-resolve-client-url.js.map +1 -0
- package/dist/internal/{shared/client → runtime/url}/protected-rc-fallback.cjs +1 -1
- package/dist/internal/runtime/url/protected-rc-fallback.cjs.map +1 -0
- package/dist/internal/{shared/client → runtime/url}/protected-rc-fallback.js +1 -1
- package/dist/internal/runtime/url/protected-rc-fallback.js.map +1 -0
- package/dist/internal/{shared/client/proxy-through-host.cjs → runtime/url/resolve-client-url.cjs} +4 -24
- package/dist/internal/runtime/url/resolve-client-url.cjs.map +1 -0
- package/dist/internal/{shared/client/proxy-through-host.d.ts → runtime/url/resolve-client-url.d.ts} +1 -25
- package/dist/internal/runtime/url/resolve-client-url.js +21 -0
- package/dist/internal/runtime/url/resolve-client-url.js.map +1 -0
- package/dist/internal/utils/abort.cjs.map +1 -0
- package/dist/internal/utils/abort.js.map +1 -0
- package/dist/internal/{shared → utils}/constants.cjs +3 -0
- package/dist/internal/utils/constants.cjs.map +1 -0
- package/dist/internal/utils/constants.d.ts +5 -0
- package/dist/internal/{shared → utils}/constants.js +2 -0
- package/dist/internal/utils/constants.js.map +1 -0
- package/dist/internal/{shared → utils}/error.cjs +11 -4
- package/dist/internal/utils/error.cjs.map +1 -0
- package/dist/internal/{shared → utils}/error.d.ts +2 -1
- package/dist/internal/{shared → utils}/error.js +10 -4
- package/dist/internal/utils/error.js.map +1 -0
- package/dist/internal/{shared/utils → utils}/logger.cjs +3 -3
- package/dist/internal/utils/logger.cjs.map +1 -0
- package/dist/internal/{shared/utils → utils}/logger.d.ts +2 -2
- package/dist/internal/{shared/utils → utils}/logger.js +3 -3
- package/dist/internal/utils/logger.js.map +1 -0
- package/dist/internal/utils.cjs.map +1 -0
- package/dist/internal/utils.js.map +1 -0
- package/dist/{shared/host → remote/defaults}/app.cjs +2 -6
- package/dist/remote/defaults/app.cjs.map +1 -0
- package/dist/remote/defaults/app.js +8 -0
- package/dist/remote/defaults/app.js.map +1 -0
- package/dist/{shared/host → remote/defaults}/pages.cjs +2 -6
- package/dist/remote/defaults/pages.cjs.map +1 -0
- package/dist/remote/defaults/pages.js +8 -0
- package/dist/remote/defaults/pages.js.map +1 -0
- package/dist/{shared/remote → remote/defaults}/wrapper.cjs +12 -10
- package/dist/remote/defaults/wrapper.cjs.map +1 -0
- package/dist/remote/defaults/wrapper.js +27 -0
- package/dist/remote/defaults/wrapper.js.map +1 -0
- package/dist/{html/remote.cjs → remote/html.cjs} +16 -16
- package/dist/remote/html.cjs.map +1 -0
- package/dist/{html/remote.js → remote/html.js} +16 -16
- package/dist/remote/html.js.map +1 -0
- package/dist/{shared/remote/proxy.cjs → remote/middleware.cjs} +37 -12
- package/dist/remote/middleware.cjs.map +1 -0
- package/dist/remote/middleware.d.ts +27 -0
- package/dist/{shared/remote/proxy.js → remote/middleware.js} +32 -5
- package/dist/remote/middleware.js.map +1 -0
- package/dist/{internal/next/remote/render-server.cjs → remote/nextjs/app.cjs} +14 -16
- package/dist/remote/nextjs/app.cjs.map +1 -0
- package/dist/{internal/next/remote/render-server.d.ts → remote/nextjs/app.d.ts} +12 -13
- package/dist/{internal/next/remote/render-server.js → remote/nextjs/app.js} +9 -11
- package/dist/remote/nextjs/app.js.map +1 -0
- package/dist/{next/remote/pages-router.cjs → remote/nextjs/pages.cjs} +8 -8
- package/dist/remote/nextjs/pages.cjs.map +1 -0
- package/dist/{next/remote/pages-router.d.ts → remote/nextjs/pages.d.ts} +8 -8
- package/dist/{next/remote/pages-router.js → remote/nextjs/pages.js} +4 -4
- package/dist/remote/nextjs/pages.js.map +1 -0
- package/dist/server-handoff-8c89b856.d.ts +46 -0
- package/package.json +126 -157
- package/dist/html/host.cjs.map +0 -1
- package/dist/html/host.js.map +0 -1
- package/dist/html/remote.cjs.map +0 -1
- package/dist/html/remote.js.map +0 -1
- package/dist/internal/next/host/app-router-client.cjs.map +0 -1
- package/dist/internal/next/host/app-router-client.d.ts +0 -79
- package/dist/internal/next/host/app-router-client.js.map +0 -1
- package/dist/internal/next/host/app-router-compat.cjs.map +0 -1
- package/dist/internal/next/host/app-router-compat.js.map +0 -1
- package/dist/internal/next/host/remote-component-links.cjs.map +0 -1
- package/dist/internal/next/host/remote-component-links.js.map +0 -1
- package/dist/internal/next/remote/render-client.cjs.map +0 -1
- package/dist/internal/next/remote/render-client.js.map +0 -1
- package/dist/internal/next/remote/render-server.cjs.map +0 -1
- package/dist/internal/next/remote/render-server.js.map +0 -1
- package/dist/internal/react/context.cjs.map +0 -1
- package/dist/internal/react/context.js.map +0 -1
- package/dist/internal/react/hooks/use-resolve-client-url.cjs.map +0 -1
- package/dist/internal/react/hooks/use-resolve-client-url.js.map +0 -1
- package/dist/internal/shared/client/default-resolve-client-url.cjs.map +0 -1
- package/dist/internal/shared/client/default-resolve-client-url.js.map +0 -1
- package/dist/internal/shared/client/get-client-src.cjs.map +0 -1
- package/dist/internal/shared/client/get-client-src.js.map +0 -1
- package/dist/internal/shared/client/polyfill.cjs.map +0 -1
- package/dist/internal/shared/client/polyfill.js.map +0 -1
- package/dist/internal/shared/client/protected-rc-fallback.cjs.map +0 -1
- package/dist/internal/shared/client/protected-rc-fallback.js.map +0 -1
- package/dist/internal/shared/client/proxy-through-host.cjs.map +0 -1
- package/dist/internal/shared/client/proxy-through-host.js +0 -40
- package/dist/internal/shared/client/proxy-through-host.js.map +0 -1
- package/dist/internal/shared/client/remote-component.cjs +0 -1436
- package/dist/internal/shared/client/remote-component.cjs.map +0 -1
- package/dist/internal/shared/client/remote-component.d.ts +0 -62
- package/dist/internal/shared/client/remote-component.js +0 -1385
- package/dist/internal/shared/client/remote-component.js.map +0 -1
- package/dist/internal/shared/constants.cjs.map +0 -1
- package/dist/internal/shared/constants.d.ts +0 -4
- package/dist/internal/shared/constants.js.map +0 -1
- package/dist/internal/shared/contract/host-state.cjs.map +0 -1
- package/dist/internal/shared/contract/host-state.js.map +0 -1
- package/dist/internal/shared/contract/resolve-name-from-src.cjs.map +0 -1
- package/dist/internal/shared/contract/resolve-name-from-src.js.map +0 -1
- package/dist/internal/shared/error.cjs.map +0 -1
- package/dist/internal/shared/error.js.map +0 -1
- package/dist/internal/shared/ssr/dom-flight.cjs.map +0 -1
- package/dist/internal/shared/ssr/dom-flight.d.ts +0 -2
- package/dist/internal/shared/ssr/dom-flight.js.map +0 -1
- package/dist/internal/shared/ssr/fetch-headers.cjs.map +0 -1
- package/dist/internal/shared/ssr/fetch-headers.js.map +0 -1
- package/dist/internal/shared/ssr/fetch-remote-component.cjs.map +0 -1
- package/dist/internal/shared/ssr/fetch-remote-component.js.map +0 -1
- package/dist/internal/shared/ssr/fetch-with-hooks.cjs.map +0 -1
- package/dist/internal/shared/ssr/fetch-with-hooks.d.ts +0 -56
- package/dist/internal/shared/ssr/fetch-with-hooks.js.map +0 -1
- package/dist/internal/shared/ssr/get-client-or-server-url.cjs.map +0 -1
- package/dist/internal/shared/ssr/get-client-or-server-url.js.map +0 -1
- package/dist/internal/shared/ssr/get-ssr-relative-path-base-url.cjs.map +0 -1
- package/dist/internal/shared/ssr/get-ssr-relative-path-base-url.js.map +0 -1
- package/dist/internal/shared/ssr/skeleton.cjs.map +0 -1
- package/dist/internal/shared/ssr/skeleton.js.map +0 -1
- package/dist/internal/shared/utils/abort.cjs.map +0 -1
- package/dist/internal/shared/utils/abort.js.map +0 -1
- package/dist/internal/shared/utils/logger.cjs.map +0 -1
- package/dist/internal/shared/utils/logger.js.map +0 -1
- package/dist/internal/shared/utils.cjs.map +0 -1
- package/dist/internal/shared/utils.js.map +0 -1
- package/dist/internal/webpack/next-client-pages-loader.cjs.map +0 -1
- package/dist/internal/webpack/next-client-pages-loader.js.map +0 -1
- package/dist/internal/webpack/shared-modules.cjs.map +0 -1
- package/dist/internal/webpack/shared-modules.js.map +0 -1
- package/dist/next/config.cjs.map +0 -1
- package/dist/next/config.js.map +0 -1
- package/dist/next/host/app-router-server.cjs.map +0 -1
- package/dist/next/host/app-router-server.d.ts +0 -30
- package/dist/next/host/app-router-server.js.map +0 -1
- package/dist/next/host/client/index.cjs.map +0 -1
- package/dist/next/host/client/index.d.ts +0 -19
- package/dist/next/host/client/index.js.map +0 -1
- package/dist/next/host/pages-router-client.cjs.map +0 -1
- package/dist/next/host/pages-router-client.d.ts +0 -33
- package/dist/next/host/pages-router-client.js.map +0 -1
- package/dist/next/host/pages-router-server.cjs.map +0 -1
- package/dist/next/host/pages-router-server.js.map +0 -1
- package/dist/next/index.cjs +0 -53
- package/dist/next/index.cjs.map +0 -1
- package/dist/next/index.d.ts +0 -30
- package/dist/next/index.js +0 -19
- package/dist/next/index.js.map +0 -1
- package/dist/next/proxy.cjs.map +0 -1
- package/dist/next/proxy.d.ts +0 -56
- package/dist/next/proxy.js.map +0 -1
- package/dist/next/remote/pages-router.cjs.map +0 -1
- package/dist/next/remote/pages-router.js.map +0 -1
- package/dist/next/remote/server.cjs.map +0 -1
- package/dist/next/remote/server.d.ts +0 -5
- package/dist/next/remote/server.js +0 -5
- package/dist/next/remote/server.js.map +0 -1
- package/dist/proxy-through-host-a676a522.d.ts +0 -52
- package/dist/react/index.cjs.map +0 -1
- package/dist/react/index.d.ts +0 -86
- package/dist/react/index.js.map +0 -1
- package/dist/shared/host/app.cjs.map +0 -1
- package/dist/shared/host/app.js +0 -12
- package/dist/shared/host/app.js.map +0 -1
- package/dist/shared/host/pages.cjs.map +0 -1
- package/dist/shared/host/pages.js +0 -12
- package/dist/shared/host/pages.js.map +0 -1
- package/dist/shared/host/proxy.cjs.map +0 -1
- package/dist/shared/host/proxy.js.map +0 -1
- package/dist/shared/remote/app.cjs.map +0 -1
- package/dist/shared/remote/app.js +0 -8
- package/dist/shared/remote/app.js.map +0 -1
- package/dist/shared/remote/pages.cjs.map +0 -1
- package/dist/shared/remote/pages.js +0 -8
- package/dist/shared/remote/pages.js.map +0 -1
- package/dist/shared/remote/proxy.cjs.map +0 -1
- package/dist/shared/remote/proxy.d.ts +0 -44
- package/dist/shared/remote/proxy.js.map +0 -1
- package/dist/shared/remote/wrapper.cjs.map +0 -1
- package/dist/shared/remote/wrapper.js +0 -25
- package/dist/shared/remote/wrapper.js.map +0 -1
- package/dist/webpack.cjs.map +0 -1
- package/dist/webpack.js.map +0 -1
- /package/dist/{webpack.d.ts → config/webpack.d.ts} +0 -0
- /package/dist/{shared/host → host/defaults}/app.d.ts +0 -0
- /package/dist/{shared/host → host/defaults}/pages.d.ts +0 -0
- /package/dist/{shared/host/proxy.d.ts → host/proxy/protected-fetch.d.ts} +0 -0
- /package/dist/internal/{webpack/shared-modules.d.ts → config/webpack/apply-shared-modules.d.ts} +0 -0
- /package/dist/internal/{webpack → config/webpack}/next-client-pages-loader.d.ts +0 -0
- /package/dist/internal/{shared/ssr → host/nextjs}/dom-flight.cjs +0 -0
- /package/dist/internal/{shared/ssr → host/nextjs}/dom-flight.js +0 -0
- /package/dist/internal/{shared/ssr → host/nextjs}/skeleton.cjs +0 -0
- /package/dist/internal/{shared/ssr → host/nextjs}/skeleton.d.ts +0 -0
- /package/dist/internal/{shared/ssr → host/nextjs}/skeleton.js +0 -0
- /package/dist/internal/{shared/ssr → host/server}/fetch-headers.cjs +0 -0
- /package/dist/internal/{shared/ssr → host/server}/fetch-headers.d.ts +0 -0
- /package/dist/internal/{shared/ssr → host/server}/fetch-headers.js +0 -0
- /package/dist/internal/{shared/ssr → host/server}/get-client-or-server-url.cjs +0 -0
- /package/dist/internal/{shared/ssr → host/server}/get-client-or-server-url.d.ts +0 -0
- /package/dist/internal/{shared/ssr → host/server}/get-client-or-server-url.js +0 -0
- /package/dist/internal/{shared/client → host/server}/get-client-src.d.ts +0 -0
- /package/dist/internal/{shared/ssr → host/server}/get-ssr-relative-path-base-url.cjs +0 -0
- /package/dist/internal/{shared/ssr → host/server}/get-ssr-relative-path-base-url.d.ts +0 -0
- /package/dist/internal/{shared/ssr → host/server}/get-ssr-relative-path-base-url.js +0 -0
- /package/dist/internal/{shared/contract/host-state.d.ts → host/shared/state.d.ts} +0 -0
- /package/dist/internal/{shared/contract → host/utils}/resolve-name-from-src.cjs +0 -0
- /package/dist/internal/{shared/contract → host/utils}/resolve-name-from-src.d.ts +0 -0
- /package/dist/internal/{shared/contract → host/utils}/resolve-name-from-src.js +0 -0
- /package/dist/internal/{next/remote/render-client.d.ts → remote/nextjs/app-client.d.ts} +0 -0
- /package/dist/internal/{shared/client → runtime/html}/apply-origin.cjs +0 -0
- /package/dist/internal/{shared/client → runtime/html}/apply-origin.js +0 -0
- /package/dist/internal/{shared/client → runtime/url}/protected-rc-fallback.d.ts +0 -0
- /package/dist/internal/{shared/utils → utils}/abort.cjs +0 -0
- /package/dist/internal/{shared/utils → utils}/abort.d.ts +0 -0
- /package/dist/internal/{shared/utils → utils}/abort.js +0 -0
- /package/dist/internal/{shared/utils.cjs → utils.cjs} +0 -0
- /package/dist/internal/{shared/utils.d.ts → utils.d.ts} +0 -0
- /package/dist/internal/{shared/utils.js → utils.js} +0 -0
- /package/dist/{shared/remote → remote/defaults}/app.d.ts +0 -0
- /package/dist/{shared/remote → remote/defaults}/pages.d.ts +0 -0
- /package/dist/{shared/remote → remote/defaults}/wrapper.d.ts +0 -0
- /package/dist/{html/remote.d.ts → remote/html.d.ts} +0 -0
|
@@ -27,87 +27,20 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
29
|
|
|
30
|
-
// src/react/index.tsx
|
|
30
|
+
// src/host/react/index.tsx
|
|
31
31
|
var react_exports = {};
|
|
32
32
|
__export(react_exports, {
|
|
33
|
-
|
|
34
|
-
RemoteComponentsProvider: () => import_context2.RemoteComponentsProvider,
|
|
35
|
-
proxyClientRequestsThroughHost: () => proxyClientRequestsThroughHost
|
|
33
|
+
ConsumeRemoteComponent: () => ConsumeRemoteComponent
|
|
36
34
|
});
|
|
37
35
|
module.exports = __toCommonJS(react_exports);
|
|
38
36
|
var import_react3 = require("react");
|
|
39
37
|
var import_react_dom = require("react-dom");
|
|
40
38
|
|
|
41
|
-
// src/
|
|
42
|
-
var tagNames = [
|
|
43
|
-
"img",
|
|
44
|
-
"source",
|
|
45
|
-
"video",
|
|
46
|
-
"audio",
|
|
47
|
-
"track",
|
|
48
|
-
"iframe",
|
|
49
|
-
"embed",
|
|
50
|
-
"script",
|
|
51
|
-
"link"
|
|
52
|
-
];
|
|
53
|
-
function applyOriginToNodes(doc, url, resolveClientUrl) {
|
|
54
|
-
if (url.origin !== location.origin) {
|
|
55
|
-
const nodes = doc.querySelectorAll(
|
|
56
|
-
tagNames.map(
|
|
57
|
-
(type) => `${type}[src],${type}[srcset],${type}[href],${type}[imagesrcset]`
|
|
58
|
-
).join(",")
|
|
59
|
-
);
|
|
60
|
-
nodes.forEach((node) => {
|
|
61
|
-
if (node.hasAttribute("src") && /^[./]+\/?/.test(node.getAttribute("src") ?? "")) {
|
|
62
|
-
const absoluteSrc = new URL(node.getAttribute("src") ?? "/", url).href;
|
|
63
|
-
const isScript = node.tagName.toLowerCase() === "script";
|
|
64
|
-
node.src = isScript ? absoluteSrc : resolveClientUrl?.(absoluteSrc) ?? absoluteSrc;
|
|
65
|
-
}
|
|
66
|
-
if (node.hasAttribute("href") && /^[./]+\/?/.test(node.getAttribute("href") ?? "")) {
|
|
67
|
-
const absoluteHref = new URL(node.getAttribute("href") ?? "/", url).href;
|
|
68
|
-
node.setAttribute(
|
|
69
|
-
"href",
|
|
70
|
-
resolveClientUrl?.(absoluteHref) ?? absoluteHref
|
|
71
|
-
);
|
|
72
|
-
}
|
|
73
|
-
if (node.hasAttribute("srcset")) {
|
|
74
|
-
const srcSet = node.getAttribute("srcset")?.split(",").map((entry) => {
|
|
75
|
-
const [urlPart, descriptor] = entry.trim().split(/\s+/);
|
|
76
|
-
if (!urlPart)
|
|
77
|
-
return entry;
|
|
78
|
-
const absoluteUrl = new URL(urlPart, url).href;
|
|
79
|
-
const resolvedUrl = resolveClientUrl?.(absoluteUrl) ?? absoluteUrl;
|
|
80
|
-
return descriptor ? `${resolvedUrl} ${descriptor}` : resolvedUrl;
|
|
81
|
-
}).join(", ");
|
|
82
|
-
if (srcSet) {
|
|
83
|
-
node.setAttribute("srcset", srcSet);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
if (node.hasAttribute("imagesrcset")) {
|
|
87
|
-
const srcSet = node.getAttribute("imagesrcset")?.split(",").map((entry) => {
|
|
88
|
-
const [urlPart, descriptor] = entry.trim().split(/\s+/);
|
|
89
|
-
if (!urlPart)
|
|
90
|
-
return entry;
|
|
91
|
-
const absoluteUrl = new URL(urlPart, url).href;
|
|
92
|
-
const resolvedUrl = resolveClientUrl?.(absoluteUrl) ?? absoluteUrl;
|
|
93
|
-
return descriptor ? `${resolvedUrl} ${descriptor}` : resolvedUrl;
|
|
94
|
-
}).join(", ");
|
|
95
|
-
if (srcSet) {
|
|
96
|
-
node.setAttribute("imagesrcset", srcSet);
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
// src/shared/constants.ts
|
|
39
|
+
// src/utils/constants.ts
|
|
104
40
|
var RC_PROTECTED_REMOTE_FETCH_PATHNAME = "/rc-fetch-protected-remote";
|
|
105
41
|
var CORS_DOCS_URL = "https://vercel.com/docs/remote-components/concepts/cors-external-urls#accessing-cross-site-protected-remote-components";
|
|
106
42
|
|
|
107
|
-
// src/
|
|
108
|
-
function generateProtectedRcFallbackSrc(url) {
|
|
109
|
-
return `${RC_PROTECTED_REMOTE_FETCH_PATHNAME}?url=${encodeURIComponent(url)}`;
|
|
110
|
-
}
|
|
43
|
+
// src/runtime/url/protected-rc-fallback.ts
|
|
111
44
|
function isProxiedUrl(url) {
|
|
112
45
|
try {
|
|
113
46
|
return new URL(url, location.href).pathname === RC_PROTECTED_REMOTE_FETCH_PATHNAME;
|
|
@@ -116,7 +49,7 @@ function isProxiedUrl(url) {
|
|
|
116
49
|
}
|
|
117
50
|
}
|
|
118
51
|
|
|
119
|
-
// src/
|
|
52
|
+
// src/utils/abort.ts
|
|
120
53
|
function isAbortError(error) {
|
|
121
54
|
if (error instanceof DOMException && error.name === "AbortError") {
|
|
122
55
|
return true;
|
|
@@ -128,7 +61,7 @@ function isAbortError(error) {
|
|
|
128
61
|
return false;
|
|
129
62
|
}
|
|
130
63
|
|
|
131
|
-
// src/
|
|
64
|
+
// src/utils/error.ts
|
|
132
65
|
var RemoteComponentsError = class extends Error {
|
|
133
66
|
code = "REMOTE_COMPONENTS_ERROR";
|
|
134
67
|
constructor(message, options) {
|
|
@@ -186,6 +119,11 @@ async function errorFromFailedFetch(originalUrl, resolvedUrl, res) {
|
|
|
186
119
|
}
|
|
187
120
|
return fallback;
|
|
188
121
|
}
|
|
122
|
+
function failedProxiedAssetError(kind, url, resolvedUrl) {
|
|
123
|
+
return new RemoteComponentsError(
|
|
124
|
+
`Failed to load ${kind} "${url}" via proxy "${resolvedUrl}". Ensure withRemoteComponentsHostProxy middleware is configured, "${RC_PROTECTED_REMOTE_FETCH_PATHNAME}" is in the matcher, and the remote URL is included in allowedProxyUrls. See: ${CORS_DOCS_URL}`
|
|
125
|
+
);
|
|
126
|
+
}
|
|
189
127
|
function failedProxyFetchError(originalUrl, proxyUrl, status, responseBody) {
|
|
190
128
|
if (status === 404) {
|
|
191
129
|
return new RemoteComponentsError(
|
|
@@ -194,7 +132,7 @@ function failedProxyFetchError(originalUrl, proxyUrl, status, responseBody) {
|
|
|
194
132
|
The host server needs middleware or a route that handles "${RC_PROTECTED_REMOTE_FETCH_PATHNAME}".
|
|
195
133
|
|
|
196
134
|
Proxying requires two pieces:
|
|
197
|
-
1. resolveClientUrl={
|
|
135
|
+
1. resolveClientUrl={routeThroughHostProxy} on <RemoteComponent>
|
|
198
136
|
2. Middleware or a route for "${RC_PROTECTED_REMOTE_FETCH_PATHNAME}" on the host server
|
|
199
137
|
|
|
200
138
|
Docs: ${CORS_DOCS_URL}`
|
|
@@ -211,123 +149,7 @@ Docs: ${CORS_DOCS_URL}`
|
|
|
211
149
|
);
|
|
212
150
|
}
|
|
213
151
|
|
|
214
|
-
// src/
|
|
215
|
-
function escapeString(str) {
|
|
216
|
-
return str.replace(/[^a-z0-9]/g, "_");
|
|
217
|
-
}
|
|
218
|
-
var attrToProp = {
|
|
219
|
-
fetchpriority: "fetchPriority",
|
|
220
|
-
crossorigin: "crossOrigin",
|
|
221
|
-
imagesrcset: "imageSrcSet",
|
|
222
|
-
imagesizes: "imageSizes",
|
|
223
|
-
srcset: "srcSet"
|
|
224
|
-
};
|
|
225
|
-
|
|
226
|
-
// src/shared/client/const.ts
|
|
227
|
-
var DEFAULT_ROUTE = "/";
|
|
228
|
-
var RUNTIME_WEBPACK = "webpack";
|
|
229
|
-
var RUNTIME_TURBOPACK = "turbopack";
|
|
230
|
-
var RUNTIME_SCRIPT = "script";
|
|
231
|
-
var REMOTE_COMPONENT_REGEX = /(?<prefix>.*?)\[(?<bundle>[^\]]+)\](?:%20| )(?<id>.+)/;
|
|
232
|
-
function getBundleKey(bundle) {
|
|
233
|
-
return escapeString(bundle);
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
// src/shared/client/parse-remote-html.ts
|
|
237
|
-
function validateSingleComponent(doc, name, url) {
|
|
238
|
-
if (doc.querySelectorAll("div[data-bundle][data-route]").length > 1 && !doc.querySelector(`div[data-bundle][data-route][id^="${name}"]`) || doc.querySelectorAll("remote-component:not([src])").length > 1 && !doc.querySelector(`remote-component[name="${name}"]`)) {
|
|
239
|
-
throw multipleRemoteComponentsError(url);
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
function findComponentElement(doc, name) {
|
|
243
|
-
return doc.querySelector(`div[data-bundle][data-route][id^="${name}"]`) ?? doc.querySelector("div[data-bundle][data-route]") ?? doc.querySelector("div#__next") ?? doc.querySelector(`remote-component[name="${name}"]:not([src])`) ?? doc.querySelector("remote-component:not([src])");
|
|
244
|
-
}
|
|
245
|
-
function parseNextData(doc) {
|
|
246
|
-
return JSON.parse(
|
|
247
|
-
(doc.querySelector("#__NEXT_DATA__") ?? doc.querySelector("#__REMOTE_NEXT_DATA__"))?.textContent ?? "null"
|
|
248
|
-
);
|
|
249
|
-
}
|
|
250
|
-
function resolveComponentName(component, nextData, fallbackName) {
|
|
251
|
-
const isRemoteComponent = component?.tagName.toLowerCase() === "remote-component";
|
|
252
|
-
const name = component?.getAttribute("id")?.replace(/_ssr$/, "") || isRemoteComponent && component?.getAttribute("name") || (nextData ? "__next" : fallbackName);
|
|
253
|
-
return { name, isRemoteComponent };
|
|
254
|
-
}
|
|
255
|
-
function extractComponentMetadata(component, nextData, name, url) {
|
|
256
|
-
return {
|
|
257
|
-
name,
|
|
258
|
-
bundle: component?.getAttribute("data-bundle") || nextData?.props.__REMOTE_COMPONENT__?.bundle || "default",
|
|
259
|
-
route: component?.getAttribute("data-route") ?? nextData?.page ?? (url.pathname || DEFAULT_ROUTE),
|
|
260
|
-
runtime: component?.getAttribute("data-runtime") ?? (nextData?.props.__REMOTE_COMPONENT__?.runtime || RUNTIME_SCRIPT)
|
|
261
|
-
};
|
|
262
|
-
}
|
|
263
|
-
function extractRemoteShared(doc, name, nextData) {
|
|
264
|
-
const remoteSharedEl = doc.querySelector(
|
|
265
|
-
`#${name}_shared[data-remote-components-shared]`
|
|
266
|
-
);
|
|
267
|
-
const remoteShared = nextData?.props.__REMOTE_COMPONENT__?.shared ?? (JSON.parse(remoteSharedEl?.textContent ?? "{}") ?? {});
|
|
268
|
-
remoteSharedEl?.remove();
|
|
269
|
-
return remoteShared;
|
|
270
|
-
}
|
|
271
|
-
function validateComponentFound(component, rsc, nextData, isRemoteComponent, url, name) {
|
|
272
|
-
if (!component || !(rsc || nextData || isRemoteComponent)) {
|
|
273
|
-
throw new RemoteComponentsError(
|
|
274
|
-
`Remote Component not found on ${url}.${name !== "__vercel_remote_component" ? ` The name for the <RemoteComponent> is "${name}". Check <RemoteComponent> usage.` : ""} Did you forget to wrap the content in <RemoteComponent>?`
|
|
275
|
-
);
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
function extractLinks(doc, component) {
|
|
279
|
-
return Array.from(doc.querySelectorAll("link[href]")).filter(
|
|
280
|
-
(link) => !component.contains(link)
|
|
281
|
-
);
|
|
282
|
-
}
|
|
283
|
-
function extractScripts(doc, component, isRemoteComponent) {
|
|
284
|
-
return Array.from(
|
|
285
|
-
(isRemoteComponent ? component : doc).querySelectorAll(
|
|
286
|
-
"script[src],script[data-src]"
|
|
287
|
-
)
|
|
288
|
-
);
|
|
289
|
-
}
|
|
290
|
-
function parseRemoteComponentDocument(doc, name, url) {
|
|
291
|
-
validateSingleComponent(doc, name, url.href);
|
|
292
|
-
const component = findComponentElement(doc, name);
|
|
293
|
-
const nextData = parseNextData(doc);
|
|
294
|
-
const { name: resolvedName, isRemoteComponent } = resolveComponentName(
|
|
295
|
-
component,
|
|
296
|
-
nextData,
|
|
297
|
-
name
|
|
298
|
-
);
|
|
299
|
-
const rsc = doc.querySelector(`#${resolvedName}_rsc`);
|
|
300
|
-
const metadata = extractComponentMetadata(
|
|
301
|
-
component,
|
|
302
|
-
nextData,
|
|
303
|
-
resolvedName,
|
|
304
|
-
url
|
|
305
|
-
);
|
|
306
|
-
const remoteShared = extractRemoteShared(doc, resolvedName, nextData);
|
|
307
|
-
validateComponentFound(
|
|
308
|
-
component,
|
|
309
|
-
rsc,
|
|
310
|
-
nextData,
|
|
311
|
-
isRemoteComponent,
|
|
312
|
-
url.href,
|
|
313
|
-
resolvedName
|
|
314
|
-
);
|
|
315
|
-
const links = extractLinks(doc, component);
|
|
316
|
-
const scripts = extractScripts(doc, component, isRemoteComponent);
|
|
317
|
-
return {
|
|
318
|
-
component,
|
|
319
|
-
name: resolvedName,
|
|
320
|
-
isRemoteComponent,
|
|
321
|
-
metadata,
|
|
322
|
-
nextData,
|
|
323
|
-
rsc,
|
|
324
|
-
remoteShared,
|
|
325
|
-
links,
|
|
326
|
-
scripts
|
|
327
|
-
};
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
// src/shared/utils/logger.ts
|
|
152
|
+
// src/utils/logger.ts
|
|
331
153
|
var PREFIX = "remote-components";
|
|
332
154
|
var DEBUG = typeof window !== "undefined" && localStorage.getItem("RC_DEBUG") === "true";
|
|
333
155
|
function logDebug(location2, message) {
|
|
@@ -353,13 +175,68 @@ function warnCrossOriginFetchError(logLocation, url) {
|
|
|
353
175
|
}
|
|
354
176
|
logWarn(
|
|
355
177
|
logLocation,
|
|
356
|
-
`Failed to fetch cross-origin resource "${parsed.href}".
|
|
178
|
+
`Failed to fetch cross-origin resource "${parsed.href}". To load assets from a protected deployment, two steps are required: (1) configure withRemoteComponentsHostProxy middleware in your host with the remote URL in allowedProxyUrls, and (2) provide a resolveClientUrl prop that rewrites cross-origin asset URLs to go through the proxy. See: ${CORS_DOCS_URL}`
|
|
357
179
|
);
|
|
358
180
|
} catch {
|
|
359
181
|
}
|
|
360
182
|
}
|
|
361
183
|
|
|
362
|
-
// src/
|
|
184
|
+
// src/host/server/fetch-headers.ts
|
|
185
|
+
function remoteFetchHeaders() {
|
|
186
|
+
return {
|
|
187
|
+
/**
|
|
188
|
+
* Authenticates deployment protection for the remote. Needed for SSR and SSG clients.
|
|
189
|
+
* If the remote component uses vercel deployment protection, ensure the host and remote vercel
|
|
190
|
+
* projects share a common automation bypass secret, and the shared secret is used as the
|
|
191
|
+
* VERCEL_AUTOMATION_BYPASS_SECRET env var in the host project.
|
|
192
|
+
*/
|
|
193
|
+
...typeof process === "object" && typeof process.env === "object" && typeof process.env.VERCEL_AUTOMATION_BYPASS_SECRET === "string" ? {
|
|
194
|
+
"x-vercel-protection-bypass": process.env.VERCEL_AUTOMATION_BYPASS_SECRET
|
|
195
|
+
} : {},
|
|
196
|
+
Accept: "text/html"
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// src/host/server/fetch-with-hooks.ts
|
|
201
|
+
async function fetchWithWarning(url, init) {
|
|
202
|
+
try {
|
|
203
|
+
return await fetch(url, init);
|
|
204
|
+
} catch (error) {
|
|
205
|
+
warnCrossOriginFetchError("FetchRemoteComponent", url);
|
|
206
|
+
throw error;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
async function fetchWithHooks(url, additionalInit, options = {}) {
|
|
210
|
+
const {
|
|
211
|
+
onRequest,
|
|
212
|
+
onResponse,
|
|
213
|
+
abortController = new AbortController()
|
|
214
|
+
} = options;
|
|
215
|
+
const signal = abortController.signal;
|
|
216
|
+
const hookOptions = {
|
|
217
|
+
signal,
|
|
218
|
+
abort: (reason) => abortController.abort(reason)
|
|
219
|
+
};
|
|
220
|
+
const init = {
|
|
221
|
+
method: "GET",
|
|
222
|
+
headers: remoteFetchHeaders(),
|
|
223
|
+
signal,
|
|
224
|
+
...additionalInit
|
|
225
|
+
};
|
|
226
|
+
const res = await onRequest?.(url, init, hookOptions) ?? await fetchWithWarning(url, init);
|
|
227
|
+
return await onResponse?.(url, res, hookOptions) ?? res;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// src/host/server/get-client-or-server-url.ts
|
|
231
|
+
function getClientOrServerUrl(src, serverFallback) {
|
|
232
|
+
const fallback = typeof location !== "undefined" ? location.href : serverFallback;
|
|
233
|
+
if (!src) {
|
|
234
|
+
return new URL(fallback);
|
|
235
|
+
}
|
|
236
|
+
return typeof src === "string" ? new URL(src, fallback) : src;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// src/host/shared/polyfill.tsx
|
|
363
240
|
var import_jsx_runtime = (
|
|
364
241
|
// eslint-disable-next-line @next/next/no-img-element, jsx-a11y/alt-text
|
|
365
242
|
require("react/jsx-runtime")
|
|
@@ -382,7 +259,7 @@ function applyBundleUrlToImagePropsSrc(bundle, src) {
|
|
|
382
259
|
const propSrc = src;
|
|
383
260
|
return applyBundleUrlToSrc(bundle, propSrc.src);
|
|
384
261
|
}
|
|
385
|
-
var imageImpl = (bundle) => function RemoteImage({
|
|
262
|
+
var imageImpl = (bundle, resolveClientUrl) => function RemoteImage({
|
|
386
263
|
fill: _fill,
|
|
387
264
|
loader: _loader,
|
|
388
265
|
quality: _quality,
|
|
@@ -399,18 +276,19 @@ var imageImpl = (bundle) => function RemoteImage({
|
|
|
399
276
|
bundle,
|
|
400
277
|
typeof src === "string" ? src : src.src
|
|
401
278
|
);
|
|
279
|
+
const proxiedSrc = resolveClientUrl?.(newSrc) ?? newSrc;
|
|
402
280
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
403
281
|
"img",
|
|
404
282
|
{
|
|
405
283
|
decoding: "async",
|
|
406
284
|
style: { color: "transparent" },
|
|
407
285
|
...props,
|
|
408
|
-
src:
|
|
286
|
+
src: proxiedSrc,
|
|
409
287
|
suppressHydrationWarning: true
|
|
410
288
|
}
|
|
411
289
|
);
|
|
412
290
|
};
|
|
413
|
-
function sharedPolyfills(shared) {
|
|
291
|
+
function sharedPolyfills(shared, resolveClientUrl) {
|
|
414
292
|
const self = globalThis;
|
|
415
293
|
const polyfill = {
|
|
416
294
|
"next/dist/client/components/navigation": self.__remote_component_host_shared_modules__?.["next/navigation"] ?? shared?.["next/navigation"] ?? (() => Promise.resolve({
|
|
@@ -501,11 +379,11 @@ function sharedPolyfills(shared) {
|
|
|
501
379
|
__esModule: true
|
|
502
380
|
})),
|
|
503
381
|
"next/dist/client/image-component": self.__remote_component_host_shared_modules__?.["next/image"] ?? shared?.["next/image"] ?? ((bundle) => Promise.resolve({
|
|
504
|
-
Image: imageImpl(bundle),
|
|
382
|
+
Image: imageImpl(bundle, resolveClientUrl),
|
|
505
383
|
__esModule: true
|
|
506
384
|
})),
|
|
507
385
|
"next/image": self.__remote_component_host_shared_modules__?.["next/image"] ?? shared?.["next/image"] ?? ((bundle) => Promise.resolve({
|
|
508
|
-
default: imageImpl(bundle),
|
|
386
|
+
default: imageImpl(bundle, resolveClientUrl),
|
|
509
387
|
getImageProps: (_imgProps) => {
|
|
510
388
|
throw new Error(
|
|
511
389
|
"Next.js getImageProps() is not implemented in remote components"
|
|
@@ -555,29 +433,338 @@ function sharedPolyfills(shared) {
|
|
|
555
433
|
return polyfill;
|
|
556
434
|
}
|
|
557
435
|
|
|
558
|
-
// src/shared/
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
436
|
+
// src/host/shared/state.ts
|
|
437
|
+
function createHostState() {
|
|
438
|
+
return {
|
|
439
|
+
stage: "idle",
|
|
440
|
+
prevSrc: void 0,
|
|
441
|
+
prevUrl: void 0,
|
|
442
|
+
prevName: void 0,
|
|
443
|
+
prevIsRemoteComponent: false,
|
|
444
|
+
abortController: void 0
|
|
445
|
+
};
|
|
446
|
+
}
|
|
564
447
|
|
|
565
|
-
// src/
|
|
566
|
-
function
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
`[id="__next_css__DO_NOT_USE__"]:not([data-bundle="${bundle}"][data-route="${route}"])`
|
|
570
|
-
);
|
|
571
|
-
if (nextCssOriginal) {
|
|
572
|
-
nextCssOriginal.parentNode?.removeChild(nextCssOriginal);
|
|
448
|
+
// src/host/utils/resolve-name-from-src.ts
|
|
449
|
+
function resolveNameFromSrc(src, defaultName) {
|
|
450
|
+
if (!src) {
|
|
451
|
+
return defaultName;
|
|
573
452
|
}
|
|
574
|
-
const
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
453
|
+
const hash = typeof src === "string" ? src : src.hash;
|
|
454
|
+
const hashIndex = hash.indexOf("#");
|
|
455
|
+
if (hashIndex < 0) {
|
|
456
|
+
return defaultName;
|
|
457
|
+
}
|
|
458
|
+
const name = hash.slice(hashIndex + 1);
|
|
459
|
+
return name || defaultName;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
// src/utils/index.ts
|
|
463
|
+
function escapeString(str) {
|
|
464
|
+
return str.replace(/[^a-z0-9]/g, "_");
|
|
465
|
+
}
|
|
466
|
+
var attrToProp = {
|
|
467
|
+
fetchpriority: "fetchPriority",
|
|
468
|
+
crossorigin: "crossOrigin",
|
|
469
|
+
imagesrcset: "imageSrcSet",
|
|
470
|
+
imagesizes: "imageSizes",
|
|
471
|
+
srcset: "srcSet"
|
|
472
|
+
};
|
|
473
|
+
|
|
474
|
+
// src/runtime/constants.ts
|
|
475
|
+
var DEFAULT_ROUTE = "/";
|
|
476
|
+
var RUNTIME_WEBPACK = "webpack";
|
|
477
|
+
var RUNTIME_TURBOPACK = "turbopack";
|
|
478
|
+
var RUNTIME_SCRIPT = "script";
|
|
479
|
+
var REMOTE_COMPONENT_REGEX = /(?<prefix>.*?)\[(?<bundle>[^\]]+)\](?:%20| )(?<id>.+)/;
|
|
480
|
+
var NEXT_BUNDLE_PATH_RE = /\/_next\/\[.+\](?:%20| )/;
|
|
481
|
+
function getBundleKey(bundle) {
|
|
482
|
+
return escapeString(bundle);
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
// src/runtime/html/apply-origin.ts
|
|
486
|
+
var tagNames = [
|
|
487
|
+
"img",
|
|
488
|
+
"source",
|
|
489
|
+
"video",
|
|
490
|
+
"audio",
|
|
491
|
+
"track",
|
|
492
|
+
"iframe",
|
|
493
|
+
"embed",
|
|
494
|
+
"script",
|
|
495
|
+
"link"
|
|
496
|
+
];
|
|
497
|
+
function applyOriginToNodes(doc, url, resolveClientUrl) {
|
|
498
|
+
if (url.origin !== location.origin) {
|
|
499
|
+
const nodes = doc.querySelectorAll(
|
|
500
|
+
tagNames.map(
|
|
501
|
+
(type) => `${type}[src],${type}[srcset],${type}[href],${type}[imagesrcset]`
|
|
502
|
+
).join(",")
|
|
503
|
+
);
|
|
504
|
+
nodes.forEach((node) => {
|
|
505
|
+
if (node.hasAttribute("src") && /^[./]+\/?/.test(node.getAttribute("src") ?? "")) {
|
|
506
|
+
const absoluteSrc = new URL(node.getAttribute("src") ?? "/", url).href;
|
|
507
|
+
const isScript = node.tagName.toLowerCase() === "script";
|
|
508
|
+
node.src = isScript ? absoluteSrc : resolveClientUrl?.(absoluteSrc) ?? absoluteSrc;
|
|
509
|
+
}
|
|
510
|
+
if (node.hasAttribute("href") && /^[./]+\/?/.test(node.getAttribute("href") ?? "")) {
|
|
511
|
+
const absoluteHref = new URL(node.getAttribute("href") ?? "/", url).href;
|
|
512
|
+
node.setAttribute(
|
|
513
|
+
"href",
|
|
514
|
+
resolveClientUrl?.(absoluteHref) ?? absoluteHref
|
|
515
|
+
);
|
|
516
|
+
}
|
|
517
|
+
if (node.hasAttribute("srcset")) {
|
|
518
|
+
const srcSet = node.getAttribute("srcset")?.split(",").map((entry) => {
|
|
519
|
+
const [urlPart, descriptor] = entry.trim().split(/\s+/);
|
|
520
|
+
if (!urlPart)
|
|
521
|
+
return entry;
|
|
522
|
+
const absoluteUrl = new URL(urlPart, url).href;
|
|
523
|
+
const resolvedUrl = resolveClientUrl?.(absoluteUrl) ?? absoluteUrl;
|
|
524
|
+
return descriptor ? `${resolvedUrl} ${descriptor}` : resolvedUrl;
|
|
525
|
+
}).join(", ");
|
|
526
|
+
if (srcSet) {
|
|
527
|
+
node.setAttribute("srcset", srcSet);
|
|
528
|
+
}
|
|
529
|
+
}
|
|
530
|
+
if (node.hasAttribute("imagesrcset")) {
|
|
531
|
+
const srcSet = node.getAttribute("imagesrcset")?.split(",").map((entry) => {
|
|
532
|
+
const [urlPart, descriptor] = entry.trim().split(/\s+/);
|
|
533
|
+
if (!urlPart)
|
|
534
|
+
return entry;
|
|
535
|
+
const absoluteUrl = new URL(urlPart, url).href;
|
|
536
|
+
const resolvedUrl = resolveClientUrl?.(absoluteUrl) ?? absoluteUrl;
|
|
537
|
+
return descriptor ? `${resolvedUrl} ${descriptor}` : resolvedUrl;
|
|
538
|
+
}).join(", ");
|
|
539
|
+
if (srcSet) {
|
|
540
|
+
node.setAttribute("imagesrcset", srcSet);
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
});
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
|
|
547
|
+
// src/runtime/html/parse-remote-html.ts
|
|
548
|
+
function validateSingleComponent(doc, name, url) {
|
|
549
|
+
if (doc.querySelectorAll("div[data-bundle][data-route]").length > 1 && !doc.querySelector(`div[data-bundle][data-route][id^="${name}"]`) || doc.querySelectorAll("remote-component:not([src])").length > 1 && !doc.querySelector(`remote-component[name="${name}"]`)) {
|
|
550
|
+
throw multipleRemoteComponentsError(url);
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
function findComponentElement(doc, name) {
|
|
554
|
+
return doc.querySelector(`div[data-bundle][data-route][id^="${name}"]`) ?? doc.querySelector("div[data-bundle][data-route]") ?? doc.querySelector("div#__next") ?? doc.querySelector(`remote-component[name="${name}"]:not([src])`) ?? doc.querySelector("remote-component:not([src])");
|
|
555
|
+
}
|
|
556
|
+
function parseNextData(doc) {
|
|
557
|
+
return JSON.parse(
|
|
558
|
+
(doc.querySelector("#__NEXT_DATA__") ?? doc.querySelector("#__REMOTE_NEXT_DATA__"))?.textContent ?? "null"
|
|
559
|
+
);
|
|
560
|
+
}
|
|
561
|
+
function resolveComponentName(component, nextData, fallbackName) {
|
|
562
|
+
const isRemoteComponent = component?.tagName.toLowerCase() === "remote-component";
|
|
563
|
+
const name = component?.getAttribute("id")?.replace(/_ssr$/, "") || isRemoteComponent && component?.getAttribute("name") || (nextData ? "__next" : fallbackName);
|
|
564
|
+
return { name, isRemoteComponent };
|
|
565
|
+
}
|
|
566
|
+
function extractComponentMetadata(component, nextData, name, url) {
|
|
567
|
+
return {
|
|
568
|
+
name,
|
|
569
|
+
bundle: component?.getAttribute("data-bundle") || nextData?.props.__REMOTE_COMPONENT__?.bundle || "default",
|
|
570
|
+
route: component?.getAttribute("data-route") ?? nextData?.page ?? (url.pathname || DEFAULT_ROUTE),
|
|
571
|
+
runtime: component?.getAttribute("data-runtime") ?? (nextData?.props.__REMOTE_COMPONENT__?.runtime || RUNTIME_SCRIPT)
|
|
572
|
+
};
|
|
573
|
+
}
|
|
574
|
+
function extractRemoteShared(doc, name, nextData) {
|
|
575
|
+
const remoteSharedEl = doc.querySelector(
|
|
576
|
+
`#${name}_shared[data-remote-components-shared]`
|
|
577
|
+
);
|
|
578
|
+
const remoteShared = nextData?.props.__REMOTE_COMPONENT__?.shared ?? (JSON.parse(remoteSharedEl?.textContent ?? "{}") ?? {});
|
|
579
|
+
remoteSharedEl?.remove();
|
|
580
|
+
return remoteShared;
|
|
581
|
+
}
|
|
582
|
+
function validateComponentFound(component, rsc, nextData, isRemoteComponent, url, name) {
|
|
583
|
+
if (!component || !(rsc || nextData || isRemoteComponent)) {
|
|
584
|
+
throw new RemoteComponentsError(
|
|
585
|
+
`Remote Component not found on ${url}.${name !== "__vercel_remote_component" ? ` The name for the <RemoteComponent> is "${name}". Check <RemoteComponent> usage.` : ""} Did you forget to wrap the content in <RemoteComponent>?`
|
|
586
|
+
);
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
function extractLinks(doc, component) {
|
|
590
|
+
return Array.from(doc.querySelectorAll("link[href]")).filter(
|
|
591
|
+
(link) => !component.contains(link)
|
|
592
|
+
);
|
|
593
|
+
}
|
|
594
|
+
function extractScripts(doc, component, isRemoteComponent) {
|
|
595
|
+
return Array.from(
|
|
596
|
+
(isRemoteComponent ? component : doc).querySelectorAll(
|
|
597
|
+
"script[src],script[data-src]"
|
|
598
|
+
)
|
|
599
|
+
);
|
|
600
|
+
}
|
|
601
|
+
function parseRemoteComponentDocument(doc, name, url) {
|
|
602
|
+
validateSingleComponent(doc, name, url.href);
|
|
603
|
+
const component = findComponentElement(doc, name);
|
|
604
|
+
const nextData = parseNextData(doc);
|
|
605
|
+
const { name: resolvedName, isRemoteComponent } = resolveComponentName(
|
|
606
|
+
component,
|
|
607
|
+
nextData,
|
|
608
|
+
name
|
|
609
|
+
);
|
|
610
|
+
const rsc = doc.querySelector(`#${resolvedName}_rsc`);
|
|
611
|
+
const metadata = extractComponentMetadata(
|
|
612
|
+
component,
|
|
613
|
+
nextData,
|
|
614
|
+
resolvedName,
|
|
615
|
+
url
|
|
616
|
+
);
|
|
617
|
+
const remoteShared = extractRemoteShared(doc, resolvedName, nextData);
|
|
618
|
+
validateComponentFound(
|
|
619
|
+
component,
|
|
620
|
+
rsc,
|
|
621
|
+
nextData,
|
|
622
|
+
isRemoteComponent,
|
|
623
|
+
url.href,
|
|
624
|
+
resolvedName
|
|
625
|
+
);
|
|
626
|
+
const links = extractLinks(doc, component);
|
|
627
|
+
const scripts = extractScripts(doc, component, isRemoteComponent);
|
|
628
|
+
return {
|
|
629
|
+
component,
|
|
630
|
+
name: resolvedName,
|
|
631
|
+
isRemoteComponent,
|
|
632
|
+
metadata,
|
|
633
|
+
nextData,
|
|
634
|
+
rsc,
|
|
635
|
+
remoteShared,
|
|
636
|
+
links,
|
|
637
|
+
scripts
|
|
638
|
+
};
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
// src/runtime/html/set-attributes-from-props.ts
|
|
642
|
+
var DOMAttributeNames = {
|
|
643
|
+
acceptCharset: "accept-charset",
|
|
644
|
+
className: "class",
|
|
645
|
+
htmlFor: "for",
|
|
646
|
+
httpEquiv: "http-equiv",
|
|
647
|
+
noModule: "noModule"
|
|
648
|
+
};
|
|
649
|
+
var ignoreProps = [
|
|
650
|
+
"onLoad",
|
|
651
|
+
"onReady",
|
|
652
|
+
"dangerouslySetInnerHTML",
|
|
653
|
+
"children",
|
|
654
|
+
"onError",
|
|
655
|
+
"strategy",
|
|
656
|
+
"stylesheets"
|
|
657
|
+
];
|
|
658
|
+
function isBooleanScriptAttribute(attr) {
|
|
659
|
+
return ["async", "defer", "noModule"].includes(attr);
|
|
660
|
+
}
|
|
661
|
+
function setAttributesFromProps(el, props) {
|
|
662
|
+
for (const [p, value] of Object.entries(props)) {
|
|
663
|
+
if (!Object.hasOwn(props, p))
|
|
664
|
+
continue;
|
|
665
|
+
if (ignoreProps.includes(p))
|
|
666
|
+
continue;
|
|
667
|
+
if (value === void 0) {
|
|
668
|
+
continue;
|
|
669
|
+
}
|
|
670
|
+
const attr = DOMAttributeNames[p] || p.toLowerCase();
|
|
671
|
+
if (el.tagName === "SCRIPT" && isBooleanScriptAttribute(attr)) {
|
|
672
|
+
el[attr] = Boolean(value);
|
|
673
|
+
} else {
|
|
674
|
+
el.setAttribute(attr, String(value));
|
|
675
|
+
}
|
|
676
|
+
if (value === false || el.tagName === "SCRIPT" && isBooleanScriptAttribute(attr) && (!value || value === "false")) {
|
|
677
|
+
el.setAttribute(attr, "");
|
|
678
|
+
el.removeAttribute(attr);
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
// src/runtime/loaders/component-loader.ts
|
|
684
|
+
var React = __toESM(require("react"), 1);
|
|
685
|
+
var JSXDevRuntime = __toESM(require("react/jsx-dev-runtime"), 1);
|
|
686
|
+
var JSXRuntime = __toESM(require("react/jsx-runtime"), 1);
|
|
687
|
+
var ReactDOM = __toESM(require("react-dom"), 1);
|
|
688
|
+
var ReactDOMClient = __toESM(require("react-dom/client"), 1);
|
|
689
|
+
|
|
690
|
+
// src/config/webpack/apply-shared-modules.ts
|
|
691
|
+
var DEDUPLICATION_SKIPPED = "shared module deduplication skipped. The remote may load its own copy of shared dependencies.";
|
|
692
|
+
function applySharedModules(bundle, resolve) {
|
|
693
|
+
logDebug(
|
|
694
|
+
"SharedModules",
|
|
695
|
+
`applySharedModules called for bundle: "${bundle}"`
|
|
696
|
+
);
|
|
697
|
+
logDebug(
|
|
698
|
+
"SharedModules",
|
|
699
|
+
`Shared modules to resolve: ${Object.keys(resolve)}`
|
|
700
|
+
);
|
|
701
|
+
const self = globalThis;
|
|
702
|
+
if (self.__remote_webpack_require__?.[bundle]) {
|
|
703
|
+
const modulePaths = Object.keys(
|
|
704
|
+
self.__remote_webpack_module_map__?.[bundle] ?? self.__remote_webpack_require__[bundle].m ?? {}
|
|
705
|
+
);
|
|
706
|
+
logDebug(
|
|
707
|
+
"SharedModules",
|
|
708
|
+
`Available module paths in __remote_webpack_require__[${bundle}]: ${modulePaths}`
|
|
709
|
+
);
|
|
710
|
+
for (const [key, value] of Object.entries(resolve)) {
|
|
711
|
+
const exactIds = modulePaths.filter((p) => p === key);
|
|
712
|
+
const ids = exactIds.length > 0 ? exactIds : modulePaths.filter((p) => p.includes(key));
|
|
713
|
+
if (ids.length === 0) {
|
|
714
|
+
logDebug(
|
|
715
|
+
"SharedModules",
|
|
716
|
+
`No matching module path found for shared module "${key}"`
|
|
717
|
+
);
|
|
718
|
+
}
|
|
719
|
+
for (const id of ids) {
|
|
720
|
+
const webpackBundle = self.__remote_webpack_require__[bundle];
|
|
721
|
+
if (webpackBundle.m) {
|
|
722
|
+
const resolvedId = self.__remote_webpack_module_map__?.[bundle]?.[id] ? `${self.__remote_webpack_module_map__[bundle][id]}` : id;
|
|
723
|
+
if (resolvedId !== id) {
|
|
724
|
+
logDebug(
|
|
725
|
+
"SharedModules",
|
|
726
|
+
`Mapped module id: "${id}" -> "${resolvedId}"`
|
|
727
|
+
);
|
|
728
|
+
}
|
|
729
|
+
webpackBundle.m[resolvedId] = (module2) => {
|
|
730
|
+
module2.exports = value;
|
|
731
|
+
};
|
|
732
|
+
} else {
|
|
733
|
+
logWarn(
|
|
734
|
+
"SharedModules",
|
|
735
|
+
`webpackBundle.m is not available for bundle "${bundle}" \u2014 ${DEDUPLICATION_SKIPPED}`
|
|
736
|
+
);
|
|
737
|
+
}
|
|
738
|
+
}
|
|
739
|
+
}
|
|
740
|
+
} else {
|
|
741
|
+
logWarn(
|
|
742
|
+
"SharedModules",
|
|
743
|
+
`No webpack require found for bundle "${bundle}" \u2014 ${DEDUPLICATION_SKIPPED}`
|
|
744
|
+
);
|
|
745
|
+
logDebug(
|
|
746
|
+
"SharedModules",
|
|
747
|
+
`Available bundles: ${Object.keys(self.__remote_webpack_require__ ?? {})}`
|
|
748
|
+
);
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
|
|
752
|
+
// src/config/webpack/next-client-pages-loader.ts
|
|
753
|
+
function nextClientPagesLoader(bundle, route, styleContainer = document.head) {
|
|
754
|
+
const self = globalThis;
|
|
755
|
+
const nextCssOriginal = document.querySelector(
|
|
756
|
+
`[id="__next_css__DO_NOT_USE__"]:not([data-bundle="${bundle}"][data-route="${route}"])`
|
|
757
|
+
);
|
|
758
|
+
if (nextCssOriginal) {
|
|
759
|
+
nextCssOriginal.parentNode?.removeChild(nextCssOriginal);
|
|
760
|
+
}
|
|
761
|
+
const nextCss = document.createElement("noscript");
|
|
762
|
+
nextCss.id = "__next_css__DO_NOT_USE__";
|
|
763
|
+
nextCss.setAttribute("data-bundle", bundle);
|
|
764
|
+
nextCss.setAttribute("data-route", route);
|
|
765
|
+
const nextCssEnd = document.createElement("noscript");
|
|
766
|
+
nextCssEnd.id = "__next_css__DO_NOT_USE_END__";
|
|
767
|
+
nextCssEnd.setAttribute("data-bundle", bundle);
|
|
581
768
|
nextCssEnd.setAttribute("data-route", route);
|
|
582
769
|
document.head.appendChild(nextCssEnd);
|
|
583
770
|
document.head.appendChild(nextCss);
|
|
@@ -642,100 +829,39 @@ function nextClientPagesLoader(bundle, route, styleContainer = document.head) {
|
|
|
642
829
|
self.__remote_webpack_require__?.[bundle]?.(id);
|
|
643
830
|
}
|
|
644
831
|
});
|
|
645
|
-
const elements = [];
|
|
646
|
-
let node = nextCss.previousSibling;
|
|
647
|
-
while (node && node !== nextCssEnd) {
|
|
648
|
-
elements.push(node);
|
|
649
|
-
node.remove();
|
|
650
|
-
node = nextCss.previousSibling;
|
|
651
|
-
}
|
|
652
|
-
self.__remote_next_css__[bundle] = elements;
|
|
653
|
-
}
|
|
654
|
-
if (styleContainer) {
|
|
655
|
-
const elements = self.__remote_next_css__[bundle];
|
|
656
|
-
elements.forEach((el) => {
|
|
657
|
-
styleContainer.appendChild(el.cloneNode(true));
|
|
658
|
-
});
|
|
659
|
-
} else {
|
|
660
|
-
const elements = self.__remote_next_css__[bundle];
|
|
661
|
-
elements.forEach((el) => {
|
|
662
|
-
document.head.appendChild(el);
|
|
663
|
-
});
|
|
664
|
-
}
|
|
665
|
-
delete self.__NEXT_P;
|
|
666
|
-
self.__NEXT_P = __NEXT_P_ORIGINAL;
|
|
667
|
-
if (nextCssOriginal) {
|
|
668
|
-
nextCssOriginal.parentNode?.appendChild(nextCssOriginal);
|
|
669
|
-
}
|
|
670
|
-
nextCss.remove();
|
|
671
|
-
nextCssEnd.remove();
|
|
672
|
-
return { Component, App };
|
|
673
|
-
}
|
|
674
|
-
return { Component: null, App: null };
|
|
675
|
-
}
|
|
676
|
-
|
|
677
|
-
// src/shared/webpack/shared-modules.ts
|
|
678
|
-
function applySharedModules(bundle, resolve) {
|
|
679
|
-
logDebug(
|
|
680
|
-
"SharedModules",
|
|
681
|
-
`applySharedModules called for bundle: "${bundle}"`
|
|
682
|
-
);
|
|
683
|
-
logDebug(
|
|
684
|
-
"SharedModules",
|
|
685
|
-
`Shared modules to resolve: ${Object.keys(resolve)}`
|
|
686
|
-
);
|
|
687
|
-
const self = globalThis;
|
|
688
|
-
if (self.__remote_webpack_require__?.[bundle]) {
|
|
689
|
-
const modulePaths = Object.keys(
|
|
690
|
-
self.__remote_webpack_module_map__?.[bundle] ?? self.__remote_webpack_require__[bundle].m ?? {}
|
|
691
|
-
);
|
|
692
|
-
logDebug(
|
|
693
|
-
"SharedModules",
|
|
694
|
-
`Available module paths in __remote_webpack_require__[${bundle}]: ${modulePaths}`
|
|
695
|
-
);
|
|
696
|
-
for (const [key, value] of Object.entries(resolve)) {
|
|
697
|
-
let ids = modulePaths.filter((p) => p === key);
|
|
698
|
-
if (ids.length === 0) {
|
|
699
|
-
ids = modulePaths.filter((p) => p.includes(key));
|
|
700
|
-
}
|
|
701
|
-
if (ids.length === 0) {
|
|
702
|
-
logDebug(
|
|
703
|
-
"SharedModules",
|
|
704
|
-
`No matching module path found for shared module "${key}"`
|
|
705
|
-
);
|
|
706
|
-
}
|
|
707
|
-
for (let id of ids) {
|
|
708
|
-
const webpackBundle = self.__remote_webpack_require__[bundle];
|
|
709
|
-
if (webpackBundle.m) {
|
|
710
|
-
if (self.__remote_webpack_module_map__?.[bundle]?.[id]) {
|
|
711
|
-
const mappedId = `${self.__remote_webpack_module_map__[bundle][id]}`;
|
|
712
|
-
logDebug(
|
|
713
|
-
"SharedModules",
|
|
714
|
-
`Mapped module id: "${id}" -> "${mappedId}"`
|
|
715
|
-
);
|
|
716
|
-
id = mappedId;
|
|
717
|
-
}
|
|
718
|
-
webpackBundle.m[id] = (module2) => {
|
|
719
|
-
module2.exports = value;
|
|
720
|
-
};
|
|
721
|
-
} else {
|
|
722
|
-
logWarn(
|
|
723
|
-
"SharedModules",
|
|
724
|
-
`webpackBundle.m is not available for bundle "${bundle}"`
|
|
725
|
-
);
|
|
726
|
-
}
|
|
832
|
+
const elements = [];
|
|
833
|
+
let node = nextCss.previousSibling;
|
|
834
|
+
while (node && node !== nextCssEnd) {
|
|
835
|
+
elements.push(node);
|
|
836
|
+
node.remove();
|
|
837
|
+
node = nextCss.previousSibling;
|
|
727
838
|
}
|
|
839
|
+
self.__remote_next_css__[bundle] = elements;
|
|
728
840
|
}
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
841
|
+
if (styleContainer) {
|
|
842
|
+
const elements = self.__remote_next_css__[bundle];
|
|
843
|
+
elements.forEach((el) => {
|
|
844
|
+
styleContainer.appendChild(el.cloneNode(true));
|
|
845
|
+
});
|
|
846
|
+
} else {
|
|
847
|
+
const elements = self.__remote_next_css__[bundle];
|
|
848
|
+
elements.forEach((el) => {
|
|
849
|
+
document.head.appendChild(el);
|
|
850
|
+
});
|
|
851
|
+
}
|
|
852
|
+
delete self.__NEXT_P;
|
|
853
|
+
self.__NEXT_P = __NEXT_P_ORIGINAL;
|
|
854
|
+
if (nextCssOriginal) {
|
|
855
|
+
nextCssOriginal.parentNode?.appendChild(nextCssOriginal);
|
|
856
|
+
}
|
|
857
|
+
nextCss.remove();
|
|
858
|
+
nextCssEnd.remove();
|
|
859
|
+
return { Component, App };
|
|
735
860
|
}
|
|
861
|
+
return { Component: null, App: null };
|
|
736
862
|
}
|
|
737
863
|
|
|
738
|
-
// src/
|
|
864
|
+
// src/runtime/rsc.ts
|
|
739
865
|
var import_web_streams_polyfill = require("web-streams-polyfill");
|
|
740
866
|
function fixPayload(payload) {
|
|
741
867
|
if (Array.isArray(payload)) {
|
|
@@ -801,56 +927,15 @@ function createRSCStream(rscName, data) {
|
|
|
801
927
|
});
|
|
802
928
|
}
|
|
803
929
|
|
|
804
|
-
// src/
|
|
805
|
-
var NEXT_BUNDLE_PATH_RE = /\/_next\/\[.+\](?:%20| )/;
|
|
806
|
-
|
|
807
|
-
// src/shared/client/script-loader.ts
|
|
808
|
-
async function loadScripts(scripts, resolveClientUrl) {
|
|
809
|
-
await Promise.all(
|
|
810
|
-
scripts.map((script) => {
|
|
811
|
-
return new Promise((resolve, reject) => {
|
|
812
|
-
const newSrc = new URL(
|
|
813
|
-
// remove the remote component bundle name identifier from the script src
|
|
814
|
-
script.src.replace(NEXT_BUNDLE_PATH_RE, "/_next/"),
|
|
815
|
-
location.origin
|
|
816
|
-
).href;
|
|
817
|
-
const resolvedSrc = resolveClientUrl?.(newSrc) ?? newSrc;
|
|
818
|
-
const newScript = document.createElement("script");
|
|
819
|
-
newScript.onload = () => resolve();
|
|
820
|
-
newScript.onerror = () => {
|
|
821
|
-
const isProxied = isProxiedUrl(resolvedSrc);
|
|
822
|
-
if (isProxied) {
|
|
823
|
-
reject(
|
|
824
|
-
new RemoteComponentsError(
|
|
825
|
-
`Failed to load script "${newSrc}" via proxy "${resolvedSrc}". Ensure withRemoteComponentsHost middleware is configured and "${RC_PROTECTED_REMOTE_FETCH_PATHNAME}" is in the matcher. See: ${CORS_DOCS_URL}`
|
|
826
|
-
)
|
|
827
|
-
);
|
|
828
|
-
} else {
|
|
829
|
-
warnCrossOriginFetchError("ScriptLoader", newSrc);
|
|
830
|
-
reject(
|
|
831
|
-
new RemoteComponentsError(
|
|
832
|
-
`Failed to load <script src="${newSrc}"> for Remote Component. Check the URL is correct.`
|
|
833
|
-
)
|
|
834
|
-
);
|
|
835
|
-
}
|
|
836
|
-
};
|
|
837
|
-
newScript.src = resolvedSrc;
|
|
838
|
-
newScript.async = true;
|
|
839
|
-
document.head.appendChild(newScript);
|
|
840
|
-
});
|
|
841
|
-
})
|
|
842
|
-
);
|
|
843
|
-
}
|
|
844
|
-
|
|
845
|
-
// src/shared/client/turbopack-patterns.ts
|
|
930
|
+
// src/runtime/turbopack/patterns.ts
|
|
846
931
|
var REMOTE_SHARED_MARKER_RE = /(?:self|[a-z])\.TURBOPACK_REMOTE_SHARED/;
|
|
847
|
-
var REMOTE_SHARED_ASSIGNMENT_RE = /\.TURBOPACK_REMOTE_SHARED=await (?:__turbopack_context__|
|
|
932
|
+
var REMOTE_SHARED_ASSIGNMENT_RE = /\.TURBOPACK_REMOTE_SHARED=await (?:__turbopack_context__|[a-z])\.A\((?<sharedModuleId>[0-9]+)\)/;
|
|
848
933
|
var ASYNC_MODULE_LOADER_RE = /(?:__turbopack_context__|e)\.A\((?<asyncSharedModuleId>[0-9]+)\)/;
|
|
849
934
|
var ASYNC_MODULE_RESOLVE_RE = /(?<ctx>__turbopack_context__|e)=>\{\k<ctx>\.v\((?<inner>parentImport|e)=>Promise\.resolve\(\)\.then\(\(\)=>\k<inner>\((?<sharedModuleId>[0-9]+)\)\)\)\}/;
|
|
850
935
|
var ASYNC_MODULE_ALL_RE = /(?<ctx>__turbopack_context__|e)=>\{\k<ctx>\.v\((?<vCb>parentImport|t)=>Promise\.all\(\["[^"]+"\]\.map\((?<mapCb>chunk|t)=>\k<ctx>\.l\(\k<mapCb>\)\)\)\.then\(\(\)=>\k<vCb>\((?<sharedModuleId>[0-9]+)\)\)\)\}/;
|
|
851
936
|
var TURBOPACK_GLOBAL_RE = /(?:globalThis|self)\s*(?:\.TURBOPACK|\[\s*["']TURBOPACK["']\s*\])/;
|
|
852
937
|
|
|
853
|
-
// src/
|
|
938
|
+
// src/runtime/turbopack/chunk-loader.ts
|
|
854
939
|
function createChunkLoader(runtime, resolveClientUrl) {
|
|
855
940
|
return function __turbopack_chunk_load__(chunkId, scriptBundle) {
|
|
856
941
|
logDebug("ChunkLoader", `Loading chunk: "${chunkId}"`);
|
|
@@ -910,11 +995,7 @@ function createChunkLoader(runtime, resolveClientUrl) {
|
|
|
910
995
|
}).then(resolve).catch((error) => {
|
|
911
996
|
const isProxied = isProxiedUrl(resolvedUrl);
|
|
912
997
|
if (isProxied) {
|
|
913
|
-
reject(
|
|
914
|
-
new RemoteComponentsError(
|
|
915
|
-
`Failed to load chunk "${url}" via proxy "${resolvedUrl}". Ensure withRemoteComponentsHost middleware is configured and "${RC_PROTECTED_REMOTE_FETCH_PATHNAME}" is in the matcher. See: ${CORS_DOCS_URL}`
|
|
916
|
-
)
|
|
917
|
-
);
|
|
998
|
+
reject(failedProxiedAssetError("chunk", url, resolvedUrl));
|
|
918
999
|
} else {
|
|
919
1000
|
warnCrossOriginFetchError("ChunkLoader", url);
|
|
920
1001
|
reject(error);
|
|
@@ -1062,7 +1143,7 @@ async function handleTurbopackChunk(code, bundle, url) {
|
|
|
1062
1143
|
}
|
|
1063
1144
|
}
|
|
1064
1145
|
|
|
1065
|
-
// src/
|
|
1146
|
+
// src/runtime/turbopack/module.ts
|
|
1066
1147
|
function handleTurbopackModule(bundle, moduleId, id) {
|
|
1067
1148
|
const self = globalThis;
|
|
1068
1149
|
const bundleKey = getBundleKey(bundle);
|
|
@@ -1291,7 +1372,8 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
|
|
|
1291
1372
|
};
|
|
1292
1373
|
}
|
|
1293
1374
|
|
|
1294
|
-
// src/
|
|
1375
|
+
// src/runtime/turbopack/shared-modules.ts
|
|
1376
|
+
var DEDUPLICATION_WARNING = "This module will not be deduplicated \u2014 the remote may load its own copy, which can cause duplicate instance errors (e.g. invalid hook calls if React is loaded twice).";
|
|
1295
1377
|
async function initializeSharedModules(bundle, hostShared = {}, remoteShared = {}) {
|
|
1296
1378
|
const self = globalThis;
|
|
1297
1379
|
self.__remote_shared_modules__ = self.__remote_shared_modules__ ?? {};
|
|
@@ -1342,7 +1424,7 @@ async function initializeSharedModules(bundle, hostShared = {}, remoteShared = {
|
|
|
1342
1424
|
} else {
|
|
1343
1425
|
logError(
|
|
1344
1426
|
"SharedModules",
|
|
1345
|
-
`Host shared module "${module2}" not found for ID ${id}`
|
|
1427
|
+
`Host shared module "${module2}" not found for ID ${id}. ${DEDUPLICATION_WARNING}`
|
|
1346
1428
|
);
|
|
1347
1429
|
}
|
|
1348
1430
|
}
|
|
@@ -1359,7 +1441,7 @@ async function initializeSharedModules(bundle, hostShared = {}, remoteShared = {
|
|
|
1359
1441
|
} else {
|
|
1360
1442
|
logError(
|
|
1361
1443
|
"SharedModules",
|
|
1362
|
-
`Shared module "${module2}" not found for "${bundle}"`
|
|
1444
|
+
`Shared module "${module2}" not found for "${bundle}". ${DEDUPLICATION_WARNING}`
|
|
1363
1445
|
);
|
|
1364
1446
|
}
|
|
1365
1447
|
}
|
|
@@ -1411,7 +1493,7 @@ function getSharedModule(bundle, id) {
|
|
|
1411
1493
|
return null;
|
|
1412
1494
|
}
|
|
1413
1495
|
|
|
1414
|
-
// src/
|
|
1496
|
+
// src/runtime/turbopack/webpack-runtime.ts
|
|
1415
1497
|
async function setupWebpackRuntime(runtime, scripts = [], url = new URL(location.href), bundle, shared = {}, remoteShared = {}, resolveClientUrl) {
|
|
1416
1498
|
const self = globalThis;
|
|
1417
1499
|
if (!self.__remote_bundle_url__) {
|
|
@@ -1466,7 +1548,7 @@ function createModuleRequire(runtime) {
|
|
|
1466
1548
|
id
|
|
1467
1549
|
};
|
|
1468
1550
|
const remoteRuntime = self.__remote_webpack_require__?.[bundle ?? "default"] ? self.__remote_webpack_require__[bundle ?? "default"]?.type || "webpack" : runtime;
|
|
1469
|
-
logDebug("
|
|
1551
|
+
logDebug("WebpackRuntime", `remoteRuntime: "${remoteRuntime}"`);
|
|
1470
1552
|
try {
|
|
1471
1553
|
if (remoteRuntime === RUNTIME_WEBPACK && bundle && moduleId) {
|
|
1472
1554
|
return self.__remote_webpack_require__?.[bundle]?.(moduleId);
|
|
@@ -1482,7 +1564,7 @@ function createModuleRequire(runtime) {
|
|
|
1482
1564
|
throw new Error(`Module "${id}" not found.`);
|
|
1483
1565
|
} catch (requireError) {
|
|
1484
1566
|
logWarn(
|
|
1485
|
-
"
|
|
1567
|
+
"WebpackRuntime",
|
|
1486
1568
|
`Module require failed: ${String(requireError)}`
|
|
1487
1569
|
);
|
|
1488
1570
|
if (typeof self.__original_webpack_require__ !== "function") {
|
|
@@ -1494,7 +1576,7 @@ function createModuleRequire(runtime) {
|
|
|
1494
1576
|
);
|
|
1495
1577
|
}
|
|
1496
1578
|
try {
|
|
1497
|
-
logDebug("
|
|
1579
|
+
logDebug("WebpackRuntime", "Falling back to original webpack require");
|
|
1498
1580
|
return self.__original_webpack_require__(id);
|
|
1499
1581
|
} catch (originalError) {
|
|
1500
1582
|
throw new RemoteComponentsError(
|
|
@@ -1506,7 +1588,41 @@ function createModuleRequire(runtime) {
|
|
|
1506
1588
|
};
|
|
1507
1589
|
}
|
|
1508
1590
|
|
|
1509
|
-
// src/
|
|
1591
|
+
// src/runtime/loaders/script-loader.ts
|
|
1592
|
+
async function loadScripts(scripts, resolveClientUrl) {
|
|
1593
|
+
await Promise.all(
|
|
1594
|
+
scripts.map((script) => {
|
|
1595
|
+
return new Promise((resolve, reject) => {
|
|
1596
|
+
const newSrc = new URL(
|
|
1597
|
+
// remove the remote component bundle name identifier from the script src
|
|
1598
|
+
script.src.replace(NEXT_BUNDLE_PATH_RE, "/_next/"),
|
|
1599
|
+
location.origin
|
|
1600
|
+
).href;
|
|
1601
|
+
const resolvedSrc = resolveClientUrl?.(newSrc) ?? newSrc;
|
|
1602
|
+
const newScript = document.createElement("script");
|
|
1603
|
+
newScript.onload = () => resolve();
|
|
1604
|
+
newScript.onerror = () => {
|
|
1605
|
+
const isProxied = isProxiedUrl(resolvedSrc);
|
|
1606
|
+
if (isProxied) {
|
|
1607
|
+
reject(failedProxiedAssetError("script", newSrc, resolvedSrc));
|
|
1608
|
+
} else {
|
|
1609
|
+
warnCrossOriginFetchError("ScriptLoader", newSrc);
|
|
1610
|
+
reject(
|
|
1611
|
+
new RemoteComponentsError(
|
|
1612
|
+
`Failed to load <script src="${newSrc}"> for Remote Component. Check the URL is correct.`
|
|
1613
|
+
)
|
|
1614
|
+
);
|
|
1615
|
+
}
|
|
1616
|
+
};
|
|
1617
|
+
newScript.src = resolvedSrc;
|
|
1618
|
+
newScript.async = true;
|
|
1619
|
+
document.head.appendChild(newScript);
|
|
1620
|
+
});
|
|
1621
|
+
})
|
|
1622
|
+
);
|
|
1623
|
+
}
|
|
1624
|
+
|
|
1625
|
+
// src/runtime/loaders/component-loader.ts
|
|
1510
1626
|
async function loadRemoteComponent({
|
|
1511
1627
|
url,
|
|
1512
1628
|
name,
|
|
@@ -1609,17 +1725,19 @@ async function loadRemoteComponent({
|
|
|
1609
1725
|
};
|
|
1610
1726
|
}
|
|
1611
1727
|
}
|
|
1612
|
-
async function
|
|
1613
|
-
let createFromReadableStream;
|
|
1728
|
+
async function importCreateFromReadableStream() {
|
|
1614
1729
|
try {
|
|
1615
|
-
const { createFromReadableStream
|
|
1616
|
-
createFromReadableStream
|
|
1730
|
+
const { createFromReadableStream } = await import("next/dist/compiled/react-server-dom-webpack/client.browser");
|
|
1731
|
+
return createFromReadableStream;
|
|
1617
1732
|
} catch {
|
|
1618
1733
|
const {
|
|
1619
|
-
default: { createFromReadableStream
|
|
1734
|
+
default: { createFromReadableStream }
|
|
1620
1735
|
} = await import("react-server-dom-webpack/client.browser");
|
|
1621
|
-
createFromReadableStream
|
|
1736
|
+
return createFromReadableStream;
|
|
1622
1737
|
}
|
|
1738
|
+
}
|
|
1739
|
+
async function loadRSCComponent(rscName, data) {
|
|
1740
|
+
const createFromReadableStream = await importCreateFromReadableStream();
|
|
1623
1741
|
if (typeof createFromReadableStream !== "function") {
|
|
1624
1742
|
throw new RemoteComponentsError(
|
|
1625
1743
|
'Failed to import "react-server-dom-webpack". Is Next.js installed correctly?'
|
|
@@ -1640,85 +1758,7 @@ function loadNextPagesComponent(bundle, route, nextData, name, container) {
|
|
|
1640
1758
|
return { component };
|
|
1641
1759
|
}
|
|
1642
1760
|
|
|
1643
|
-
// src/
|
|
1644
|
-
function withRemoteSrc(resolveClientUrl, remoteSrc) {
|
|
1645
|
-
const remoteOrigin = parseOrigin(remoteSrc);
|
|
1646
|
-
return (url) => {
|
|
1647
|
-
const urlOrigin = parseOrigin(url);
|
|
1648
|
-
if (remoteOrigin && urlOrigin && urlOrigin !== remoteOrigin) {
|
|
1649
|
-
return void 0;
|
|
1650
|
-
}
|
|
1651
|
-
return resolveClientUrl(remoteSrc, url);
|
|
1652
|
-
};
|
|
1653
|
-
}
|
|
1654
|
-
function parseOrigin(url) {
|
|
1655
|
-
try {
|
|
1656
|
-
return new URL(url).origin;
|
|
1657
|
-
} catch {
|
|
1658
|
-
return void 0;
|
|
1659
|
-
}
|
|
1660
|
-
}
|
|
1661
|
-
var proxyClientRequestsThroughHost = (remoteSrc, url) => {
|
|
1662
|
-
if (typeof location === "undefined") {
|
|
1663
|
-
return void 0;
|
|
1664
|
-
}
|
|
1665
|
-
const remoteOrigin = new URL(remoteSrc, location.href).origin;
|
|
1666
|
-
if (remoteOrigin === location.origin) {
|
|
1667
|
-
return void 0;
|
|
1668
|
-
}
|
|
1669
|
-
try {
|
|
1670
|
-
const parsed = new URL(url, location.href);
|
|
1671
|
-
if (parsed.origin === remoteOrigin) {
|
|
1672
|
-
return generateProtectedRcFallbackSrc(url);
|
|
1673
|
-
}
|
|
1674
|
-
} catch {
|
|
1675
|
-
}
|
|
1676
|
-
return void 0;
|
|
1677
|
-
};
|
|
1678
|
-
|
|
1679
|
-
// src/shared/client/set-attributes-from-props.ts
|
|
1680
|
-
var DOMAttributeNames = {
|
|
1681
|
-
acceptCharset: "accept-charset",
|
|
1682
|
-
className: "class",
|
|
1683
|
-
htmlFor: "for",
|
|
1684
|
-
httpEquiv: "http-equiv",
|
|
1685
|
-
noModule: "noModule"
|
|
1686
|
-
};
|
|
1687
|
-
var ignoreProps = [
|
|
1688
|
-
"onLoad",
|
|
1689
|
-
"onReady",
|
|
1690
|
-
"dangerouslySetInnerHTML",
|
|
1691
|
-
"children",
|
|
1692
|
-
"onError",
|
|
1693
|
-
"strategy",
|
|
1694
|
-
"stylesheets"
|
|
1695
|
-
];
|
|
1696
|
-
function isBooleanScriptAttribute(attr) {
|
|
1697
|
-
return ["async", "defer", "noModule"].includes(attr);
|
|
1698
|
-
}
|
|
1699
|
-
function setAttributesFromProps(el, props) {
|
|
1700
|
-
for (const [p, value] of Object.entries(props)) {
|
|
1701
|
-
if (!Object.hasOwn(props, p))
|
|
1702
|
-
continue;
|
|
1703
|
-
if (ignoreProps.includes(p))
|
|
1704
|
-
continue;
|
|
1705
|
-
if (value === void 0) {
|
|
1706
|
-
continue;
|
|
1707
|
-
}
|
|
1708
|
-
const attr = DOMAttributeNames[p] || p.toLowerCase();
|
|
1709
|
-
if (el.tagName === "SCRIPT" && isBooleanScriptAttribute(attr)) {
|
|
1710
|
-
el[attr] = Boolean(value);
|
|
1711
|
-
} else {
|
|
1712
|
-
el.setAttribute(attr, String(value));
|
|
1713
|
-
}
|
|
1714
|
-
if (value === false || el.tagName === "SCRIPT" && isBooleanScriptAttribute(attr) && (!value || value === "false")) {
|
|
1715
|
-
el.setAttribute(attr, "");
|
|
1716
|
-
el.removeAttribute(attr);
|
|
1717
|
-
}
|
|
1718
|
-
}
|
|
1719
|
-
}
|
|
1720
|
-
|
|
1721
|
-
// src/shared/client/static-loader.ts
|
|
1761
|
+
// src/runtime/loaders/static-loader.ts
|
|
1722
1762
|
async function importViaCallback(absoluteSrc, resolveClientUrl) {
|
|
1723
1763
|
const resolvedUrl = resolveClientUrl(absoluteSrc) ?? absoluteSrc;
|
|
1724
1764
|
const fetchUrl = new URL(resolvedUrl, location.href).href;
|
|
@@ -1868,101 +1908,35 @@ async function loadStaticRemoteComponent(scripts, url, resolveClientUrl) {
|
|
|
1868
1908
|
);
|
|
1869
1909
|
}
|
|
1870
1910
|
|
|
1871
|
-
// src/
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
stage: "idle",
|
|
1875
|
-
prevSrc: void 0,
|
|
1876
|
-
prevUrl: void 0,
|
|
1877
|
-
prevName: void 0,
|
|
1878
|
-
prevIsRemoteComponent: false,
|
|
1879
|
-
abortController: void 0
|
|
1880
|
-
};
|
|
1881
|
-
}
|
|
1882
|
-
|
|
1883
|
-
// src/shared/contract/resolve-name-from-src.ts
|
|
1884
|
-
function resolveNameFromSrc(src, defaultName) {
|
|
1885
|
-
if (!src) {
|
|
1886
|
-
return defaultName;
|
|
1887
|
-
}
|
|
1888
|
-
const hash = typeof src === "string" ? src : src.hash;
|
|
1889
|
-
const hashIndex = hash.indexOf("#");
|
|
1890
|
-
if (hashIndex < 0) {
|
|
1891
|
-
return defaultName;
|
|
1892
|
-
}
|
|
1893
|
-
const name = hash.slice(hashIndex + 1);
|
|
1894
|
-
return name || defaultName;
|
|
1895
|
-
}
|
|
1896
|
-
|
|
1897
|
-
// src/shared/ssr/fetch-headers.ts
|
|
1898
|
-
function remoteFetchHeaders() {
|
|
1899
|
-
return {
|
|
1900
|
-
/**
|
|
1901
|
-
* Authenticates deployment protection for the remote. Needed for SSR and SSG clients.
|
|
1902
|
-
* If the remote component uses vercel deployment protection, ensure the host and remote vercel
|
|
1903
|
-
* projects share a common automation bypass secret, and the shared secret is used as the
|
|
1904
|
-
* VERCEL_AUTOMATION_BYPASS_SECRET env var in the host project.
|
|
1905
|
-
*/
|
|
1906
|
-
...typeof process === "object" && typeof process.env === "object" && typeof process.env.VERCEL_AUTOMATION_BYPASS_SECRET === "string" ? {
|
|
1907
|
-
"x-vercel-protection-bypass": process.env.VERCEL_AUTOMATION_BYPASS_SECRET
|
|
1908
|
-
} : {},
|
|
1909
|
-
Accept: "text/html"
|
|
1910
|
-
};
|
|
1911
|
-
}
|
|
1911
|
+
// src/host/react/hooks/use-resolve-client-url.ts
|
|
1912
|
+
var import_react = require("react");
|
|
1913
|
+
var import_context = require("#internal/host/react/context");
|
|
1912
1914
|
|
|
1913
|
-
// src/
|
|
1914
|
-
|
|
1915
|
-
const
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
const signal = abortController.signal;
|
|
1921
|
-
const hookOptions = {
|
|
1922
|
-
signal,
|
|
1923
|
-
abort: (reason) => abortController.abort(reason)
|
|
1924
|
-
};
|
|
1925
|
-
const init = {
|
|
1926
|
-
method: "GET",
|
|
1927
|
-
headers: remoteFetchHeaders(),
|
|
1928
|
-
signal,
|
|
1929
|
-
...additionalInit
|
|
1930
|
-
};
|
|
1931
|
-
let res = await onRequest?.(url, init, hookOptions);
|
|
1932
|
-
if (!res) {
|
|
1933
|
-
try {
|
|
1934
|
-
res = await fetch(url, init);
|
|
1935
|
-
} catch (error) {
|
|
1936
|
-
warnCrossOriginFetchError("FetchRemoteComponent", url);
|
|
1937
|
-
throw error;
|
|
1915
|
+
// src/runtime/url/resolve-client-url.ts
|
|
1916
|
+
function withRemoteSrc(resolveClientUrl, remoteSrc) {
|
|
1917
|
+
const remoteOrigin = parseOrigin(remoteSrc);
|
|
1918
|
+
return (url) => {
|
|
1919
|
+
const urlOrigin = parseOrigin(url);
|
|
1920
|
+
if (remoteOrigin && urlOrigin && urlOrigin !== remoteOrigin) {
|
|
1921
|
+
return void 0;
|
|
1938
1922
|
}
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
if (transformedRes) {
|
|
1942
|
-
res = transformedRes;
|
|
1943
|
-
}
|
|
1944
|
-
return res;
|
|
1923
|
+
return resolveClientUrl(remoteSrc, url);
|
|
1924
|
+
};
|
|
1945
1925
|
}
|
|
1946
|
-
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
return new URL(fallback);
|
|
1926
|
+
function parseOrigin(url) {
|
|
1927
|
+
try {
|
|
1928
|
+
return new URL(url).origin;
|
|
1929
|
+
} catch {
|
|
1930
|
+
return void 0;
|
|
1952
1931
|
}
|
|
1953
|
-
return typeof src === "string" ? new URL(src, fallback) : src;
|
|
1954
1932
|
}
|
|
1955
1933
|
|
|
1956
|
-
// src/
|
|
1957
|
-
var import_react = require("react");
|
|
1958
|
-
var import_context = require("#internal/react/context");
|
|
1959
|
-
|
|
1960
|
-
// src/shared/client/default-resolve-client-url.ts
|
|
1934
|
+
// src/runtime/url/default-resolve-client-url.ts
|
|
1961
1935
|
function bindResolveClientUrl(prop, remoteSrc) {
|
|
1962
1936
|
return prop ? withRemoteSrc(prop, remoteSrc) : void 0;
|
|
1963
1937
|
}
|
|
1964
1938
|
|
|
1965
|
-
// src/react/hooks/use-resolve-client-url.ts
|
|
1939
|
+
// src/host/react/hooks/use-resolve-client-url.ts
|
|
1966
1940
|
function useResolveClientUrl(prop, urlHref) {
|
|
1967
1941
|
const { resolveClientUrl: contextValue } = (0, import_context.useRemoteComponentsContext)();
|
|
1968
1942
|
const resolveClientUrl = prop ?? contextValue;
|
|
@@ -1972,7 +1946,7 @@ function useResolveClientUrl(prop, urlHref) {
|
|
|
1972
1946
|
);
|
|
1973
1947
|
}
|
|
1974
1948
|
|
|
1975
|
-
// src/react/hooks/use-shadow-root.ts
|
|
1949
|
+
// src/host/react/hooks/use-shadow-root.ts
|
|
1976
1950
|
var import_react2 = require("react");
|
|
1977
1951
|
function useShadowRoot({
|
|
1978
1952
|
isolate,
|
|
@@ -2021,7 +1995,7 @@ function useShadowRoot({
|
|
|
2021
1995
|
return { shadowRoot, shadowRootContainerRef };
|
|
2022
1996
|
}
|
|
2023
1997
|
|
|
2024
|
-
// src/react/utils/extract-remote-html.ts
|
|
1998
|
+
// src/host/react/utils/extract-remote-html.ts
|
|
2025
1999
|
var DUMMY_FALLBACK = "http://remote-components-dummy-fallback";
|
|
2026
2000
|
function getRemoteComponentHtml(html) {
|
|
2027
2001
|
if (typeof document === "undefined")
|
|
@@ -2043,14 +2017,13 @@ function getRemoteComponentHtml(html) {
|
|
|
2043
2017
|
return "";
|
|
2044
2018
|
}
|
|
2045
2019
|
|
|
2046
|
-
// src/react/index.tsx
|
|
2047
|
-
var import_context2 = require("#internal/react/context");
|
|
2020
|
+
// src/host/react/index.tsx
|
|
2048
2021
|
var import_jsx_runtime2 = (
|
|
2049
2022
|
// TODO: remove wrapper div by converting HTML to RSC or React tree
|
|
2050
2023
|
require("react/jsx-runtime")
|
|
2051
2024
|
);
|
|
2052
2025
|
var import_react4 = require("react");
|
|
2053
|
-
function
|
|
2026
|
+
function ConsumeRemoteComponent({
|
|
2054
2027
|
src,
|
|
2055
2028
|
isolate,
|
|
2056
2029
|
mode = "open",
|
|
@@ -2072,7 +2045,9 @@ function RemoteComponent({
|
|
|
2072
2045
|
() => resolveNameFromSrc(src, nameProp),
|
|
2073
2046
|
[src, nameProp]
|
|
2074
2047
|
);
|
|
2075
|
-
const [data, setData] = (0, import_react3.useState)(
|
|
2048
|
+
const [data, setData] = (0, import_react3.useState)(
|
|
2049
|
+
null
|
|
2050
|
+
);
|
|
2076
2051
|
const url = (0, import_react3.useMemo)(() => getClientOrServerUrl(src, DUMMY_FALLBACK), [src]);
|
|
2077
2052
|
const resolveClientUrl = useResolveClientUrl(_resolveClientUrl, url.href);
|
|
2078
2053
|
const id = url.origin === (typeof location !== "undefined" ? location.origin : DUMMY_FALLBACK) ? url.pathname : url.href;
|
|
@@ -2289,11 +2264,10 @@ function RemoteComponent({
|
|
|
2289
2264
|
});
|
|
2290
2265
|
self.__next_s = prevNextScripts;
|
|
2291
2266
|
}
|
|
2292
|
-
|
|
2267
|
+
const rscName = rsc ? `__remote_component_rsc_${escapeString(id)}_${escapeString(
|
|
2268
|
+
remoteName
|
|
2269
|
+
)}` : void 0;
|
|
2293
2270
|
if (rsc) {
|
|
2294
|
-
rscName = `__remote_component_rsc_${escapeString(
|
|
2295
|
-
id
|
|
2296
|
-
)}_${escapeString(remoteName)}`;
|
|
2297
2271
|
rsc.textContent = rsc.textContent?.replace(
|
|
2298
2272
|
new RegExp(`self\\["${remoteName}"\\]`, "g"),
|
|
2299
2273
|
`self["${rscName}"]`
|
|
@@ -2332,10 +2306,7 @@ function RemoteComponent({
|
|
|
2332
2306
|
}
|
|
2333
2307
|
setData(newData);
|
|
2334
2308
|
if (shadowRoot) {
|
|
2335
|
-
|
|
2336
|
-
if (reset) {
|
|
2337
|
-
shadowRootHtml = `<style data-remote-components-reset="">:host { all: initial; }</style>${shadowRootHtml}`;
|
|
2338
|
-
}
|
|
2309
|
+
const shadowRootHtml = reset ? `<style data-remote-components-reset="">:host { all: initial; }</style>${component.innerHTML}` : component.innerHTML;
|
|
2339
2310
|
shadowRoot.innerHTML = shadowRootHtml;
|
|
2340
2311
|
htmlRef.current = null;
|
|
2341
2312
|
setRemoteComponent(null);
|
|
@@ -2403,7 +2374,7 @@ function RemoteComponent({
|
|
|
2403
2374
|
};
|
|
2404
2375
|
}),
|
|
2405
2376
|
shared: {
|
|
2406
|
-
...sharedPolyfills(userShared),
|
|
2377
|
+
...sharedPolyfills(userShared, resolveClientUrl),
|
|
2407
2378
|
...userShared
|
|
2408
2379
|
},
|
|
2409
2380
|
remoteShared,
|
|
@@ -2575,8 +2546,6 @@ function RemoteComponent({
|
|
|
2575
2546
|
}
|
|
2576
2547
|
// Annotate the CommonJS export names for ESM import in node:
|
|
2577
2548
|
0 && (module.exports = {
|
|
2578
|
-
|
|
2579
|
-
RemoteComponentsProvider,
|
|
2580
|
-
proxyClientRequestsThroughHost
|
|
2549
|
+
ConsumeRemoteComponent
|
|
2581
2550
|
});
|
|
2582
|
-
//# sourceMappingURL=
|
|
2551
|
+
//# sourceMappingURL=react.cjs.map
|