remote-components 0.4.8 → 0.4.10

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.
Files changed (94) hide show
  1. package/dist/{chunk-JZRA6DPE.js → chunk-3PR3SWYZ.js} +7 -54
  2. package/dist/chunk-3PR3SWYZ.js.map +1 -0
  3. package/dist/{chunk-I7VKDF3E.cjs → chunk-6PZEDIAK.cjs} +5 -52
  4. package/dist/chunk-6PZEDIAK.cjs.map +1 -0
  5. package/dist/{chunk-FF4SXSSG.js → chunk-GR5FN73U.js} +3 -3
  6. package/dist/{chunk-EW5O3Q24.cjs → chunk-HZP4FWPG.cjs} +23 -23
  7. package/dist/{chunk-EW5O3Q24.cjs.map → chunk-HZP4FWPG.cjs.map} +1 -1
  8. package/dist/{chunk-WGSS7TJP.js → chunk-M6ACTSVB.js} +2 -2
  9. package/dist/{chunk-VJO4PTWG.js → chunk-N6AJM72A.js} +6 -6
  10. package/dist/chunk-N6AJM72A.js.map +1 -0
  11. package/dist/{chunk-O4ED3BUP.cjs → chunk-OSSMJQFE.cjs} +19 -19
  12. package/dist/{chunk-YJJFRORQ.cjs → chunk-PCHSF5LH.cjs} +315 -74
  13. package/dist/chunk-PCHSF5LH.cjs.map +1 -0
  14. package/dist/{chunk-KCUEMMYL.js → chunk-RHRDUJ3K.js} +3 -3
  15. package/dist/{chunk-KAFPXSRI.cjs → chunk-RZ224NSH.cjs} +18 -18
  16. package/dist/{chunk-STMO56U2.js → chunk-VFK4HGZT.js} +264 -23
  17. package/dist/chunk-VFK4HGZT.js.map +1 -0
  18. package/dist/{chunk-4MLJE6UP.cjs → chunk-XWRB6CEA.cjs} +3 -3
  19. package/dist/config/nextjs.cjs +5 -5
  20. package/dist/config/nextjs.cjs.map +1 -1
  21. package/dist/config/nextjs.js +1 -1
  22. package/dist/config/nextjs.js.map +1 -1
  23. package/dist/host/html.cjs +19 -19
  24. package/dist/host/html.js +7 -7
  25. package/dist/host/nextjs/app/client-only.cjs +11 -11
  26. package/dist/host/nextjs/app/client-only.js +6 -6
  27. package/dist/host/nextjs/pages/client-only.cjs +42 -24
  28. package/dist/host/nextjs/pages/client-only.cjs.map +1 -1
  29. package/dist/host/nextjs/pages/client-only.d.ts +1 -1
  30. package/dist/host/nextjs/pages/client-only.js +42 -24
  31. package/dist/host/nextjs/pages/client-only.js.map +1 -1
  32. package/dist/host/react.cjs +7 -7
  33. package/dist/host/react.js +6 -6
  34. package/dist/internal/config/webpack/apply-shared-modules.cjs +8 -0
  35. package/dist/internal/config/webpack/apply-shared-modules.cjs.map +1 -1
  36. package/dist/internal/config/webpack/apply-shared-modules.d.ts +6 -1
  37. package/dist/internal/config/webpack/apply-shared-modules.js +10 -0
  38. package/dist/internal/config/webpack/apply-shared-modules.js.map +1 -1
  39. package/dist/internal/config/webpack/provider-adapter.cjs +85 -0
  40. package/dist/internal/config/webpack/provider-adapter.cjs.map +1 -0
  41. package/dist/internal/config/webpack/provider-adapter.d.ts +7 -0
  42. package/dist/internal/config/webpack/provider-adapter.js +64 -0
  43. package/dist/internal/config/webpack/provider-adapter.js.map +1 -0
  44. package/dist/internal/config/webpack/shared-module-resolver.cjs +73 -0
  45. package/dist/internal/config/webpack/shared-module-resolver.cjs.map +1 -0
  46. package/dist/internal/config/webpack/shared-module-resolver.d.ts +35 -0
  47. package/dist/internal/config/webpack/shared-module-resolver.js +50 -0
  48. package/dist/internal/config/webpack/shared-module-resolver.js.map +1 -0
  49. package/dist/internal/host/shared/provider.cjs +188 -0
  50. package/dist/internal/host/shared/provider.cjs.map +1 -0
  51. package/dist/internal/host/shared/provider.d.ts +71 -0
  52. package/dist/internal/host/shared/provider.js +161 -0
  53. package/dist/internal/host/shared/provider.js.map +1 -0
  54. package/dist/internal/host/shared/shared-broker.cjs +0 -30
  55. package/dist/internal/host/shared/shared-broker.cjs.map +1 -1
  56. package/dist/internal/host/shared/shared-broker.d.ts +1 -7
  57. package/dist/internal/host/shared/shared-broker.js +0 -29
  58. package/dist/internal/host/shared/shared-broker.js.map +1 -1
  59. package/dist/internal/host/shared/shared-module-resolver.cjs +7 -29
  60. package/dist/internal/host/shared/shared-module-resolver.cjs.map +1 -1
  61. package/dist/internal/host/shared/shared-module-resolver.d.ts +13 -34
  62. package/dist/internal/host/shared/shared-module-resolver.js +5 -29
  63. package/dist/internal/host/shared/shared-module-resolver.js.map +1 -1
  64. package/dist/internal/runtime/loaders/component-loader.cjs +3 -2
  65. package/dist/internal/runtime/loaders/component-loader.cjs.map +1 -1
  66. package/dist/internal/runtime/loaders/component-loader.js +2 -4
  67. package/dist/internal/runtime/loaders/component-loader.js.map +1 -1
  68. package/dist/internal/runtime/turbopack/shared-modules.cjs +13 -19
  69. package/dist/internal/runtime/turbopack/shared-modules.cjs.map +1 -1
  70. package/dist/internal/runtime/turbopack/shared-modules.js +17 -21
  71. package/dist/internal/runtime/turbopack/shared-modules.js.map +1 -1
  72. package/dist/{turbopack-XDIGB4GI.js → turbopack-6BSS3SYN.js} +5 -5
  73. package/dist/turbopack-6BSS3SYN.js.map +1 -0
  74. package/dist/{turbopack-RXVSOWF7.cjs → turbopack-UMJ7SLJL.cjs} +12 -12
  75. package/dist/{turbopack-RXVSOWF7.cjs.map → turbopack-UMJ7SLJL.cjs.map} +1 -1
  76. package/dist/{webpack-3QXPAZN4.js → webpack-4QYGIVE6.js} +9 -7
  77. package/dist/webpack-4QYGIVE6.js.map +1 -0
  78. package/dist/{webpack-HKD7RZRE.cjs → webpack-65BVWX2U.cjs} +13 -11
  79. package/dist/webpack-65BVWX2U.cjs.map +1 -0
  80. package/package.json +1 -1
  81. package/dist/chunk-I7VKDF3E.cjs.map +0 -1
  82. package/dist/chunk-JZRA6DPE.js.map +0 -1
  83. package/dist/chunk-STMO56U2.js.map +0 -1
  84. package/dist/chunk-VJO4PTWG.js.map +0 -1
  85. package/dist/chunk-YJJFRORQ.cjs.map +0 -1
  86. package/dist/turbopack-XDIGB4GI.js.map +0 -1
  87. package/dist/webpack-3QXPAZN4.js.map +0 -1
  88. package/dist/webpack-HKD7RZRE.cjs.map +0 -1
  89. /package/dist/{chunk-FF4SXSSG.js.map → chunk-GR5FN73U.js.map} +0 -0
  90. /package/dist/{chunk-WGSS7TJP.js.map → chunk-M6ACTSVB.js.map} +0 -0
  91. /package/dist/{chunk-O4ED3BUP.cjs.map → chunk-OSSMJQFE.cjs.map} +0 -0
  92. /package/dist/{chunk-KCUEMMYL.js.map → chunk-RHRDUJ3K.js.map} +0 -0
  93. /package/dist/{chunk-KAFPXSRI.cjs.map → chunk-RZ224NSH.cjs.map} +0 -0
  94. /package/dist/{chunk-4MLJE6UP.cjs.map → chunk-XWRB6CEA.cjs.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/host/server/fetch-with-hooks.ts","../src/host/server/get-client-or-server-url.ts","../src/host/shared/lifecycle.ts","../src/runtime/rsc.ts","../src/runtime/html/html-spec.ts","../src/runtime/html/rewrite-srcset.ts","../src/runtime/html/apply-origin.ts","../src/runtime/metadata.ts","../src/runtime/html/parse-remote-html.ts","../src/runtime/loaders/component-loader.ts","../src/runtime/rsc-imports.ts","../src/host/shared/pipeline.ts","../src/host/shared/state.ts","../src/host/utils/resolve-name-from-src.ts","../src/runtime/url/resolve-client-url.ts","../src/runtime/url/default-resolve-client-url.ts"],"sourcesContent":["import type {\n HookOptions,\n OnRequestHook,\n OnResponseHook,\n} from '#internal/host/shared/fetch-interceptors';\nimport { warnCrossOriginFetchError } from '#internal/utils/logger';\nimport { remoteFetchHeaders } from './fetch-headers';\n\n/**\n * Options for fetching with request/response hooks.\n */\ninterface FetchWithHooksOptions {\n /** Hook to intercept the request before fetching */\n onRequest?: OnRequestHook;\n /** Hook to process the response after fetching */\n onResponse?: OnResponseHook;\n /** AbortController to cancel loading - aborts will throw AbortError */\n abortController?: AbortController;\n}\n\n/**\n * Performs a fetch with optional request and response lifecycle hooks.\n *\n * This utility centralizes the logic for:\n * 1. Calling onRequest hook - if it returns a Response, use it instead of fetching\n * 2. Performing the actual fetch if onRequest didn't provide a response\n * 3. Calling onResponse hook - if it returns a Response, use that transformed response\n *\n * Hooks receive an AbortSignal and abort function to cancel loading at any point.\n * When aborted, throws AbortError (DOMException with name 'AbortError').\n *\n * @param url - The URL to fetch\n * @param init - The fetch init options\n * @param options - Optional hooks for request/response interception and AbortController\n * @returns The response (never null - throws on abort)\n * @throws DOMException with name 'AbortError' if loading is aborted\n *\n * @example\n * const controller = new AbortController();\n * try {\n * const response = await fetchWithHooks(url, fetchInit, {\n * abortController: controller,\n * onResponse: async (url, response, { abort }) => {\n * if (response.redirected) {\n * abort(); // Throws AbortError\n * }\n * },\n * });\n * } catch (error) {\n * if (error.name === 'AbortError') {\n * console.log('Loading was aborted');\n * }\n * }\n */\nasync function fetchWithWarning(\n url: URL,\n init: RequestInit,\n): Promise<Response> {\n try {\n return await fetch(url, init);\n } catch (error) {\n warnCrossOriginFetchError('FetchRemoteComponent', url);\n throw error;\n }\n}\n\nexport async function fetchWithHooks(\n url: URL,\n additionalInit: {\n credentials?: RequestCredentials;\n next?: {\n tags?: string[];\n };\n },\n options: FetchWithHooksOptions = {},\n): Promise<Response> {\n const {\n onRequest,\n onResponse,\n abortController = new AbortController(),\n } = options;\n const signal = abortController.signal;\n\n const hookOptions: HookOptions = {\n signal,\n abort: (reason?: unknown) => abortController.abort(reason),\n };\n\n // Include signal in fetch init for reactive abort support\n const init: RequestInit = {\n method: 'GET',\n headers: remoteFetchHeaders(),\n signal,\n ...additionalInit,\n };\n\n // Call onRequest hook if provided - may return a Response to skip fetching\n const res =\n (await onRequest?.(url, init, hookOptions)) ??\n (await fetchWithWarning(url, init));\n\n // Call onResponse hook if provided - may return a transformed Response\n return (await onResponse?.(url, res, hookOptions)) ?? res;\n}\n","export function getClientOrServerUrl(\n src: string | URL | undefined,\n serverFallback: string,\n): URL {\n const fallback =\n typeof location !== 'undefined' ? location.href : serverFallback;\n\n if (!src) {\n return new URL(fallback);\n }\n\n return typeof src === 'string' ? new URL(src, fallback) : src;\n}\n","import type { ChangeInfo, ConsumeLifecycleCallbacks } from './config';\n\n/**\n * Unified lifecycle event emitter used by the host loading pipeline.\n *\n * Hosts create an emitter that matches their eventing model — React hosts\n * wrap callback props via {@link makeReactEmitter}, while the HTML custom\n * element dispatches DOM events via {@link makeEventEmitter}. The pipeline\n * calls emitter methods at the appropriate phases without knowing which\n * host is driving the load.\n */\nexport interface LifecycleEmitter {\n beforeLoad(src: string | URL): void;\n load(src: string | URL): void;\n error(error: unknown, src?: string | URL): void;\n change(info: ChangeInfo): void;\n}\n\n/**\n * Wraps React-style callback props into a {@link LifecycleEmitter}.\n *\n * Missing callbacks are silently ignored — this is the normal case for\n * hosts that only subscribe to a subset of events.\n */\nexport function makeReactEmitter(\n callbacks: ConsumeLifecycleCallbacks,\n): LifecycleEmitter {\n return {\n beforeLoad(src) {\n callbacks.onBeforeLoad?.(src);\n },\n load(src) {\n callbacks.onLoad?.(src);\n },\n error(error, _src?) {\n callbacks.onError?.(error);\n },\n change(info) {\n callbacks.onChange?.(info);\n },\n };\n}\n\n/**\n * Wraps a DOM element into a {@link LifecycleEmitter} by dispatching\n * `CustomEvent`s with `bubbles: true` and `composed: true` (crosses\n * Shadow DOM boundaries).\n */\nexport function makeEventEmitter(element: HTMLElement): LifecycleEmitter {\n function dispatch(\n type: 'beforeload' | 'load' | 'error' | 'change',\n detail?: Record<string, unknown>,\n ) {\n const event = new Event(type, { bubbles: true, composed: true });\n if (detail) {\n Object.assign(event, detail);\n }\n element.dispatchEvent(event);\n }\n\n return {\n beforeLoad(src) {\n dispatch('beforeload', { src });\n },\n load(src) {\n dispatch('load', { src });\n },\n error(error, src?) {\n dispatch('error', src != null ? { error, src } : { error });\n },\n change(info) {\n dispatch('change', info as unknown as Record<string, unknown>);\n },\n };\n}\n","import { ReadableStream } from 'web-streams-polyfill';\n\n/**\n * Fixes RSC payload arrays to be compatible with React JSX development runtime.\n * React elements in the wire format are 4-element arrays (`['$', type, key, props]`);\n * the dev runtime expects 7 elements with debug info in positions 4-6.\n */\nexport function fixPayload(payload: unknown): void {\n if (Array.isArray(payload)) {\n if (payload[0] === '$') {\n // React element — fix props recursively, then pad to 7 elements\n fixPayload(payload[3]);\n if (payload.length === 4) {\n payload.push(null, null, 1);\n }\n } else {\n for (const item of payload) {\n fixPayload(item);\n }\n }\n } else if (typeof payload === 'object' && payload !== null) {\n for (const key in payload) {\n fixPayload((payload as Record<string, unknown>)[key]);\n }\n }\n}\n\n/**\n * Parses raw RSC script chunks (the `self[\"name\"].push(\"...\")` format produced\n * by `<RemoteComponentData>`) into a flat array of flight-data strings.\n *\n * This is a pure function — it reads from `data` only, never from `globalThis`.\n */\nexport function buildRSCChunks(rscName: string, data: string[]): string[] {\n const chunks: string[] = [];\n\n for (const chunk of data) {\n for (const line of chunk.split('\\n')) {\n const match = /\\.push\\(\"(?<rsc>.*)\"\\);$/.exec(line);\n if (match?.groups?.rsc) {\n chunks.push(JSON.parse(`\"${match.groups.rsc}\"`) as string);\n }\n }\n }\n\n return chunks;\n}\n\n/**\n * Processes RSC flight data and creates a ReadableStream.\n *\n * First checks `data` for inline script chunks (parsed via {@link buildRSCChunks}),\n * merging them onto `globalThis[rscName]`. Then consumes the global array\n * (or falls back to an empty RSC payload) and pipes fixed chunks into the stream.\n */\nexport function createRSCStream(\n rscName: string,\n data: string[],\n): ReadableStream<Uint8Array> {\n return new ReadableStream({\n type: 'bytes',\n start(controller) {\n const encoder = new TextEncoder();\n const self = globalThis as typeof globalThis &\n Record<string, string[] | null>;\n\n // Parse inline script chunks and merge onto the global array\n if (data.length > 0) {\n const parsed = buildRSCChunks(rscName, data);\n if (parsed.length > 0) {\n self[rscName] = self[rscName] ?? [];\n self[rscName].push(...parsed);\n }\n }\n\n // Consume the global RSC flight data, falling back to an empty payload\n const allChunks = (self[rscName] ?? [`0:[null]\\n`]).join('');\n self[rscName] = null;\n\n // Process each line in the RSC flight data\n allChunks.split('\\n').forEach((chunk) => {\n if (chunk.length > 0) {\n const { before, id, prefix, payload } =\n /^(?<before>[^:]*?)?(?<id>[0-9a-zA-Z]+):(?<prefix>[A-Z])?(?<payload>\\[.*\\])/.exec(\n chunk,\n )?.groups ?? {};\n\n if (payload) {\n const jsonPayload = JSON.parse(payload) as unknown[];\n fixPayload(jsonPayload);\n const reconstruct = `${before ?? ''}${id}:${prefix ?? ''}${JSON.stringify(jsonPayload)}`;\n controller.enqueue(encoder.encode(`${reconstruct}\\n`));\n } else {\n controller.enqueue(encoder.encode(`${chunk}\\n`));\n }\n } else {\n controller.enqueue(encoder.encode(`${chunk}\\n`));\n }\n });\n controller.close();\n },\n });\n}\n","/**\n * Pure constants for HTML element names, data attributes, and ID suffixes\n * used across both server-side (parse5) and browser (DOM) HTML processing.\n *\n * No imports, no runtime code — safe to use in any context.\n */\n\n/** Elements whose `src`, `href`, `srcset`, and `imagesrcset` need origin rewriting. */\nexport const ORIGIN_REWRITE_TAGS = [\n 'img',\n 'source',\n 'video',\n 'audio',\n 'track',\n 'iframe',\n 'embed',\n 'script',\n 'link',\n] as const;\n\n// ID suffixes appended to the component name to form element IDs.\nexport const ID_SUFFIX_RSC = '_rsc';\nexport const ID_SUFFIX_SSR = '_ssr';\nexport const ID_SUFFIX_SHARED = '_shared';\nexport const ID_SUFFIX_SHARED_MANIFEST = '_shared_manifest';\n\n// Data attributes written on the remote component wrapper element.\nexport const DATA_BUNDLE = 'data-bundle';\nexport const DATA_ROUTE = 'data-route';\nexport const DATA_RUNTIME = 'data-runtime';\nexport const DATA_TYPE = 'data-type';\nexport const DATA_SRC = 'data-src';\nexport const DATA_REMOTE_COMPONENTS_SHARED = 'data-remote-components-shared';\nexport const DATA_REMOTE_COMPONENTS_SHARED_MANIFEST =\n 'data-remote-components-shared-manifest';\n\n// Well-known element identifiers.\nexport const TAG_REMOTE_COMPONENT = 'remote-component';\nexport const NEXT_DATA_ID = '__NEXT_DATA__';\nexport const REMOTE_NEXT_DATA_ID = '__REMOTE_NEXT_DATA__';\nexport const NEXT_CONTAINER_ID = '__next';\n","/**\n * Rewrites relative URLs in an HTML `srcset` or `imagesrcset` attribute value\n * to absolute URLs. Works identically in server (parse5) and browser (DOM) contexts.\n *\n * @param srcset - The raw srcset attribute value (comma-separated entries).\n * @param base - Base URL or origin to resolve relative URLs against.\n * @param resolve - Optional callback applied to each absolute URL (e.g. to proxy through a CDN).\n * @returns The rewritten srcset string with absolute (and optionally resolved) URLs.\n */\nexport function rewriteSrcset(\n srcset: string,\n base: URL | string,\n resolve?: (absoluteUrl: string) => string,\n): string {\n return srcset\n .split(',')\n .map((entry) => {\n const [url, descriptor] = entry.trim().split(/\\s+/);\n if (!url) return entry;\n\n const absoluteUrl = new URL(url, base).href;\n const resolvedUrl = resolve ? resolve(absoluteUrl) : absoluteUrl;\n return descriptor ? `${resolvedUrl} ${descriptor}` : resolvedUrl;\n })\n .join(', ');\n}\n","import type { InternalResolveClientUrl } from '#internal/host/server/types';\nimport { ORIGIN_REWRITE_TAGS } from './html-spec';\nimport { rewriteSrcset } from './rewrite-srcset';\n\nexport function applyOriginToNodes(\n doc: Document | HTMLElement,\n url: URL,\n resolveClientUrl?: InternalResolveClientUrl,\n) {\n if (url.origin !== location.origin) {\n const nodes = doc.querySelectorAll<HTMLImageElement>(\n ORIGIN_REWRITE_TAGS.map(\n (type) =>\n `${type}[src],${type}[srcset],${type}[href],${type}[imagesrcset]`,\n ).join(','),\n );\n nodes.forEach((node) => {\n if (\n node.hasAttribute('src') &&\n /^[./]+\\/?/.test(node.getAttribute('src') ?? '')\n ) {\n const absoluteSrc = new URL(node.getAttribute('src') ?? '/', url).href;\n // Script elements are handled by the loaders (script-loader, static-loader)\n // which apply the callback themselves. Only apply it here for non-script elements.\n const isScript = node.tagName.toLowerCase() === 'script';\n node.src = isScript\n ? absoluteSrc\n : (resolveClientUrl?.(absoluteSrc) ?? absoluteSrc);\n }\n if (\n node.hasAttribute('href') &&\n /^[./]+\\/?/.test(node.getAttribute('href') ?? '')\n ) {\n const absoluteHref = new URL(node.getAttribute('href') ?? '/', url)\n .href;\n node.setAttribute(\n 'href',\n resolveClientUrl?.(absoluteHref) ?? absoluteHref,\n );\n }\n if (node.hasAttribute('srcset')) {\n const raw = node.getAttribute('srcset');\n if (raw) {\n const resolve = resolveClientUrl\n ? (abs: string) => resolveClientUrl(abs) ?? abs\n : undefined;\n node.setAttribute('srcset', rewriteSrcset(raw, url, resolve));\n }\n }\n if (node.hasAttribute('imagesrcset')) {\n const raw = node.getAttribute('imagesrcset');\n if (raw) {\n const resolve = resolveClientUrl\n ? (abs: string) => resolveClientUrl(abs) ?? abs\n : undefined;\n node.setAttribute('imagesrcset', rewriteSrcset(raw, url, resolve));\n }\n }\n });\n }\n}\n","import {\n DEFAULT_BUNDLE_NAME,\n DEFAULT_COMPONENT_NAME,\n DEFAULT_ROUTE,\n} from '#internal/runtime/constants';\n\n/**\n * Metadata embedded in the HTML response by a remote application.\n *\n * Extracted from a `<script type=\"application/json\" data-remote-component>`\n * element during both SSR parsing ({@link fetchRemoteComponent}) and\n * client-side parsing ({@link parseRemoteComponentDocument}).\n */\nexport interface RemoteComponentMetadata {\n name: string;\n bundle: string;\n route: string;\n runtime: 'webpack' | 'turbopack' | 'script';\n id: string;\n type: 'nextjs' | 'remote-component' | 'unknown';\n}\n\n/**\n * Raw attribute values before defaults are applied. Accepts nullable strings\n * so callers can pass DOM attributes or parsed JSON directly.\n */\nexport interface RawMetadataAttrs {\n name?: string | null;\n bundle?: string | null;\n route?: string | null;\n runtime?: string | null;\n id?: string | null;\n type?: string | null;\n}\n\nconst VALID_RUNTIMES: Set<string> = new Set(['webpack', 'turbopack', 'script']);\nconst VALID_TYPES: Set<string> = new Set([\n 'nextjs',\n 'remote-component',\n 'unknown',\n]);\n\nfunction isRuntime(value: string): value is RemoteComponentMetadata['runtime'] {\n return VALID_RUNTIMES.has(value);\n}\n\nfunction isComponentType(\n value: string,\n): value is RemoteComponentMetadata['type'] {\n return VALID_TYPES.has(value);\n}\n\nfunction toRuntime(\n value: string | null | undefined,\n): RemoteComponentMetadata['runtime'] {\n return value && isRuntime(value) ? value : 'webpack';\n}\n\nfunction toComponentType(\n value: string | null | undefined,\n): RemoteComponentMetadata['type'] {\n return value && isComponentType(value) ? value : 'unknown';\n}\n\n/**\n * Applies default values to raw metadata attributes and returns a fully\n * resolved {@link RemoteComponentMetadata}. When no bundle is provided, falls\n * back to the `NEXT_PUBLIC_MFE_CURRENT_APPLICATION` env var (the host's\n * application name), then `DEFAULT_BUNDLE_NAME`.\n */\nexport function buildMetadata(\n attrs: RawMetadataAttrs,\n url: URL,\n): RemoteComponentMetadata {\n const id = attrs.id || DEFAULT_COMPONENT_NAME;\n const bundle =\n attrs.bundle ||\n process.env.NEXT_PUBLIC_MFE_CURRENT_APPLICATION ||\n DEFAULT_BUNDLE_NAME;\n return {\n name: attrs.name || id.replace(/_ssr$/, ''),\n bundle,\n route: attrs.route || url.pathname || DEFAULT_ROUTE,\n runtime: toRuntime(attrs.runtime),\n id,\n type: toComponentType(attrs.type),\n };\n}\n","import type { NextData } from '#internal/host/server/types';\nimport type { RemoteSharedModules } from '#internal/host/shared/shared-broker';\nimport {\n DEFAULT_COMPONENT_NAME,\n RUNTIME_SCRIPT,\n} from '#internal/runtime/constants';\nimport {\n buildMetadata,\n type RemoteComponentMetadata,\n} from '#internal/runtime/metadata';\nimport {\n multipleRemoteComponentsError,\n RemoteComponentsError,\n} from '#internal/utils/error';\nimport {\n DATA_BUNDLE,\n DATA_REMOTE_COMPONENTS_SHARED,\n DATA_REMOTE_COMPONENTS_SHARED_MANIFEST,\n DATA_ROUTE,\n DATA_RUNTIME,\n DATA_SRC,\n DATA_TYPE,\n ID_SUFFIX_RSC,\n ID_SUFFIX_SHARED,\n ID_SUFFIX_SHARED_MANIFEST,\n ID_SUFFIX_SSR,\n NEXT_CONTAINER_ID,\n NEXT_DATA_ID,\n REMOTE_NEXT_DATA_ID,\n TAG_REMOTE_COMPONENT,\n} from './html-spec';\n\nexport interface ParsedRemoteComponent {\n /** The DOM element representing the remote component content. */\n component: Element;\n /** Resolved name of the remote component (with _ssr suffix stripped). */\n name: string;\n /** Whether the component is a <remote-component> custom element. */\n isRemoteComponent: boolean;\n /** Component metadata: bundle, route, runtime. */\n metadata: RemoteComponentMetadata;\n /** Parsed __NEXT_DATA__ or __REMOTE_NEXT_DATA__, or null. */\n nextData: NextData | null;\n /** The RSC flight data script element, or null. */\n rsc: Element | null;\n /** Shared module manifest or compatibility map extracted from the document. */\n remoteShared: RemoteSharedModules;\n /** Link elements extracted from the document (outside the component). */\n links: HTMLLinkElement[];\n /** Script elements extracted from the component or document. */\n scripts: HTMLScriptElement[];\n}\n\n/**\n * Validates that the document does not contain multiple unnamed remote components.\n * When multiple components exist, the consumer must specify a name to select one.\n */\nexport function validateSingleComponent(\n doc: Document,\n name: string,\n url: string,\n): void {\n if (\n (doc.querySelectorAll(`div[${DATA_BUNDLE}][${DATA_ROUTE}]`).length > 1 &&\n !doc.querySelector(\n `div[${DATA_BUNDLE}][${DATA_ROUTE}][id^=\"${name}\"]`,\n )) ||\n (doc.querySelectorAll(`${TAG_REMOTE_COMPONENT}:not([src])`).length > 1 &&\n !doc.querySelector(`${TAG_REMOTE_COMPONENT}[name=\"${name}\"]`))\n ) {\n throw multipleRemoteComponentsError(url);\n }\n}\n\n/**\n * Finds the remote component element in the parsed HTML document using the\n * standard querySelector chain. Returns null if no component is found.\n */\nexport function findComponentElement(\n doc: Document,\n name: string,\n): Element | null {\n return (\n doc.querySelector(`div[${DATA_BUNDLE}][${DATA_ROUTE}][id^=\"${name}\"]`) ??\n doc.querySelector(`div[${DATA_BUNDLE}][${DATA_ROUTE}]`) ??\n doc.querySelector(`div#${NEXT_CONTAINER_ID}`) ??\n doc.querySelector(`${TAG_REMOTE_COMPONENT}[name=\"${name}\"]:not([src])`) ??\n doc.querySelector(`${TAG_REMOTE_COMPONENT}:not([src])`)\n );\n}\n\n/**\n * Parses the __NEXT_DATA__ or __REMOTE_NEXT_DATA__ script element from the document.\n */\nexport function parseNextData(doc: Document): NextData | null {\n return JSON.parse(\n (\n doc.querySelector(`#${NEXT_DATA_ID}`) ??\n doc.querySelector(`#${REMOTE_NEXT_DATA_ID}`)\n )?.textContent ?? 'null',\n ) as NextData | null;\n}\n\n/**\n * Resolves the component name from the element's id attribute, the name attribute\n * (for <remote-component> elements), nextData, or a fallback value.\n * Strips the _ssr suffix from the id if present.\n */\nexport function resolveComponentName(\n component: Element | null,\n nextData: NextData | null,\n fallbackName: string,\n): { name: string; isRemoteComponent: boolean } {\n const isRemoteComponent =\n component?.tagName.toLowerCase() === TAG_REMOTE_COMPONENT;\n\n const name =\n component\n ?.getAttribute('id')\n ?.replace(new RegExp(`${ID_SUFFIX_SSR}$`), '') ||\n (isRemoteComponent && component?.getAttribute('name')) ||\n (nextData ? '__next' : fallbackName);\n\n return { name, isRemoteComponent };\n}\n\n/**\n * Extracts the shared module map from the document and removes the element.\n * Falls back to nextData's shared modules if available.\n */\nexport function extractRemoteShared(\n doc: Document,\n name: string,\n nextData: NextData | null,\n): RemoteSharedModules {\n const remoteSharedManifestEl = doc.querySelector(\n `#${name}${ID_SUFFIX_SHARED_MANIFEST}[${DATA_REMOTE_COMPONENTS_SHARED_MANIFEST}]`,\n );\n const remoteSharedEl = doc.querySelector(\n `#${name}${ID_SUFFIX_SHARED}[${DATA_REMOTE_COMPONENTS_SHARED}]`,\n );\n const remoteShared =\n nextData?.props.__REMOTE_COMPONENT__?.sharedManifest ??\n ((remoteSharedManifestEl?.textContent\n ? JSON.parse(remoteSharedManifestEl.textContent)\n : undefined) as RemoteSharedModules | undefined) ??\n // @legacy(remote-components<=0.4.x): keep reading the historical shared\n // map until remotes on 0.4.x are outside the compatibility window.\n nextData?.props.__REMOTE_COMPONENT__?.shared ??\n ((JSON.parse(remoteSharedEl?.textContent ?? '{}') ?? {}) as Record<\n string,\n string\n >);\n remoteSharedManifestEl?.remove();\n remoteSharedEl?.remove();\n return remoteShared;\n}\n\n/**\n * Validates that a remote component was found in the document and that it has\n * RSC data, Next.js data, or is a <remote-component> element.\n * Acts as a type assertion - narrows component to non-null on success.\n */\nexport function validateComponentFound(\n component: Element | null,\n rsc: Element | null,\n nextData: NextData | null,\n isRemoteComponent: boolean,\n url: string,\n name: string,\n): asserts component is Element {\n if (!component || !(rsc || nextData || isRemoteComponent)) {\n throw new RemoteComponentsError(\n `Remote Component not found on ${url}.${\n name !== DEFAULT_COMPONENT_NAME\n ? ` The name for the <RemoteComponent> is \"${name}\". Check <RemoteComponent> usage.`\n : ''\n } Did you forget to wrap the content in <RemoteComponent>?`,\n );\n }\n}\n\n/**\n * Extracts link elements from the document that are not inside the component.\n */\nexport function extractLinks(\n doc: Document,\n component: Element,\n): HTMLLinkElement[] {\n return Array.from(doc.querySelectorAll<HTMLLinkElement>('link[href]')).filter(\n (link) => !component.contains(link),\n );\n}\n\n/**\n * Extracts script elements from the component or document, depending on whether\n * the component is a <remote-component> custom element.\n */\nexport function extractScripts(\n doc: Document,\n component: Element,\n isRemoteComponent: boolean,\n): HTMLScriptElement[] {\n return Array.from(\n (isRemoteComponent ? component : doc).querySelectorAll<HTMLScriptElement>(\n `script[src],script[${DATA_SRC}]`,\n ),\n );\n}\n\n/**\n * Parses a remote component HTML document and extracts all data needed for\n * loading and hydrating the component. This is the main orchestrator that\n * calls the individual extraction functions.\n */\nexport function parseRemoteComponentDocument(\n doc: Document,\n name: string,\n url: URL,\n): ParsedRemoteComponent {\n validateSingleComponent(doc, name, url.href);\n\n const component = findComponentElement(doc, name);\n const nextData = parseNextData(doc);\n\n const { name: resolvedName, isRemoteComponent } = resolveComponentName(\n component,\n nextData,\n name,\n );\n\n const rsc = doc.querySelector(`#${resolvedName}${ID_SUFFIX_RSC}`);\n const metadata = buildMetadata(\n {\n name: resolvedName,\n bundle:\n component?.getAttribute(DATA_BUNDLE) ||\n nextData?.props.__REMOTE_COMPONENT__?.bundle,\n route: component?.getAttribute(DATA_ROUTE) ?? nextData?.page,\n runtime:\n component?.getAttribute(DATA_RUNTIME) ??\n nextData?.props.__REMOTE_COMPONENT__?.runtime ??\n RUNTIME_SCRIPT,\n id: component?.getAttribute('id'),\n type: component?.getAttribute(DATA_TYPE),\n },\n url,\n );\n const remoteShared = extractRemoteShared(doc, resolvedName, nextData);\n\n validateComponentFound(\n component,\n rsc,\n nextData,\n isRemoteComponent,\n url.href,\n resolvedName,\n );\n\n const links = extractLinks(doc, component);\n const scripts = extractScripts(doc, component, isRemoteComponent);\n\n return {\n component,\n name: resolvedName,\n isRemoteComponent,\n metadata,\n nextData,\n rsc,\n remoteShared,\n links,\n scripts,\n };\n}\n","import * as React from 'react';\nimport * as JSXDevRuntime from 'react/jsx-dev-runtime';\nimport * as JSXRuntime from 'react/jsx-runtime';\nimport * as ReactDOM from 'react-dom';\nimport * as ReactDOMClient from 'react-dom/client';\nimport { applySharedModules } from '#internal/config/webpack/apply-shared-modules';\nimport { nextClientPagesLoader } from '#internal/config/webpack/next-client-pages-loader';\nimport type { InternalResolveClientUrl } from '#internal/host/server/types';\nimport type { ConsumeLoaderPayload } from '#internal/host/shared/server-handoff';\nimport type { RemoteSharedModules } from '#internal/host/shared/shared-broker';\nimport {\n buildCoreShared,\n buildWebpackResolve,\n} from '#internal/host/shared/shared-module-resolver';\nimport { createRSCStream } from '#internal/runtime/rsc';\nimport { importRSCClientBrowser } from '#internal/runtime/rsc-imports';\nimport { setupRemoteScope } from '#internal/runtime/turbopack/remote-scope-setup';\nimport { initializeSharedModules } from '#internal/runtime/turbopack/shared-modules';\nimport type { GlobalScope, LoaderResult } from '#internal/runtime/types';\nimport { RemoteComponentsError } from '#internal/utils/error';\nimport { logDebug, logWarn } from '#internal/utils/logger';\nimport { loadScripts } from './script-loader';\n\n/**\n * Props accepted by {@link loadRemoteComponent}.\n *\n * Extends {@link ConsumeLoaderPayload} (the SSR-resolved fields needed for\n * hydration) with loader-specific fields (`url`, `shared`, `container`, etc.).\n * `remoteShared` is narrowed from optional to required (defaults to `{}` at\n * the call site).\n */\nexport interface ConsumeLoaderProps extends ConsumeLoaderPayload {\n url: URL;\n shared:\n | Promise<Record<string, (bundle?: string) => Promise<unknown>>>\n | Record<string, (bundle?: string) => Promise<unknown>>;\n remoteShared: RemoteSharedModules;\n container?: HTMLHeadElement | ShadowRoot | null;\n rscName?: string;\n resolveClientUrl?: InternalResolveClientUrl;\n}\n\n/**\n * Main loader function that orchestrates the component loading process\n */\nexport async function loadRemoteComponent({\n url,\n name,\n rscName,\n bundle,\n route = '/',\n runtime = 'webpack',\n data,\n nextData,\n scripts = [],\n shared = Promise.resolve({}),\n remoteShared = {},\n container,\n resolveClientUrl,\n}: ConsumeLoaderProps): Promise<LoaderResult> {\n try {\n // Load scripts if using webpack runtime\n if (runtime === 'webpack') {\n const self = globalThis as GlobalScope;\n // disable webpack entrypoint execution for the remote\n if (!self.__DISABLE_WEBPACK_EXEC__) {\n self.__DISABLE_WEBPACK_EXEC__ = {};\n }\n // disable webpack entrypoint execution for the current remote bundle\n self.__DISABLE_WEBPACK_EXEC__[bundle] = true;\n await loadScripts(scripts, resolveClientUrl);\n }\n\n const hostShared = await shared;\n logDebug(\n 'ComponentLoader',\n `loadRemoteComponent: bundle=\"${bundle}\", name=\"${name}\"`,\n );\n logDebug(\n 'ComponentLoader',\n `Host shared modules available: ${Object.keys(hostShared)}`,\n );\n logDebug(\n 'ComponentLoader',\n `Remote shared modules requested: ${JSON.stringify(remoteShared)}`,\n );\n\n // Setup remote scope and load turbopack chunks\n const scope = await setupRemoteScope(\n runtime,\n scripts,\n url,\n bundle,\n resolveClientUrl,\n );\n\n // Initialize turbopack shared modules (React, etc.) now that chunks are loaded\n if (runtime === 'turbopack') {\n await initializeSharedModules(\n scope,\n buildCoreShared(hostShared),\n remoteShared,\n );\n }\n\n // Setup shared modules\n if (bundle && runtime === 'webpack') {\n const resolve = await buildWebpackResolve(\n hostShared,\n remoteShared,\n bundle,\n {\n '/react/index.js': React,\n '/react/jsx-dev-runtime.js': JSXDevRuntime,\n '/react/jsx-runtime.js': JSXRuntime,\n '/react-dom/index.js': ReactDOM,\n '/react-dom/client.js': ReactDOMClient,\n },\n 'ComponentLoader',\n );\n applySharedModules(bundle, resolve);\n } else if (bundle && runtime === 'turbopack') {\n // New shared-module architecture: Turbopack installs resolved modules\n // onto RemoteScope in initializeSharedModules(). Keep Webpack patching\n // isolated above so this branch can be deleted with the old\n // applySharedModules path once Webpack also moves to scope adapters.\n } else {\n logWarn(\n 'ComponentLoader',\n 'No bundle specified, skipping shared module setup',\n );\n }\n\n // Rewrite plain bundle references in RSC data to the scoped name so\n // the client dispatchers resolve the correct scope.\n const scopedData = data.map((chunk) =>\n chunk.replaceAll(`[${bundle}]`, `[${scope.scopedName}]`),\n );\n\n // Load component based on data type\n if (scopedData.length > 0) {\n return await loadRSCComponent(rscName ?? name, scopedData);\n } else if (nextData) {\n return loadNextPagesComponent(bundle, route, nextData, name, container);\n }\n\n return loadRSCComponent(rscName ?? name, [`0:[null]\\n`]); // Fallback to empty RSC payload\n } catch (error) {\n return {\n component: null,\n error: new RemoteComponentsError(\n `Failed to load remote component \"${name}\".`,\n {\n cause: error instanceof Error ? error : new Error(String(error)),\n },\n ),\n };\n }\n}\n\n/**\n * Loads RSC (React Server Components) based component\n */\nasync function loadRSCComponent(\n rscName: string,\n data: string[],\n): Promise<LoaderResult> {\n const { createFromReadableStream } = await importRSCClientBrowser();\n if (typeof createFromReadableStream !== 'function') {\n throw new RemoteComponentsError(\n 'Failed to import \"react-server-dom-webpack\". Is Next.js installed correctly?',\n );\n }\n\n const stream = createRSCStream(rscName, data);\n const component = createFromReadableStream(stream);\n\n return { component };\n}\n\n/**\n * Loads Next.js Pages Router based component\n */\nfunction loadNextPagesComponent(\n bundle: string,\n route: string,\n nextData: NonNullable<ConsumeLoaderPayload['nextData']>,\n name: string,\n container?: HTMLHeadElement | ShadowRoot | null,\n): LoaderResult {\n const { Component, App } = nextClientPagesLoader(bundle, route, container);\n\n if (!Component) {\n throw new RemoteComponentsError(\n `Remote Component \"${name}\" is trying to load the component for route \"${route}\" but it is not available.`,\n );\n }\n\n // error tolerance when app component is not found\n const component = App\n ? React.createElement(App, { Component, ...nextData.props })\n : React.createElement(Component, nextData.props);\n\n return { component };\n}\n","/**\n * Single import hub for all React Server Components runtime modules.\n *\n * Each function encapsulates the try/catch fallback chain that probes\n * Next.js internal paths first, then falls back to the public\n * `react-server-dom-webpack` / `react-server-dom-turbopack` packages.\n * This keeps version-specific import paths out of business logic.\n */\n\nimport type {\n RSCClientBrowserRuntime,\n RSCClientEdgeRuntime,\n RSCServerRuntime,\n} from './rsc-runtime';\n\n/**\n * Imports the RSC client for the **edge** runtime (server-side).\n * Used by `fetch-remote-component.ts` to deserialise RSC flight data.\n *\n * Tries the Next.js compiled path first, falls back to the bare\n * `react-server-dom-webpack/client.edge` module.\n */\nexport async function importRSCClientEdge(): Promise<RSCClientEdgeRuntime> {\n try {\n return await import(\n 'next/dist/compiled/react-server-dom-webpack/client.edge'\n );\n } catch {\n return await import('react-server-dom-webpack/client.edge');\n }\n}\n\n/**\n * Imports the RSC client for the **browser** runtime (client-side hydration).\n * Used by `component-loader.ts` to hydrate RSC streams in the browser.\n *\n * Tries the Next.js compiled path first, falls back to the bare\n * `react-server-dom-webpack/client.browser` module (which may use a\n * default export depending on the package version).\n */\nexport async function importRSCClientBrowser(): Promise<RSCClientBrowserRuntime> {\n try {\n return await import(\n 'next/dist/compiled/react-server-dom-webpack/client.browser'\n );\n } catch {\n const mod = await import('react-server-dom-webpack/client.browser');\n // Some versions export `createFromReadableStream` as a default export\n return (mod.default ?? mod) as RSCClientBrowserRuntime;\n }\n}\n\n/**\n * Imports the RSC **server** renderer for `ExposeRemoteComponent`.\n *\n * When `TURBOPACK` is set in the environment, imports from\n * `react-server-dom-turbopack`; otherwise uses `react-server-dom-webpack`.\n * Each variant tries the primary path first (`/server`), falling back to\n * the `.edge` entry point.\n */\nexport async function importRSCServer(): Promise<RSCServerRuntime> {\n const [primary, fallback] = await Promise.all(\n process.env.TURBOPACK\n ? [\n tryImport<RSCServerRuntime>(\n () => import('react-server-dom-turbopack/server'),\n ),\n tryImport<RSCServerRuntime>(\n () => import('react-server-dom-turbopack/server.edge'),\n ),\n ]\n : [\n tryImport<RSCServerRuntime>(\n () => import('react-server-dom-webpack/server'),\n ),\n tryImport<RSCServerRuntime>(\n () => import('react-server-dom-webpack/server.edge'),\n ),\n ],\n );\n\n return {\n renderToReadableStream:\n primary.renderToReadableStream ?? fallback.renderToReadableStream,\n };\n}\n\nasync function tryImport<T>(importer: () => Promise<T>): Promise<T> {\n try {\n return await importer();\n } catch {\n return {} as T;\n }\n}\n","import type { InternalResolveClientUrl } from '#internal/host/server/types';\nimport type { ScriptDescriptor } from '#internal/host/shared/asset-descriptors';\nimport type { ConsumeLoaderPayload } from '#internal/host/shared/server-handoff';\nimport {\n getMissingSharedModulesMessage,\n type RemoteSharedModules,\n} from '#internal/host/shared/shared-broker';\nimport { buildHostShared } from '#internal/host/shared/shared-module-resolver';\nimport { applyOriginToNodes } from '#internal/runtime/html/apply-origin';\nimport {\n type ParsedRemoteComponent,\n parseRemoteComponentDocument,\n} from '#internal/runtime/html/parse-remote-html';\nimport { loadRemoteComponent } from '#internal/runtime/loaders/component-loader';\nimport { loadStaticRemoteComponent } from '#internal/runtime/loaders/static-loader';\nimport type { RemoteComponentMetadata } from '#internal/runtime/metadata';\nimport {\n collapseDoubleSlashes,\n REMOTE_COMPONENT_REGEX,\n} from '#internal/runtime/patterns';\nimport type { MountOrUnmountFunction } from '#internal/runtime/types';\nimport { escapeString } from '#internal/utils';\nimport { RemoteComponentsError } from '#internal/utils/error';\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\ntype SharedModuleMap = Record<string, (bundle?: string) => Promise<unknown>>;\n\n/**\n * Input for {@link runPipeline} — the full post-fetch pipeline that starts\n * from raw HTML.\n */\nexport interface PipelineInput {\n /** Resolved URL of the remote component. */\n url: URL;\n /** Raw HTML string returned by the remote. */\n html: string;\n /** Component name hint (may be refined during parsing). */\n name: string;\n /** Abort signal — the pipeline checks this between async steps. */\n signal: AbortSignal;\n /** Host-provided shared module factories (resolved or promise). */\n shared: Promise<SharedModuleMap> | SharedModuleMap;\n /** URL rewriter for client-side asset URLs. */\n resolveClientUrl?: InternalResolveClientUrl;\n /** Shadow root or element to mount into (for script-based components). */\n container?: ShadowRoot | HTMLElement | null;\n}\n\n/**\n * Input for {@link runPipelineFromParsed} — the pipeline entry point for\n * hosts that receive pre-parsed SSR data (e.g. the App Router client).\n */\nexport interface ParsedPipelineInput {\n /** Resolved URL of the remote component. */\n url: URL;\n /** Component name. */\n name: string;\n /** Abort signal. */\n signal: AbortSignal;\n /** Pre-resolved loader payload from the server component. */\n payload: ConsumeLoaderPayload;\n /** Host-provided shared module factories (resolved or promise). */\n shared: Promise<SharedModuleMap> | SharedModuleMap;\n /** Remote-requested shared modules. */\n remoteShared?: RemoteSharedModules;\n /** URL rewriter for client-side asset URLs. */\n resolveClientUrl?: InternalResolveClientUrl;\n /** Shadow root or element to mount into. */\n container?: ShadowRoot | HTMLElement | null;\n /** Optional RSC name override (used by App Router for scoped RSC data). */\n rscName?: string;\n}\n\n/**\n * Successful dynamic component load — the component is a React element tree\n * ready to render.\n */\nexport interface PipelineLoaded {\n status: 'loaded';\n component: React.ReactNode;\n metadata: RemoteComponentMetadata;\n parsed: ParsedRemoteComponent;\n doc: Document;\n}\n\n/**\n * Successful static component load — mount/unmount functions are returned\n * for the host to call.\n */\nexport interface PipelineStatic {\n status: 'static';\n mount: Set<MountOrUnmountFunction>;\n unmount: Set<MountOrUnmountFunction>;\n metadata: RemoteComponentMetadata;\n parsed: ParsedRemoteComponent;\n doc: Document;\n}\n\n/** The load was aborted before it could complete. */\nexport interface PipelineAborted {\n status: 'aborted';\n}\n\n/** The load failed with an error. */\nexport interface PipelineError {\n status: 'error';\n error: Error;\n}\n\nexport type PipelineResult =\n | PipelineLoaded\n | PipelineStatic\n | PipelineAborted\n | PipelineError;\n\n/**\n * Intermediate result from {@link preparePipeline}. Hosts that need to run\n * framework-specific logic between parse and load (e.g. inline script\n * execution in the React host) use this to split the pipeline into two\n * phases.\n */\nexport interface PreparedPipeline {\n doc: Document;\n parsed: ParsedRemoteComponent;\n /** Script descriptors ready to pass to `loadRemoteComponent`. */\n scriptDescriptors: ScriptDescriptor[];\n}\n\n// ---------------------------------------------------------------------------\n// Pipeline phases\n// ---------------------------------------------------------------------------\n\n/**\n * Phase 1: Parse HTML, validate shared modules, and normalize URLs.\n *\n * This is the synchronous/cheap portion of the pipeline. Hosts that need to\n * inject logic between parse and load (e.g. executing inline scripts) call\n * this directly, then call {@link loadPrepared} when ready.\n */\nexport function preparePipeline(input: {\n html: string;\n name: string;\n url: URL;\n shared: SharedModuleMap;\n remoteShared?: RemoteSharedModules;\n resolveClientUrl?: InternalResolveClientUrl;\n}): PreparedPipeline {\n const parser = new DOMParser();\n const doc = parser.parseFromString(input.html, 'text/html');\n\n const parsed = parseRemoteComponentDocument(doc, input.name, input.url);\n\n // Validate shared modules — surface errors early before any script loading.\n // Only check *remote* shared modules here. The host-side marker\n // (`__remote_components_missing_shared__` in `input.shared`) is a callable\n // error signal that the host may intentionally leave in place when\n // `withRemoteComponentsConfig` is not used — blocking on it would break\n // framework-agnostic hosts that don't configure shared modules.\n const remoteShared = input.remoteShared ?? parsed.remoteShared;\n const missingSharedModulesMessage =\n getMissingSharedModulesMessage(remoteShared);\n if (missingSharedModulesMessage) {\n throw new RemoteComponentsError(missingSharedModulesMessage);\n }\n\n applyOriginToNodes(doc, input.url, input.resolveClientUrl);\n\n const scriptDescriptors = buildScriptDescriptors(parsed.scripts, input.url);\n\n return { doc, parsed, scriptDescriptors };\n}\n\n/**\n * Phase 2: Load the component from a prepared pipeline result.\n *\n * For dynamic components, delegates to `loadRemoteComponent`. For static\n * components (`isRemoteComponent`), delegates to `loadStaticRemoteComponent`.\n */\nexport async function loadPrepared(input: {\n prepared: PreparedPipeline;\n url: URL;\n signal: AbortSignal;\n shared: Promise<SharedModuleMap> | SharedModuleMap;\n resolveClientUrl?: InternalResolveClientUrl;\n container?: ShadowRoot | HTMLElement | null;\n rscName?: string;\n}): Promise<PipelineResult> {\n const { prepared, url, signal, resolveClientUrl, container, rscName } = input;\n const { doc, parsed, scriptDescriptors } = prepared;\n\n if (signal.aborted) {\n return { status: 'aborted' };\n }\n\n const userShared = await input.shared;\n if (signal.aborted) {\n return { status: 'aborted' };\n }\n\n if (parsed.isRemoteComponent) {\n return loadStaticPath({\n parsed,\n doc,\n url,\n resolveClientUrl,\n });\n }\n\n return loadDynamicPath({\n parsed,\n doc,\n url,\n scriptDescriptors,\n shared: userShared,\n resolveClientUrl,\n container,\n rscName,\n });\n}\n\n// ---------------------------------------------------------------------------\n// Full pipeline entry points\n// ---------------------------------------------------------------------------\n\n/**\n * Full post-fetch pipeline: parse → validate → normalize → load.\n *\n * Use this when starting from a raw HTML string (React host, HTML host).\n */\nexport async function runPipeline(\n input: PipelineInput,\n): Promise<PipelineResult> {\n try {\n const userShared = await input.shared;\n if (input.signal.aborted) {\n return { status: 'aborted' };\n }\n\n const prepared = preparePipeline({\n html: input.html,\n name: input.name,\n url: input.url,\n shared: userShared,\n resolveClientUrl: input.resolveClientUrl,\n });\n\n return await loadPrepared({\n prepared,\n url: input.url,\n signal: input.signal,\n shared: userShared,\n resolveClientUrl: input.resolveClientUrl,\n container: input.container,\n });\n } catch (error) {\n return {\n status: 'error',\n error:\n error instanceof Error\n ? error\n : new RemoteComponentsError(String(error)),\n };\n }\n}\n\n/**\n * Pipeline entry point for pre-parsed SSR data (App Router client).\n *\n * Skips HTML parsing and goes straight to `loadRemoteComponent` with the\n * pre-resolved payload from the server component.\n */\nexport async function runPipelineFromParsed(\n input: ParsedPipelineInput,\n): Promise<\n | { status: 'loaded'; component: React.ReactNode }\n | PipelineAborted\n | PipelineError\n> {\n try {\n if (input.signal.aborted) {\n return { status: 'aborted' };\n }\n\n const remoteShared = input.remoteShared ?? input.payload.remoteShared ?? {};\n\n const missingSharedModulesMessage =\n getMissingSharedModulesMessage(remoteShared);\n if (missingSharedModulesMessage) {\n throw new RemoteComponentsError(missingSharedModulesMessage);\n }\n\n const result = await loadRemoteComponent({\n url: input.url,\n name: input.name,\n rscName: input.rscName,\n bundle: input.payload.bundle,\n route: input.payload.route,\n runtime: input.payload.runtime,\n data: input.payload.data,\n nextData: input.payload.nextData,\n scripts: input.payload.scripts,\n shared: input.shared,\n remoteShared,\n container: input.container,\n resolveClientUrl: input.resolveClientUrl,\n });\n\n if (input.signal.aborted) {\n return { status: 'aborted' };\n }\n\n if (result.error) {\n return { status: 'error', error: result.error };\n }\n return { status: 'loaded', component: result.component };\n } catch (error) {\n return {\n status: 'error',\n error:\n error instanceof Error\n ? error\n : new RemoteComponentsError(String(error)),\n };\n }\n}\n\n// ---------------------------------------------------------------------------\n// Internal helpers\n// ---------------------------------------------------------------------------\n\n/**\n * Converts parsed `<script>` elements into the `ScriptDescriptor[]` format\n * expected by `loadRemoteComponent`. Handles the `[bundle] id` URL format\n * and collapses double slashes.\n */\nfunction buildScriptDescriptors(\n scripts: HTMLScriptElement[],\n url: URL,\n): ScriptDescriptor[] {\n return scripts.map((script) => {\n const scriptSrc =\n script.getAttribute('data-src') ||\n script.getAttribute('src') ||\n script.src;\n const { prefix, id: path } = REMOTE_COMPONENT_REGEX.exec(scriptSrc)\n ?.groups ?? {\n prefix: undefined,\n id: scriptSrc,\n };\n return {\n src: new URL(collapseDoubleSlashes(`${prefix ?? ''}${path}`), url).href,\n };\n });\n}\n\nasync function loadStaticPath(input: {\n parsed: ParsedRemoteComponent;\n doc: Document;\n url: URL;\n resolveClientUrl?: InternalResolveClientUrl;\n}): Promise<PipelineStatic> {\n const { parsed, doc, url, resolveClientUrl } = input;\n const scripts = Array.from(\n parsed.component.querySelectorAll<HTMLScriptElement>('script'),\n );\n const { mount, unmount } = await loadStaticRemoteComponent(\n scripts,\n url,\n resolveClientUrl,\n );\n return {\n status: 'static',\n mount,\n unmount,\n metadata: parsed.metadata,\n parsed,\n doc,\n };\n}\n\nasync function loadDynamicPath(input: {\n parsed: ParsedRemoteComponent;\n doc: Document;\n url: URL;\n scriptDescriptors: ScriptDescriptor[];\n shared: SharedModuleMap;\n resolveClientUrl?: InternalResolveClientUrl;\n container?: ShadowRoot | HTMLElement | null;\n rscName?: string;\n}): Promise<PipelineLoaded | PipelineError> {\n const {\n parsed,\n doc,\n url,\n scriptDescriptors,\n shared,\n resolveClientUrl,\n container,\n } = input;\n\n const rscName =\n input.rscName ??\n (parsed.rsc\n ? `__remote_component_rsc_${escapeString(url.href)}_${escapeString(parsed.name)}`\n : undefined);\n\n const rscData = parsed.rsc\n ? (parsed.rsc.textContent || '').split('\\n').filter(Boolean)\n : [];\n\n const result = await loadRemoteComponent({\n url,\n name: parsed.name,\n rscName,\n bundle: parsed.metadata.bundle,\n route: parsed.metadata.route,\n runtime: parsed.metadata.runtime,\n data: rscData,\n nextData: parsed.nextData,\n scripts: scriptDescriptors,\n shared: buildHostShared(shared, resolveClientUrl),\n remoteShared: parsed.remoteShared,\n container,\n resolveClientUrl,\n });\n\n if (result.error) {\n return { status: 'error', error: result.error };\n }\n return {\n status: 'loaded',\n component: result.component,\n metadata: parsed.metadata,\n parsed,\n doc,\n };\n}\n","/**\n * The lifecycle stages a host progresses through during a load cycle.\n *\n * ```\n * ┌─────────────────────────┐\n * │ (new load) │\n * ▼ │\n * idle ──▶ loading ──▶ loaded ─────────┘\n * ▲ │ │\n * │ ▼ │ (new load)\n * │ error ─────────┘\n * │\n * └── loading (abandoned / aborted)\n * ```\n *\n * - `idle` — No load has started, or a previous load was abandoned.\n * - `loading` — A fetch or hydration is in progress.\n * - `loaded` — The remote component rendered successfully.\n * - `error` — The load failed (the error itself is surfaced separately).\n *\n * Any non-idle stage transitions directly to `loading` when a new load starts.\n */\nexport type HostStage = 'idle' | 'loading' | 'loaded' | 'error';\n\n/**\n * Mutable state shared by every host implementation (HTML, React, Next.js\n * App Router).\n *\n * Each host stores a single `HostState` instance rather than scattering\n * individual properties/refs. This keeps the \"what changed since the last\n * load?\" tracking consistent across frameworks and makes it easy to test\n * state transitions in isolation.\n */\nexport interface HostState {\n /** Current lifecycle stage. */\n stage: HostStage;\n\n /** Source from the most-recent load. `undefined` before the first load. */\n prevSrc: string | URL | undefined;\n\n /** Resolved URL from the most-recent load. `undefined` before the first load. */\n prevUrl: URL | undefined;\n\n /** Component name from the most-recent load. `undefined` before the first load. */\n prevName: string | undefined;\n\n /** Whether the most-recent load was a remote component (vs. a plain page). */\n prevIsRemoteComponent: boolean;\n\n /**\n * `AbortController` for the in-flight load. Abort it to cancel a\n * superseded fetch. `undefined` when no load is active.\n */\n abortController: AbortController | undefined;\n}\n\n/** Creates a fresh `HostState` with all fields at their initial values. */\nexport function createHostState(): HostState {\n return {\n stage: 'idle',\n prevSrc: undefined,\n prevUrl: undefined,\n prevName: undefined,\n prevIsRemoteComponent: false,\n abortController: undefined,\n };\n}\n","/**\n * Extracts a component name from the URL hash of `src`, falling back to\n * `defaultName` when no hash is present.\n *\n * Both the HTML and React hosts use this to derive the component name\n * from patterns like `/components/header#my-component`.\n *\n * Parses the hash directly from the string rather than constructing a\n * full `URL`, so no SSR fallback base is needed.\n */\nexport function resolveNameFromSrc(\n src: string | URL | undefined,\n defaultName: string,\n): string {\n if (!src) {\n return defaultName;\n }\n\n const hash = typeof src === 'string' ? src : src.hash;\n const hashIndex = hash.indexOf('#');\n if (hashIndex < 0) {\n return defaultName;\n }\n\n const name = hash.slice(hashIndex + 1);\n return name || defaultName;\n}\n","/**\n * Intercepts client-side URL resolution for remote component resources.\n * Called before each asset (script, stylesheet, chunk, module, image) is fetched.\n *\n * Return a new URL string to redirect the fetch (e.g., through a proxy),\n * or undefined to use the original URL.\n *\n * @param remoteSrc - The `src` of the remote component being loaded\n * @param url - The asset URL about to be fetched\n *\n * @example\n * // Proxy all assets from the remote's origin through the host\n * const resolveClientUrl = (remoteSrc, url) => {\n * const remoteOrigin = new URL(remoteSrc).origin;\n * const parsed = new URL(url);\n * if (parsed.origin !== location.origin && parsed.origin === remoteOrigin) {\n * return `/rc-fetch-protected-remote?url=${encodeURIComponent(url)}`;\n * }\n * };\n */\nexport type ResolveClientUrl = (\n remoteSrc: string,\n url: string,\n) => string | undefined;\n\n/**\n * Internal bound resolver — `ResolveClientUrl` with `remoteSrc` already applied.\n * Used by internal loaders that don't need to know the remote src.\n */\nexport type InternalResolveClientUrl = (url: string) => string | undefined;\n\n/**\n * Binds a `ResolveClientUrl` to a specific `remoteSrc`, producing an\n * `InternalResolveClientUrl` that only needs the asset URL.\n *\n * Only invokes the callback for URLs whose origin matches the remote\n * component's origin. Third-party scripts (e.g. `vercel.live` toolbar)\n * are left untouched. To proxy additional domains in the future, a\n * field or flag can be added to the host configuration.\n */\nexport function withRemoteSrc(\n resolveClientUrl: ResolveClientUrl,\n remoteSrc: string,\n): InternalResolveClientUrl {\n const remoteOrigin = parseOrigin(remoteSrc);\n return (url) => {\n const urlOrigin = parseOrigin(url);\n if (remoteOrigin && urlOrigin && urlOrigin !== remoteOrigin) {\n return undefined;\n }\n return resolveClientUrl(remoteSrc, url);\n };\n}\n\nfunction parseOrigin(url: string): string | undefined {\n try {\n return new URL(url).origin;\n } catch {\n return undefined;\n }\n}\n","import {\n type InternalResolveClientUrl,\n type ResolveClientUrl,\n withRemoteSrc,\n} from './resolve-client-url';\n\nexport function bindResolveClientUrl(\n prop: ResolveClientUrl | undefined,\n remoteSrc: string,\n): InternalResolveClientUrl | undefined {\n return prop ? withRemoteSrc(prop, remoteSrc) : undefined;\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/config/webpack/apply-shared-modules.ts","../src/runtime/turbopack/patterns.ts","../src/runtime/turbopack/chunk-loader.ts","../src/runtime/turbopack/module.ts","../src/runtime/turbopack/shared-modules.ts","../src/config/webpack/next-client-pages-loader.ts"],"names":["stripQuotes"],"mappings":"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","sourcesContent":["// Webpack shared module patching\n// used in multiple remote component host types\n// multiple host types includes: HTML custom element for remote components and Next.js host application\n// we are using this shared function to patch a Webpack module map\n// to use shared modules between the host application and the remote component\n\nimport { getScope } from '#internal/runtime/turbopack/remote-scope';\nimport { logDebug, logWarn } from '#internal/utils/logger';\n\nconst DEDUPLICATION_SKIPPED =\n 'shared module deduplication skipped. The remote may load its own copy of shared dependencies.';\n\nexport function applySharedModules(\n bundle: string,\n resolve: Record<string, unknown>,\n) {\n logDebug(\n 'SharedModules',\n `applySharedModules called for bundle: \"${bundle}\"`,\n );\n logDebug(\n 'SharedModules',\n `Shared modules to resolve: ${Object.keys(resolve)}`,\n );\n\n // make a typed reference to the global scope\n const self = globalThis as typeof globalThis & {\n // webpack remote module loading function scoped for each bundle\n __remote_webpack_require__?: Record<\n string,\n ((remoteId: string) => unknown) & {\n m?: Record<string | number, (module: { exports: unknown }) => void>;\n }\n >;\n // webpack module map for each bundle used in production builds\n __remote_webpack_module_map__?: Record<string, Record<string, number>>;\n } & Record<string, string[]>;\n\n // Prefer scope-based access when available.\n const scope = getScope(bundle);\n // @legacy(v0.3.4) — fall back to global __remote_webpack_require__ for hosts that\n // haven't run setupWebpackRuntime yet (e.g. HTML host's inline path).\n // Remove once all host types go through the shared pipeline (Phase 5).\n const webpackBundle =\n scope?.webpackRequire ?? self.__remote_webpack_require__?.[bundle];\n\n if (webpackBundle) {\n const modulePaths = Object.keys(\n self.__remote_webpack_module_map__?.[bundle] ?? webpackBundle.m ?? {},\n );\n logDebug(\n 'SharedModules',\n `Available module paths for bundle \"${bundle}\": ${modulePaths}`,\n );\n\n // patch all modules in the bundle to use the shared modules\n for (const [key, value] of Object.entries(resolve)) {\n const exactIds = modulePaths.filter((p) => p === key);\n const ids =\n exactIds.length > 0\n ? exactIds\n : modulePaths.filter((p) => p.includes(key));\n\n if (ids.length === 0) {\n logDebug(\n 'SharedModules',\n `No matching module path found for shared module \"${key}\"`,\n );\n }\n\n for (const id of ids) {\n if (webpackBundle.m) {\n // if we have a module map, we need to use the mapped id\n // this is required for production builds where the module ids are module id numbers\n const resolvedId = self.__remote_webpack_module_map__?.[bundle]?.[id]\n ? `${self.__remote_webpack_module_map__[bundle][id]}`\n : id;\n if (resolvedId !== id) {\n logDebug(\n 'SharedModules',\n `Mapped module id: \"${id}\" -> \"${resolvedId}\"`,\n );\n }\n // create a mock module which exports the shared module\n webpackBundle.m[resolvedId] = (module) => {\n module.exports = value;\n };\n } else {\n logWarn(\n 'SharedModules',\n `webpackBundle.m is not available for bundle \"${bundle}\" — ${DEDUPLICATION_SKIPPED}`,\n );\n }\n }\n }\n } else {\n logWarn(\n 'SharedModules',\n `No webpack require found for bundle \"${bundle}\" — ${DEDUPLICATION_SKIPPED}`,\n );\n logDebug(\n 'SharedModules',\n `Available bundles: ${Object.keys(self.__remote_webpack_require__ ?? {})}`,\n );\n }\n}\n","/**\n * Regex patterns for parsing Turbopack's minified and development code.\n *\n * Turbopack outputs different variable names in dev vs production builds:\n * - Development: __turbopack_context__, parentImport, chunk, self\n * - Minified: e, t, etc.\n *\n * Module IDs are numeric in Next.js 16+ (e.g. `984803`) but full string paths in\n * Next.js 15.x dev mode (e.g. `\"[project]/.../react/index.js [app-client] (ecmascript)\"`).\n * ID-capturing patterns match `\"quoted string\"|digits` via the shared\n * `MODULE_ID_PATTERN` fragment. Use `extractGroup()` to both match and strip quotes\n * in one step.\n */\n\n/**\n * Reusable fragment that matches a turbopack module ID: either a\n * quoted string, a plain integer, or an integer in scientific notation\n * (e.g. `35e3`, which production minifiers emit for `35000`).\n */\nconst MODULE_ID_PATTERN = '\"[^\"]+\"|[0-9]+e[0-9]+|[0-9]+';\n\n/** Strips surrounding double-quotes from a captured regex value. */\nfunction stripQuotes(value: string): string {\n if (value.startsWith('\"') && value.endsWith('\"')) {\n return value.slice(1, -1);\n }\n return value;\n}\n\n/**\n * Normalizes a captured module ID. Production minifiers may emit numeric\n * IDs in scientific notation (e.g. `35e3`) but the runtime registers them\n * under their canonical integer form (`35000`), so we canonicalize here\n * before any lookups.\n */\nexport function normalizeModuleId(value: string): string {\n if (/^[0-9]+e[0-9]+$/.test(value)) {\n return String(Number(value));\n }\n return value;\n}\n\n/**\n * Runs a regex against `input` and returns the named capture group with\n * quotes stripped and numeric IDs normalized, or `undefined` if there's\n * no match.\n */\nexport function extractGroup(\n re: RegExp,\n input: string,\n group: string,\n): string | undefined {\n const raw = re.exec(input)?.groups?.[group];\n if (!raw) return undefined;\n return normalizeModuleId(stripQuotes(raw));\n}\n\n/**\n * Matches: self.TURBOPACK_REMOTE_SHARED or e.TURBOPACK_REMOTE_SHARED\n *\n * @example\n * // Development:\n * \"self.TURBOPACK_REMOTE_SHARED=await __turbopack_context__.A(984803)\"\n *\n * // Minified:\n * \"e.TURBOPACK_REMOTE_SHARED=await e.A(984803)\"\n */\nexport const REMOTE_SHARED_MARKER_RE =\n /(?:self|[a-z])\\.TURBOPACK_REMOTE_SHARED/;\n\n/**\n * Extracts the module ID from a TURBOPACK_REMOTE_SHARED assignment.\n *\n * Captures:\n * - `sharedModuleId`: The module ID (may be quoted for string paths).\n *\n * @example\n * // Next.js 16:\n * \"self.TURBOPACK_REMOTE_SHARED=await __turbopack_context__.A(984803)\"\n * // -> sharedModuleId = \"984803\"\n *\n * // Next.js 15.x (string IDs, spaces around `=`):\n * 'self.TURBOPACK_REMOTE_SHARED = await __turbopack_context__.A(\"[project]/...app-remote.tsx [app-client] (ecmascript, async loader)\")'\n * // -> sharedModuleId = \"[project]/...app-remote.tsx [app-client] (ecmascript, async loader)\"\n *\n * // Minified:\n * \"t.TURBOPACK_REMOTE_SHARED=await e.A(123456)\"\n * // -> sharedModuleId = \"123456\"\n */\nexport const REMOTE_SHARED_ASSIGNMENT_RE = new RegExp(\n `\\\\.TURBOPACK_REMOTE_SHARED\\\\s*=\\\\s*await (?:__turbopack_context__|[a-z])\\\\.A\\\\((?<sharedModuleId>${MODULE_ID_PATTERN})\\\\)`,\n);\n\n/**\n * Matches async module loader calls: ctx.A(moduleId)\n *\n * Captures:\n * - `asyncSharedModuleId`: The module ID (may be quoted).\n *\n * @example\n * // Next.js 16:\n * \"() => __turbopack_context__.A(460400)\"\n * // -> asyncSharedModuleId = \"460400\"\n *\n * // Next.js 15.x:\n * '() => __turbopack_context__.A(\"[project]/.../react/index.js [app-client] (ecmascript, async loader)\")'\n * // -> asyncSharedModuleId = \"[project]/.../react/index.js [app-client] (ecmascript, async loader)\"\n *\n * // Minified:\n * \"() => e.A(460400)\"\n * // -> asyncSharedModuleId = \"460400\"\n */\nexport const ASYNC_MODULE_LOADER_RE = new RegExp(\n `(?:__turbopack_context__|[a-z])\\\\.A\\\\((?<asyncSharedModuleId>${MODULE_ID_PATTERN})\\\\)`,\n);\n\n/**\n * Extracts the final module ID from an async module `.v()` callback.\n * The callback always ends by calling its argument (parentImport / single-letter\n * variable) with the real module ID. This matches that final call regardless of\n * surrounding structure (whitespace, `return` statements, block vs expression bodies).\n *\n * Handles both Promise.resolve (no extra chunks) and Promise.all (with chunks).\n *\n * Captures:\n * - `sharedModuleId`: The module ID (may be quoted).\n *\n * @example\n * // Next.js 16 minified (Promise.resolve):\n * \"e=>{e.v(e=>Promise.resolve().then(()=>e(633334)))}\"\n * // -> sharedModuleId = \"633334\"\n *\n * // Next.js 16 minified (Promise.all):\n * \"e=>{e.v(t=>Promise.all([\\\"chunk.js\\\"].map(t=>e.l(t))).then(()=>t(633334)))}\"\n * // -> sharedModuleId = \"633334\"\n *\n * // Next.js 15.x development (multi-line):\n * '(__turbopack_context__) => {\\n__turbopack_context__.v((parentImport) => {\\n return Promise.resolve().then(() => {\\n return parentImport(\"[project]/.../react/index.js [app-client] (ecmascript)\");\\n });\\n});\\n}'\n * // -> sharedModuleId = \"[project]/.../react/index.js [app-client] (ecmascript)\"\n */\nexport const ASYNC_MODULE_CALLBACK_RE = new RegExp(\n `(?:parentImport|[a-z])\\\\((?<sharedModuleId>${MODULE_ID_PATTERN})\\\\)`,\n);\n\n/**\n * Detects Turbopack runtime global usage in a chunk.\n *\n * Matches either dot-notation or bracket-notation access off `globalThis` or `self`:\n * - globalThis.TURBOPACK / self.TURBOPACK\n * - globalThis[\"TURBOPACK\"] / self['TURBOPACK'] (whitespace tolerated)\n */\nexport const TURBOPACK_GLOBAL_RE =\n /(?:globalThis|self)\\s*(?:\\.TURBOPACK(?![_\\w])|\\[\\s*[\"']TURBOPACK[\"']\\s*\\])/;\n","import { RUNTIME_WEBPACK } from '#internal/runtime/constants';\nimport { getNamespace } from '#internal/runtime/namespace';\nimport { collapseDoubleSlashes } from '#internal/runtime/patterns';\nimport type { GlobalScope } from '#internal/runtime/types';\nimport { isProxiedUrl } from '#internal/runtime/url/protected-rc-fallback';\nimport {\n failedProxiedAssetError,\n RemoteComponentsError,\n} from '#internal/utils/error';\nimport {\n logDebug,\n logWarn,\n warnCrossOriginFetchError,\n} from '#internal/utils/logger';\nimport { TURBOPACK_GLOBAL_RE } from './patterns';\nimport {\n formatRemoteId,\n getScope,\n parseRemoteId,\n type RemoteScope,\n} from './remote-scope';\n\n/**\n * Loads a chunk using a specific scope. All state (base URL, proxy callback,\n * TURBOPACK global key) comes from the scope — no global lookups needed.\n *\n * This is the primary chunk loader called directly from:\n * - setupRemoteScope (initial chunks)\n * - TurbopackContext.l (module-level chunk loading)\n * - handleTurbopackChunk (CHUNK_LIST additional chunks)\n *\n * The global chunk dedup cache is keyed by absolute URL, so different origins\n * naturally get separate cache entries even when sharing a bundle name.\n */\nexport function loadChunkWithScope(\n scope: RemoteScope,\n chunkId: string,\n): Promise<unknown> | undefined {\n logDebug(\n 'ChunkLoader',\n `loadChunkWithScope: \"${chunkId}\" (scope: \"${scope.scopedName}\")`,\n );\n const self = globalThis as GlobalScope;\n const ns = getNamespace();\n\n const { bundle, path, prefix } = parseRemoteId(chunkId);\n\n // Skip webpack runtime chunks\n //\n // TODO(MFES-?): dynamic chunks emitted by the remote's webpack runtime\n // (e.g. via `next/dynamic` -> `__webpack_require__.e` -> `.l`) bypass this\n // function entirely. The remote was compiled with a public path baked\n // into webpack's runtime pointing at the remote's own origin, so on\n // deployment-protected previews those URLs 401 with no path through\n // `scope.resolveClientUrl`. A previous attempt wrapped\n // `__remote_webpack_require__[bundle].l` here on the host side; it\n // produced incorrect proxy URLs (resolved against the remote origin\n // instead of the host) and was reverted. The right fix likely needs to\n // either rewrite the remote's `__webpack_require__.p` at runtime to a\n // host-proxy prefix, or intercept at the JSONP loader with a fully-\n // qualified host URL (not a relative path). Until that lands, the\n // async-loader integration test is skipped for webpack remotes.\n const remoteRuntime = self.__remote_webpack_require__?.[bundle ?? 'default']\n ? self.__remote_webpack_require__[bundle ?? 'default']?.type || 'webpack'\n : scope.runtime;\n if (remoteRuntime === RUNTIME_WEBPACK) {\n return Promise.resolve(undefined);\n }\n\n const rawPath = path ? collapseDoubleSlashes(`${prefix}${path}`) : '/';\n const url = new URL(rawPath, scope.url).href;\n\n if (url.endsWith('.css')) {\n return;\n }\n\n if (ns.chunkCache[url]) {\n logDebug('ChunkLoader', `Cache hit for \"${chunkId}\" (url=\"${url}\")`);\n return ns.chunkCache[url];\n }\n\n const resolvedUrl = scope.resolveClientUrl?.(url) ?? url;\n if (resolvedUrl !== url) {\n logDebug('ChunkLoader', `Proxied chunk URL: \"${url}\" → \"${resolvedUrl}\"`);\n }\n\n ns.chunkCache[url] = new Promise((resolve, reject) => {\n fetch(resolvedUrl)\n .then((res) => res.text())\n .then((code) => {\n // Worker chunks reference self.TURBOPACK_NEXT_CHUNK_URLS and must be\n // skipped before Turbopack detection — they are not loadable as scripts.\n // Check this first so the detection below doesn't need to account for it.\n if (/importScripts\\(\\.\\.\\.self\\.TURBOPACK_NEXT_CHUNK_URLS/.test(code)) {\n const preloadLinks = document.querySelectorAll(\n `link[rel=\"preload\"][href=\"${new URL(url).pathname}\"]`,\n );\n preloadLinks.forEach((preloadLink) => preloadLink.remove());\n return;\n }\n\n const hasTurbopackLegacyGlobal = TURBOPACK_GLOBAL_RE.test(code);\n // When chunkLoadingGlobal is configured at build time, chunks use the\n // custom scoped name instead of the shared TURBOPACK global, so\n // TURBOPACK_GLOBAL_RE won't match — detect via the custom name instead.\n // The config sets \"TURBOPACK_remote_chunk_loading_global_<name>\" which\n // Next.js leaves unchanged (it only auto-prefixes values that don't\n // already start with \"TURBOPACK_\"). Chunks emit bracket notation:\n // globalThis[\"TURBOPACK_remote_chunk_loading_global_<name>\"].\n const customGlobalProp = `TURBOPACK_remote_chunk_loading_global_${scope.name}`;\n const hasCustomGlobal = code.includes(customGlobalProp);\n const isTurbopackChunk = hasTurbopackLegacyGlobal || hasCustomGlobal;\n if (isTurbopackChunk) {\n logDebug(\n 'ChunkLoader',\n hasCustomGlobal && !hasTurbopackLegacyGlobal\n ? `Chunk \"${url}\" uses build-time chunkLoadingGlobal \"${customGlobalProp}\" — skipping runtime TURBOPACK rename.`\n : `Chunk \"${url}\" uses legacy globalThis.TURBOPACK — applying runtime rename for scope \"${scope.scopedName}\".`,\n );\n return handleTurbopackChunk(\n code,\n scope,\n url,\n hasTurbopackLegacyGlobal,\n );\n }\n // Chunk doesn't contain Turbopack globals — nothing to process\n })\n .then(resolve)\n .catch((error) => {\n const isProxied = isProxiedUrl(resolvedUrl);\n if (isProxied) {\n reject(failedProxiedAssetError('chunk', url, resolvedUrl));\n } else {\n warnCrossOriginFetchError('ChunkLoader', url);\n reject(error);\n }\n });\n });\n\n return ns.chunkCache[url];\n}\n\n/**\n * Creates the global `__webpack_chunk_load__` dispatcher.\n * This is a thin wrapper called only by external code (React's RSC runtime).\n * It parses the chunkId, resolves the correct scope, and delegates to\n * `loadChunkWithScope`.\n */\nexport function createChunkDispatcher(): (\n chunkId: string,\n scriptBundle?: string,\n) => Promise<unknown> | undefined {\n return function __chunk_dispatcher__(chunkId: string, scriptBundle?: string) {\n logDebug('ChunkDispatcher', `Dispatching chunk: \"${chunkId}\"`);\n\n const { bundle } = parseRemoteId(chunkId);\n const bundleName = bundle || scriptBundle || 'default';\n\n // Works with both the scoped name (Next.js hosts with server-side\n // rewriting) and the plain bundle name (static/HTML hosts).\n const scope = getScope(bundleName);\n\n logDebug(\n 'ChunkDispatcher',\n `Scope resolution: bundle=\"${bundleName}\", scope=${scope?.scopedName ?? 'null'}`,\n );\n\n if (!scope) {\n logWarn('ChunkDispatcher', `No scope found for bundle \"${bundleName}\"`);\n return Promise.resolve(undefined);\n }\n\n return loadChunkWithScope(scope, chunkId);\n };\n}\n\n/**\n * Handles Turbopack chunk loading by transforming the chunk code to isolate\n * global variables per bundle and dynamically loading the transformed script.\n * Receives scope directly — no global state lookups needed.\n *\n * `renameTurbopackGlobal` is true when chunks use the shared\n * `globalThis.TURBOPACK` name and must be renamed at runtime. When\n * `chunkLoadingGlobal` is configured at build time, chunks already use a\n * unique scoped name so those renames are skipped — only the remaining\n * hardcoded globals (WORKER_LOCATION, NEXT_CHUNK_URLS, CHUNK_UPDATE_LISTENERS,\n * etc.) still need renaming.\n */\nasync function handleTurbopackChunk(\n code: string,\n scope: RemoteScope,\n url: string,\n renameTurbopackGlobal: boolean,\n): Promise<void> {\n const self = globalThis as GlobalScope;\n const { globalKey, name } = scope;\n\n // When chunkLoadingGlobal is configured at build time, chunks already use a\n // unique name — no runtime rename needed for those four patterns. Otherwise\n // the shared globalThis.TURBOPACK must be renamed here.\n // For new-style chunks the prop matches exactly what config sets:\n // \"TURBOPACK_remote_chunk_loading_global_<name>\".\n const globalProp = renameTurbopackGlobal\n ? `TURBOPACK_${globalKey}`\n : `TURBOPACK_remote_chunk_loading_global_${name}`;\n\n let transformedCode = code;\n if (renameTurbopackGlobal) {\n // Legacy chunks use the shared globalThis.TURBOPACK name. Rename it and\n // the CHUNK_LISTS global (which Turbopack derives as \"{global}_CHUNK_LISTS\")\n // to per-scope names so multiple remotes don't collide.\n transformedCode = transformedCode\n .replace(\n /globalThis\\[\\s*[\"']TURBOPACK[\"']\\s*\\]/g,\n `globalThis[\"TURBOPACK_${globalKey}\"]`,\n )\n .replace(\n /self\\[\\s*[\"']TURBOPACK[\"']\\s*\\]/g,\n `self[\"TURBOPACK_${globalKey}\"]`,\n )\n .replace(/globalThis\\.TURBOPACK/g, `globalThis.TURBOPACK_${globalKey}`)\n .replace(/self\\.TURBOPACK(?!_)/g, `self.TURBOPACK_${globalKey}`)\n .replace(/TURBOPACK_CHUNK_LISTS/g, `TURBOPACK_${globalKey}_CHUNK_LISTS`);\n }\n // These globals are hardcoded in the Turbopack runtime JS (not derived from\n // chunkLoadingGlobal) so they need renaming for both legacy and new-style chunks.\n transformedCode = transformedCode\n .replace(\n /TURBOPACK_WORKER_LOCATION/g,\n `TURBOPACK_WORKER_LOCATION_${globalKey}`,\n )\n .replace(\n /TURBOPACK_NEXT_CHUNK_URLS/g,\n `TURBOPACK_NEXT_CHUNK_URLS_${globalKey}`,\n )\n .replace(\n /TURBOPACK_CHUNK_UPDATE_LISTENERS/g,\n `TURBOPACK_CHUNK_UPDATE_LISTENERS_${globalKey}`,\n )\n .replace(/__next_require__/g, `__${globalKey}_next_require__`)\n .replace(\n /\\/\\/# sourceMappingURL=(?<name>.+)(?<optional>\\._)?\\.js\\.map/g,\n `//# sourceMappingURL=${new URL('.', new URL(url, scope.url)).href}$1$2.js.map`,\n );\n\n // Initialize TURBOPACK bundle as a real Array with a push interceptor.\n // Must be a true Array instance so Next.js 15.x turbopack runtimes whose\n // module-system IIFE guards with `Array.isArray(globalThis.TURBOPACK)`\n // don't bail out after we rewrite the global name.\n //\n // The interceptor captures module entries into scope.turbopackModules —\n // a flat array we control. We use Object.defineProperty to intercept\n // when the turbopack runtime replaces the global with a deferred-loading\n // dispatcher (canary builds), wrapping the replacement's push too.\n //\n // The scope is reused across loads of different components from the same\n // remote (see setupRemoteScope), so subsequent loads accumulate into\n // the same turbopackModules array. Chunk cache deduplication means\n // handleTurbopackChunk only runs once per unique chunk URL — all captured\n // modules remain available for any component that needs them.\n if (!self[globalProp]) {\n const wrapPush = <T extends { push?: (...args: unknown[]) => unknown }>(\n target: T,\n ): T => {\n const originalPush = target.push;\n if (typeof originalPush !== 'function') return target;\n target.push = (...items: unknown[]) => {\n for (const item of items) {\n if (Array.isArray(item)) {\n for (const entry of item) {\n scope.turbopackModules.push(entry);\n }\n } else {\n scope.turbopackModules.push(item);\n }\n }\n return originalPush.apply(target, items);\n };\n return target;\n };\n\n let currentValue: unknown = wrapPush([] as unknown[]);\n Object.defineProperty(self, globalProp, {\n get() {\n return currentValue;\n },\n set(newValue: unknown) {\n // When the turbopack runtime replaces the array with a dispatcher,\n // wrap the new object's push so we keep capturing module entries.\n if (newValue && typeof newValue === 'object') {\n wrapPush(newValue as { push?: (...args: unknown[]) => unknown });\n }\n currentValue = newValue;\n },\n configurable: true,\n enumerable: true,\n });\n }\n\n // load the script dynamically using a Blob URL\n await new Promise<void>((scriptResolve, scriptReject) => {\n const blob = new Blob([transformedCode], {\n type: 'application/javascript; charset=UTF-8',\n });\n const scriptUrl = URL.createObjectURL(blob);\n const script = document.createElement('script');\n script.setAttribute('data-turbopack-src', url);\n script.src = scriptUrl;\n script.async = true;\n script.onload = () => {\n URL.revokeObjectURL(scriptUrl);\n scriptResolve(undefined);\n script.remove();\n };\n script.onerror = () => {\n URL.revokeObjectURL(scriptUrl);\n scriptReject(\n new RemoteComponentsError(\n `Failed to load <script src=\"${script.src}\"> for Remote Component. Check the URL is correct.`,\n ),\n );\n script.remove();\n };\n document.head.appendChild(script);\n });\n\n // process any additional chunks that were registered during script execution\n // These CHUNK_LIST chunks load directly via scope — no global dispatch needed.\n // For new-style chunks the list global is \"${globalProp}_CHUNK_LISTS\"; for\n // legacy it was renamed to \"TURBOPACK_${globalKey}_CHUNK_LISTS\" by the\n // transform above. Both cases are covered by reading from \"${globalProp}_CHUNK_LISTS\".\n const chunkLists = self[`${globalProp}_CHUNK_LISTS`] as\n | { chunks: string[] }[]\n | undefined;\n const loadChunkPromises: (Promise<unknown> | undefined)[] = [];\n while (chunkLists?.length) {\n const { chunks } = chunkLists.shift() ?? { chunks: [] };\n if (chunks.length > 0) {\n for (const id of chunks) {\n const baseUrl = url.slice(0, url.indexOf('/_next'));\n const chunkLoadResult = loadChunkWithScope(\n scope,\n formatRemoteId(scope, `${baseUrl}/_next/${id}`),\n );\n if (chunkLoadResult) {\n loadChunkPromises.push(chunkLoadResult);\n }\n }\n }\n }\n if (loadChunkPromises.length > 0) {\n await Promise.all(loadChunkPromises);\n }\n}\n","import { logDebug, logError } from '#internal/utils/logger';\nimport { loadChunkWithScope } from './chunk-loader';\nimport { formatRemoteId, type RemoteScope } from './remote-scope';\nimport { getSharedModule, getTurbopackModules } from './shared-modules';\n\n/**\n * Function signature for Turbopack module initializers.\n * These functions are generated by Turbopack and initialize module exports.\n */\nexport type TurbopackModuleInit = (\n turbopackContext: TurbopackContext,\n module: TurbopackModule,\n exports: Record<string, unknown>,\n) => void;\n\ninterface TurbopackHotModule {\n active: boolean;\n data: Record<string, unknown>;\n accept(): void;\n dispose(callback?: (data: Record<string, unknown>) => void): void;\n invalidate(): void;\n}\n\ninterface TurbopackModule {\n exports: Record<string, unknown>;\n hot: TurbopackHotModule;\n}\n\n/**\n * The context object passed to Turbopack module initializers.\n * This provides the runtime API that modules use for imports, exports, and HMR.\n */\ninterface TurbopackContext {\n /** HMR (Hot Module Replacement) - not implemented for remote components */\n k: {\n register(): void;\n registerExports(): void;\n signature(): (fn: unknown) => unknown;\n };\n /** ESM exports setup */\n s: (\n bindings:\n | Record<string, () => unknown>\n | [...([string, () => unknown] | [string, number, () => unknown])],\n esmId?: string | number,\n ) => void;\n /** Import module */\n i: (importId: string | number) => Record<string, unknown> | undefined;\n /** Require module */\n r: (requireId: string | number) => unknown;\n /** Value exports */\n v: (value: unknown) => void;\n /**\n * Export URL — used by static asset modules (images, fonts, JSON, etc.).\n * The entire body of a Turbopack asset module is a single `ctx.q(url)` call\n * that sets `module.exports` to the asset URL string.\n */\n q: (value: unknown, esmId?: string | number) => void;\n /**\n * Export namespace — used when Turbopack inlines a precomputed ESM\n * namespace object as the module's exports. Called as `ctx.n(namespace)`\n * for the current module, or `ctx.n(namespace, esmId)` to target another\n * cached module. Mirrors upstream Turbopack's `exportNamespace` helper.\n */\n n: (namespace: unknown, esmId?: string | number) => void;\n /** Async module initializer */\n a: (\n mod: (\n handleDeps: unknown,\n setResult: (value: unknown) => void,\n ) => Promise<void>,\n ) => Promise<void>;\n /** Async module loader */\n A: (Aid: string | number) => Promise<unknown>;\n /**\n * Dynamic import tracking. Called in production chunks after ctx.s() to\n * register async/dynamic module relationships. e.g. t.j(importedMod, 58790)\n */\n j: (module: unknown, esmId?: string | number) => void;\n /** Chunk loader */\n l: (url: string) => Promise<unknown> | undefined;\n /**\n * Resolve absolute path — Turbopack uses this when constructing source-\n * map and debug URLs (e.g. ``${`file://${ctx.P('rel/path')}`}``). Browser\n * context has no real filesystem path, so the polyfill passes the input\n * through unchanged.\n */\n P: (path: string) => string;\n /**\n * Relative URL constructor — invoked as `new ctx.U(input)` by code that\n * Turbopack compiles from `new URL(<rel>, import.meta.url)`. Must be a\n * real constructor (not method shorthand) so `new` works; prototype is\n * `URL.prototype` so `instanceof URL` holds on the result.\n */\n U: new (\n input: string,\n ) => URL;\n /** Global object for this bundle */\n g: unknown;\n /** Module object */\n m: TurbopackModule;\n /** Exports object */\n e: Record<string, unknown>;\n}\n\n/**\n * Relative URL constructor — mirrors Turbopack's `relativeURL` helper for\n * the source pattern `new URL('./asset', import.meta.url)`. Declared as a\n * named function expression (not method shorthand) so that `new ctx.U(...)`\n * works; method shorthand creates non-constructable functions that throw\n * `TypeError: ... is not a constructor` under `new`.\n *\n * The body mirrors upstream Turbopack byte-for-byte: take the input URL\n * relative to a synthetic base, copy URL fields onto `this` as plain\n * values, override `href`/`pathname`/`origin`/`protocol`/`toString`/`toJSON`\n * to preserve the original input as the canonical representation, and\n * inherit `URL.prototype` so `instanceof URL` holds.\n */\nfunction RelativeURL(this: URL, inputUrl: string): void {\n const realUrl = new URL(inputUrl, 'x:/');\n const values: Record<string, unknown> = {};\n for (const key in realUrl) {\n values[key] = (realUrl as unknown as Record<string, unknown>)[key];\n }\n values.href = inputUrl;\n values.pathname = inputUrl.replace(/[?#].*/, '');\n values.origin = '';\n values.protocol = '';\n values.toString = () => inputUrl;\n values.toJSON = () => inputUrl;\n for (const key in values) {\n Object.defineProperty(this, key, {\n enumerable: true,\n configurable: true,\n value: values[key],\n });\n }\n}\nRelativeURL.prototype = URL.prototype;\n\n/**\n * Turbopack pushes chunks as flat arrays in one of two shapes:\n *\n * Module chunk (common case):\n * [scriptElement, id1, factory1, id2, factory2, ...]\n * - index 0: the script Element (document.currentScript) or undefined\n * - alternating pairs: numeric ID (prod) or path string (dev), then factory function\n *\n * Runtime manifest (bootstrapper only, no module factories):\n * [scriptElement, { otherChunks: [...], runtimeModuleIds: [...] }]\n *\n * Newer Next.js canary versions may also store modules as a plain object\n * { [moduleId]: factory } rather than as an array.\n */\ntype BundleModules =\n | (\n | Element\n | string\n | number\n | TurbopackModuleInit\n | Record<string, TurbopackModuleInit>\n | null\n | undefined\n )[]\n | Record<string, TurbopackModuleInit>\n | undefined;\n\n/**\n * Resolves a module within a scope: checks shared modules first, then\n * falls back to Turbopack module resolution. This is the scope-local\n * equivalent of the global __webpack_require__ dispatcher.\n */\nexport function requireModule(\n scope: RemoteScope,\n moduleId: string | number,\n fullId?: string,\n): unknown {\n const idStr = String(moduleId);\n\n // Shared modules are NOT cached in moduleCache because ctx.s() also\n // uses moduleCache for esmId lookups. Caching the host's frozen module\n // object here would cause ctx.s() to attempt Object.defineProperty on\n // it, failing with \"Cannot redefine property\" for non-configurable\n // exports. Keeping shared modules in their own map avoids the collision.\n //\n // Exact shared IDs must win over stale remote moduleCache entries. This is\n // a compatibility guard for the old shared-modules architecture, where a\n // remote chunk can instantiate a shared module before the broker has claimed\n // that ID. Delete this special ordering once all shared modules are resolved\n // through scope adapters before any remote factory can execute.\n const sharedModule = getSharedModule(scope, moduleId);\n if (sharedModule !== null) {\n if (scope.moduleCache[idStr]) {\n logDebug(\n 'TurbopackModule',\n `Shared module \"${idStr}\" resolved from host and overrides a cached remote copy in \"${scope.scopedName}\"`,\n );\n }\n return sharedModule;\n }\n\n // moduleCache is checked first inside handleTurbopackModule too, but\n // checking here keeps non-shared re-entry cheap.\n if (scope.moduleCache[idStr]) return scope.moduleCache[idStr];\n\n return handleTurbopackModule(\n scope,\n idStr,\n fullId ?? formatRemoteId(scope, idStr),\n );\n}\n\n/**\n * Handles Turbopack module resolution and execution.\n * Finds a module in the Turbopack bundle, executes its initializer with a\n * custom runtime context, and returns the module exports.\n */\nexport function handleTurbopackModule(\n scope: RemoteScope,\n moduleId: string,\n id: string,\n): unknown {\n // Cache check must come before module init lookup. Module initializers\n // re-enter handleTurbopackModule for their own imports, so without this\n // guard circular dependencies would infinite-loop.\n if (scope.moduleCache[moduleId]) {\n return scope.moduleCache[moduleId];\n }\n\n const modules = getTurbopackModules(scope) as BundleModules;\n\n // Log only if bundle is completely missing (critical error)\n if (!modules) {\n logError(\n 'TurbopackModule',\n `TURBOPACK_${scope.globalKey} is undefined (scope: \"${scope.scopedName}\")`,\n );\n }\n\n const moduleInit = findModuleInit(modules, moduleId);\n const exports = {} as Record<string, unknown>;\n const moduleExports = {\n exports,\n hot: createNoopHotModule(),\n };\n\n if (typeof moduleInit !== 'function') {\n throw new Error(\n `Module ${id} not found in bundle ${scope.name} with id ${moduleId}`,\n );\n }\n\n // store a reference to the module exports in the cache before execution\n // to handle circular dependencies\n scope.moduleCache[moduleId] = moduleExports.exports;\n\n // execute the module initializer with our custom Turbopack context\n moduleInit(\n createTurbopackContext(\n scope,\n exports,\n moduleExports,\n modules,\n moduleInit,\n id,\n ),\n moduleExports,\n exports,\n );\n\n // update the cache with the final exports (may have changed during execution)\n if (scope.moduleCache[moduleId] !== moduleExports.exports) {\n scope.moduleCache[moduleId] = moduleExports.exports;\n }\n\n return moduleExports.exports;\n}\n\n/**\n * Finds the module initializer function for a given ID in the Turbopack bundle.\n * Handles all bundle shapes: flat array, object map, nested arrays, and\n * embedded object entries within arrays. Performs exact match first, then\n * falls back to startsWith for dev-mode IDs with appended qualifiers.\n */\nexport function findModuleInit(\n modules: BundleModules | unknown[] | undefined,\n moduleId: string,\n): TurbopackModuleInit | undefined {\n if (!modules || typeof modules !== 'object') return;\n\n // Object format: { [id]: factory } (newer Next.js canary builds)\n if (!Array.isArray(modules)) {\n const key =\n moduleId in modules\n ? moduleId\n : Object.keys(modules).find((k) => k.startsWith(moduleId));\n return key !== undefined ? modules[key] : undefined;\n }\n\n const flat = modules.flat();\n\n // Two-pass ID search: exact match first to avoid prefix false positives.\n // The startsWith fallback handles dev-mode IDs with appended qualifiers\n // such as \"[project]/path.tsx [app-client] (ecmascript, async loader)\".\n let idx = flat.findIndex((e) => String(e) === String(moduleId));\n if (idx < 0) {\n idx = flat.findIndex(\n (e) => typeof e === 'string' && e.startsWith(moduleId),\n );\n }\n if (idx >= 0) {\n // Factory is the first function entry that follows the module ID\n return flat\n .slice(idx + 1)\n .find((e): e is TurbopackModuleInit => typeof e === 'function');\n }\n\n // Embedded object map: entries of the form { [moduleId]: factory }\n for (const entry of flat) {\n if (!entry || typeof entry !== 'object') continue;\n const obj = entry as Record<string, TurbopackModuleInit>;\n if (moduleId in obj) return obj[moduleId];\n const prefixKey = Object.keys(obj).find((k) => k.startsWith(moduleId));\n if (prefixKey) return obj[prefixKey];\n }\n return undefined;\n}\n\n/**\n * Creates the Turbopack context object that provides the runtime API for modules.\n * All context methods close over the scope directly — no global dispatch needed\n * for internal module-to-module calls.\n */\nfunction createTurbopackContext(\n scope: RemoteScope,\n exports: Record<string, unknown>,\n moduleExports: TurbopackModule,\n modules: BundleModules,\n moduleInit: TurbopackModuleInit,\n id: string,\n): TurbopackContext {\n /** Scope-local require: shared modules → turbopack module resolution. */\n const scopedRequire = (moduleId: string | number): unknown =>\n requireModule(scope, moduleId, formatRemoteId(scope, String(moduleId)));\n\n return {\n // HMR not implemented for Remote Components\n k: {\n register() {\n // omit\n },\n registerExports() {\n // omit\n },\n signature() {\n return (fn: unknown) => fn;\n },\n },\n\n // ESM exports setup\n s(\n bindings:\n | Record<string, () => unknown>\n | [...([string, () => unknown] | [string, number, () => unknown])],\n esmId?: string | number,\n ) {\n let mod = exports;\n if (typeof esmId === 'string' || typeof esmId === 'number') {\n if (!scope.moduleCache[esmId]) {\n scope.moduleCache[esmId] = {} as Record<string, unknown>;\n }\n mod = scope.moduleCache[esmId] as Record<string, unknown>;\n }\n\n Object.defineProperty(mod, '__esModule', { value: true });\n if (Array.isArray(bindings)) {\n let i = 0;\n while (i < bindings.length) {\n const propName = bindings[i++] as string;\n const tagOrFunc = bindings[i++];\n if (typeof tagOrFunc === 'number') {\n Object.defineProperty(mod, propName, {\n value: bindings[i++],\n enumerable: true,\n writable: false,\n });\n } else {\n const getterFn = tagOrFunc as () => unknown;\n if (typeof bindings[i] === 'function') {\n const setterFn = bindings[i++] as (v: unknown) => unknown;\n Object.defineProperty(mod, propName, {\n get: getterFn,\n set: setterFn,\n enumerable: true,\n });\n } else {\n Object.defineProperty(mod, propName, {\n get: getterFn,\n enumerable: true,\n });\n }\n }\n }\n }\n },\n\n // import — resolves directly via scope, no global dispatch\n i(importId: string | number) {\n let mod: Record<string, unknown> | undefined;\n if (typeof importId === 'string') {\n // parse export syntax if present (e.g., \"module <export foo as bar>\")\n const { exportSource, exportName } =\n /\\s+<export (?<exportSource>.*?) as (?<exportName>.*?)>$/.exec(\n importId,\n )?.groups ?? {};\n const normalizedId = importId.replace(\n /\\s+<export(?<specifier>.*)>$/,\n '',\n );\n mod = scopedRequire(normalizedId) as\n | Record<string, unknown>\n | undefined;\n // map the requested export to the module exports\n if (\n mod &&\n exportSource &&\n exportName &&\n (exportSource === '*' || typeof mod[exportSource] !== 'undefined') &&\n typeof mod[exportName] === 'undefined'\n ) {\n if (exportSource === '*') {\n mod[exportName] = mod;\n } else {\n mod[exportName] = mod[exportSource];\n }\n }\n } else {\n mod = scopedRequire(importId) as Record<string, unknown> | undefined;\n }\n\n if (typeof mod !== 'object' || mod === null) {\n mod = { default: mod };\n } else if (\n !('default' in mod) &&\n // ES module namespace objects have a null prototype, so calling\n // mod.toString() directly throws. Use Object.prototype.toString\n // to safely detect them.\n Object.prototype.toString.call(mod) !== '[object Module]'\n ) {\n try {\n mod.default = mod;\n } catch {\n // ignore if mod is not extensible\n }\n }\n return mod;\n },\n\n // require — resolves directly via scope\n r(requireId: string | number) {\n return scopedRequire(requireId);\n },\n\n // exportValue — mirrors upstream Turbopack's `exportValue`, which sets\n // `module.exports = value` regardless of value type. Most importantly,\n // when Turbopack emits an async-loader module the body is\n // ctx.v((parentImport) => Promise.all([...]).then(() => parentImport(id)))\n // The function must be stored as-is so that the consumer's `ctx.A(id)`\n // can invoke it with the real parent-import resolver. Calling it eagerly\n // here (the prior remote-components behavior) ran the loader with the\n // wrong argument and stored a `Promise` as `exports.default`, which then\n // crashed `ctx.A` with `.default is not a function`.\n v(value: unknown) {\n moduleExports.exports = value as Record<string, unknown>;\n },\n\n // exportUrl — used by static asset modules (images, fonts, JSON, etc.).\n // Turbopack emits a tiny module whose entire body is ctx.q(url), which\n // sets module.exports to the asset URL string so importers get the URL\n // as the module's default export.\n q(value: unknown, esmId?: string | number) {\n if (esmId != null) {\n scope.moduleCache[String(esmId)] = value as Record<string, unknown>;\n } else {\n moduleExports.exports = value as Record<string, unknown>;\n }\n },\n\n // exportNamespace — Turbopack emits `ctx.n(namespace, esmId?)` when a\n // module's exports should be replaced wholesale with a precomputed ESM\n // namespace object (commonly at module evaluation time for re-export\n // patterns and CJS-to-ESM interop wrappers). Mirrors upstream\n // `exportNamespace` which sets both `module.exports` and\n // `module.namespaceObject`; remote-components keeps a single exports\n // record per module, so we assign to `exports` only.\n n(namespace: unknown, esmId?: string | number) {\n if (esmId != null) {\n scope.moduleCache[String(esmId)] = namespace as Record<string, unknown>;\n } else {\n moduleExports.exports = namespace as Record<string, unknown>;\n }\n },\n\n // async module initializer\n async a(\n mod: (\n handleDeps: unknown,\n setResult: (value: unknown) => void,\n ) => Promise<void>,\n ) {\n let result;\n await mod(\n () => {\n // not implemented\n },\n (value) => (result = value),\n );\n exports.default = result;\n },\n\n // async module loader — resolves directly via scope.\n //\n // Upstream Turbopack's `asyncLoader` treats `require(id)` itself as the\n // loader function (see `module.exports = loaderFn` set by the factory).\n // remote-components additionally supports `{ default: loaderFn }`, which\n // is what a factory using `ctx.s([['default', () => fn]], ...)` produces.\n // Both shapes must be accepted: when `ctx.n(loaderFn, esmId)` injects a\n // function directly into the cache, the require result is the function\n // itself and there is no `.default` to dereference.\n async A(Aid: string | number) {\n const mod = scopedRequire(Aid);\n const loader =\n typeof mod === 'function'\n ? (mod as (p: (id: string) => unknown) => Promise<unknown>)\n : ((mod as { default?: unknown } | null | undefined)?.default as\n | ((p: (id: string) => unknown) => Promise<unknown>)\n | undefined);\n if (typeof loader !== 'function') {\n throw new Error(\n `Async module loader for \"${Aid}\" is not a function (got ${typeof loader})`,\n );\n }\n return loader((parentId: string) => scopedRequire(parentId));\n },\n\n // dynamic import tracking — no-op for remote components\n j() {\n // omit\n },\n\n // chunk loader — loads directly via scope, no global dispatch\n l(url: string) {\n // find the script tag that loaded the current module to determine base URL\n const flatModules = Array.isArray(modules) ? modules : [];\n const moduleInitIndex = flatModules.indexOf(moduleInit);\n if (moduleInitIndex !== -1) {\n const scriptIndex = flatModules\n .slice(0, moduleInitIndex)\n .findLastIndex((bundleEntry) => bundleEntry instanceof Element);\n if (scriptIndex !== -1) {\n const script = flatModules[scriptIndex] as HTMLScriptElement;\n const scriptSrc = script.getAttribute('data-turbopack-src') || '';\n const nextIndex = scriptSrc.indexOf('/_next');\n const baseUrl = nextIndex !== -1 ? scriptSrc.slice(0, nextIndex) : '';\n const chunkUrl = `${baseUrl}/_next/${url}`;\n return loadChunkWithScope(scope, formatRemoteId(scope, chunkUrl));\n }\n }\n throw new Error(\n `Failed to load Turbopack chunk \"${url}\" for module \"${id}\". Check the URL is correct.`,\n );\n },\n\n // resolveAbsolutePath — Turbopack uses this to construct file:// URLs\n // for source-map and debug output. Browser context has no real\n // filesystem path; passing the input through unchanged keeps the\n // surface satisfied without inventing values.\n P(path: string): string {\n return path;\n },\n\n // relativeURL constructor — see RelativeURL function declaration above\n // for the constructor-vs-method-shorthand explanation.\n U: RelativeURL as unknown as new (input: string) => URL,\n\n // globalThis substitute shared across all modules in this scope\n g: scope.moduleGlobal,\n m: moduleExports,\n e: exports,\n };\n}\n\nfunction createNoopHotModule(): TurbopackHotModule {\n // Remote Components does not implement HMR, but Next.js dev page-loader\n // modules still call module.hot.* when Turbopack emits Pages Router code.\n return {\n active: true,\n data: {},\n accept() {},\n dispose() {},\n invalidate() {},\n };\n}\n","import {\n createSharedModulePlan,\n installSharedModulePlan,\n isSharedModuleManifest,\n type RemoteSharedModules,\n SHARED_MODULE_MANIFEST_PROTOCOL,\n type SharedModuleFactory,\n type SharedModuleManifest,\n} from '#internal/host/shared/shared-broker';\nimport type { GlobalScope } from '#internal/runtime/types';\nimport { logDebug, logError, logWarn } from '#internal/utils/logger';\nimport { findModuleInit, handleTurbopackModule, requireModule } from './module';\nimport {\n ASYNC_MODULE_CALLBACK_RE,\n ASYNC_MODULE_LOADER_RE,\n extractGroup,\n normalizeModuleId,\n REMOTE_SHARED_ASSIGNMENT_RE,\n REMOTE_SHARED_MARKER_RE,\n} from './patterns';\nimport { formatRemoteId, type RemoteScope } from './remote-scope';\n\nconst DEDUPLICATION_WARNING =\n 'This module will not be deduplicated — the remote may load its own copy, ' +\n 'which can cause duplicate instance errors (e.g. invalid hook calls if React is loaded twice).';\n// `asyncSharedModuleId` accepts: quoted string, integer, or integer in\n// scientific notation (e.g. `35e3`). Production minifiers occasionally\n// emit the scientific form; see normalizeModuleId() / MODULE_ID_PATTERN\n// in ./patterns.ts for the matching marker-extraction path.\nconst INLINE_REMOTE_SHARED_RE =\n /[\"']?__remote_shared_module_(?<specifier>[^\"':]+)[\"']?\\s*:\\s*\\(\\)\\s*=>\\s*(?:__turbopack_context__|[a-z])\\.A\\((?<asyncSharedModuleId>\"[^\"]+\"|[0-9]+e[0-9]+|[0-9]+)\\)/g;\n\n/**\n * Returns the flat module list for a scope.\n *\n * The primary source is `scope.turbopackModules` — a flat array populated by\n * the push interceptor in handleTurbopackChunk. This is immune to the\n * turbopack runtime replacing the TURBOPACK global (canary builds swap the\n * array for a deferred-loading dispatcher object).\n *\n * Falls back to reading the global for pre-populated bundles where the push\n * interceptor was never installed.\n */\nexport function getTurbopackModules(scope: RemoteScope): unknown[] | undefined {\n if (scope.turbopackModules.length > 0) {\n return scope.turbopackModules;\n }\n\n // Fallback: read the global for pre-populated bundles or legacy setups.\n const self = globalThis as GlobalScope;\n const raw = self[`TURBOPACK_${scope.globalKey}`];\n if (!raw) return undefined;\n\n if (Array.isArray(raw)) {\n return (raw as unknown[]).flat();\n }\n return Object.entries(raw as Record<string, unknown>).flat();\n}\n\n/**\n * Initializes shared modules between the host application and remote components.\n * This enables sharing of common dependencies like React to avoid duplicate instances.\n *\n * The function works by:\n * 1. Looking for a shared module initializer in the Turbopack bundle\n * 2. Extracting module IDs from the initializer\n * 3. Loading the corresponding host modules and mapping them to the remote's expected IDs\n */\nexport async function initializeSharedModules(\n scope: RemoteScope,\n hostShared: Record<string, SharedModuleFactory> = {},\n remoteShared: RemoteSharedModules = {},\n // biome-ignore lint/suspicious/noConfusingVoidType: Runtime is undefined but in TS land service it is void\n): Promise<void[]> {\n const allModules = getTurbopackModules(scope);\n\n logDebug(\n 'SharedModules',\n `initializeSharedModules: scope=\"${scope.scopedName}\", ` +\n `allModules=${allModules ? allModules.length : 'null'}, ` +\n `hostShared=[${Object.keys(hostShared).join(', ')}], ` +\n `remoteShared=${JSON.stringify(remoteShared)}`,\n );\n\n let sharedModuleInitializer: Promise<{\n shared: Record<string, string | (() => Promise<unknown>)>;\n }> | null = null;\n\n // find the shared module initializer in the Turbopack bundle\n if (allModules) {\n // find the shared module initializer module id by looking for\n // a function that contains the TURBOPACK_REMOTE_SHARED pattern\n const sharedModuleInitializerIndex = allModules.findIndex((idOrFunc) => {\n if (typeof idOrFunc !== 'function') {\n return false;\n }\n const funcCode = idOrFunc.toString();\n return REMOTE_SHARED_MARKER_RE.test(funcCode);\n });\n\n // if found, extract the shared module initializer\n // first element in the array is always the source script element\n if (sharedModuleInitializerIndex > 0) {\n const sharedModuleInitializerCode = (\n allModules[sharedModuleInitializerIndex] as () => unknown\n ).toString();\n const sharedModuleInitializerId = allModules[\n sharedModuleInitializerIndex - 1\n ] as string | number;\n // extract the shared module id from the function code\n const sharedModuleId = extractGroup(\n REMOTE_SHARED_ASSIGNMENT_RE,\n sharedModuleInitializerCode,\n 'sharedModuleId',\n );\n // Load the shared-module-initializer module. Turbopack emits its\n // factory body as\n // ctx.v((parentImport) => Promise.all([...]).then(() => parentImport(id)))\n // so `module.exports` IS the loader function (upstream `exportValue`\n // semantics). Earlier versions of remote-components' `ctx.v` eagerly\n // invoked the function and stored the resulting Promise on\n // `exports.default` — that shape is preserved here as a fallback for\n // bundles built against the old runtime, but the primary path now\n // invokes the loader explicitly with `requireModule` as the parent\n // import (the actual scope-bound require).\n if (sharedModuleId) {\n const moduleExports = handleTurbopackModule(\n scope,\n sharedModuleId,\n formatRemoteId(scope, String(sharedModuleInitializerId)),\n );\n type Loader = (\n parentImport: (id: string | number) => unknown,\n ) => Promise<{\n shared: Record<string, string | (() => Promise<unknown>)>;\n }>;\n const loaderCandidate =\n typeof moduleExports === 'function'\n ? moduleExports\n : (moduleExports as { default?: unknown })?.default;\n if (typeof loaderCandidate === 'function') {\n sharedModuleInitializer = (loaderCandidate as Loader)((parentId) =>\n requireModule(scope, parentId),\n );\n } else if (\n loaderCandidate &&\n typeof (loaderCandidate as { then?: unknown }).then === 'function'\n ) {\n sharedModuleInitializer = loaderCandidate as Promise<{\n shared: Record<string, string | (() => Promise<unknown>)>;\n }>;\n }\n }\n }\n\n // if we have a shared module initializer, load the shared modules from the host application\n if (sharedModuleInitializer) {\n const { shared } = await sharedModuleInitializer;\n // map shared module ids to their initializer functions\n const sharedModuleIds = extractSharedModuleIds(shared, scope);\n logDebug(\n 'SharedModules',\n `Resolved shared modules for scope=\"${scope.scopedName}\": ${JSON.stringify(sharedModuleIds)}`,\n );\n\n return installSharedModules(\n scope,\n hostShared,\n preferSharedManifest(sharedModuleIds, remoteShared),\n (id, module) =>\n `Host shared module \"${module}\" not found for ID ${id}. ${DEDUPLICATION_WARNING}`,\n );\n }\n\n const inlineSharedModuleIds = extractInlineSharedModuleIds(\n allModules,\n scope,\n );\n if (Object.keys(inlineSharedModuleIds).length > 0) {\n logDebug(\n 'SharedModules',\n `Resolved inline shared modules for scope=\"${scope.scopedName}\": ${JSON.stringify(inlineSharedModuleIds)}`,\n );\n\n return installSharedModules(\n scope,\n hostShared,\n preferSharedManifest(inlineSharedModuleIds, remoteShared),\n (id, module) =>\n `Host shared module \"${module}\" not found for inline ID ${id}. ${DEDUPLICATION_WARNING}`,\n );\n }\n\n logWarn(\n 'SharedModules',\n `No shared module initializer found in bundle for scope=\"${scope.scopedName}\" — falling back to remoteShared mapping`,\n );\n } else {\n logWarn(\n 'SharedModules',\n `No TURBOPACK modules found for scope=\"${scope.scopedName}\" (TURBOPACK_${scope.globalKey} is empty)`,\n );\n }\n\n const normalizedRemoteShared =\n normalizeRemoteSharedForTurbopackFallback(remoteShared);\n return installSharedModules(\n scope,\n hostShared,\n normalizedRemoteShared,\n (_id, module) =>\n `Shared module \"${module}\" not found for \"${scope.name}\". ${DEDUPLICATION_WARNING}`,\n );\n}\n\n/**\n * Extracts shared module IDs from the shared module initializer functions.\n * This parses the minified Turbopack code to find the module ID mappings.\n */\nfunction extractSharedModuleIds(\n shared: Record<string, string | (() => Promise<unknown>)>,\n scope: RemoteScope,\n): Record<string, string> {\n return Object.entries(shared)\n .filter(([, value]) => typeof value === 'function')\n .reduce<Record<string, string>>((acc, [key, value]) => {\n const asyncSharedModuleId = extractGroup(\n ASYNC_MODULE_LOADER_RE,\n value.toString(),\n 'asyncSharedModuleId',\n );\n\n if (asyncSharedModuleId) {\n const asyncSharedModule = findModuleInit(\n getTurbopackModules(scope),\n asyncSharedModuleId,\n );\n if (asyncSharedModule) {\n const sharedModuleId = extractGroup(\n ASYNC_MODULE_CALLBACK_RE,\n asyncSharedModule.toString(),\n 'sharedModuleId',\n );\n // map the shared module id to the actual module name\n acc[sharedModuleId ?? asyncSharedModuleId] = key.replace(\n '__remote_shared_module_',\n '',\n );\n }\n }\n return acc;\n }, {});\n}\n\nfunction extractInlineSharedModuleIds(\n allModules: unknown[],\n scope: RemoteScope,\n): Record<string, string> {\n const sharedModuleIds: Record<string, string> = {};\n\n for (const idOrFunc of allModules) {\n if (typeof idOrFunc !== 'function') continue;\n\n const funcCode = idOrFunc.toString();\n if (!funcCode.includes('__remote_shared_module_')) continue;\n\n INLINE_REMOTE_SHARED_RE.lastIndex = 0;\n for (const match of funcCode.matchAll(INLINE_REMOTE_SHARED_RE)) {\n const specifier = match.groups?.specifier;\n const rawAsyncSharedModuleId = stripQuotes(\n match.groups?.asyncSharedModuleId,\n );\n const asyncSharedModuleId = rawAsyncSharedModuleId\n ? normalizeModuleId(rawAsyncSharedModuleId)\n : undefined;\n if (!specifier || !asyncSharedModuleId) continue;\n\n const asyncSharedModule = findModuleInit(\n getTurbopackModules(scope),\n asyncSharedModuleId,\n );\n if (!asyncSharedModule) continue;\n\n const sharedModuleId = extractGroup(\n ASYNC_MODULE_CALLBACK_RE,\n asyncSharedModule.toString(),\n 'sharedModuleId',\n );\n sharedModuleIds[sharedModuleId ?? asyncSharedModuleId] = specifier;\n }\n }\n\n return sharedModuleIds;\n}\n\nfunction stripQuotes(value: string | undefined): string | undefined {\n if (value?.startsWith('\"') && value.endsWith('\"')) {\n return value.slice(1, -1);\n }\n return value;\n}\n\nfunction installSharedModules(\n scope: RemoteScope,\n hostShared: Record<string, SharedModuleFactory>,\n sharedModuleIds: RemoteSharedModules,\n missingMessage: (id: string, module: string) => string,\n): Promise<undefined[]> {\n const plan = createSharedModulePlan({\n bundle: scope.name,\n hostShared,\n remoteShared: sharedModuleIds,\n scope: `remote:${scope.scopedName}`,\n callerTag: 'SharedModules',\n });\n\n for (const entry of plan.entries) {\n if (entry.status === 'resolved') {\n // Compatibility with the old shared-modules architecture: a remote\n // factory may have already cached its own implementation for this ID.\n // The broker-owned scope.sharedModules entry must replace it. Remove\n // this cache cleanup once Turbopack remotes cannot execute shared\n // factories before the scoped share plan is installed.\n delete scope.moduleCache[entry.id];\n }\n }\n\n return installSharedModulePlan({\n plan,\n target: scope.sharedModules,\n callerTag: 'SharedModules',\n onMissing: (entry) => {\n logError('SharedModules', missingMessage(entry.id, entry.specifier));\n },\n }).then((results) => {\n for (const entry of plan.entries) {\n if (entry.status === 'resolved') {\n delete scope.moduleCache[entry.id];\n }\n }\n return results;\n });\n}\n\nfunction preferSharedManifest(\n sharedModuleIds: Record<string, string>,\n remoteShared: RemoteSharedModules,\n): RemoteSharedModules {\n if (!isSharedModuleManifest(remoteShared)) return sharedModuleIds;\n\n const extractedIdBySpecifier = new Map(\n Object.entries(sharedModuleIds).map(([id, specifier]) => [specifier, id]),\n );\n\n return {\n protocol: SHARED_MODULE_MANIFEST_PROTOCOL,\n requirements: remoteShared.requirements.map((requirement) => {\n return {\n ...requirement,\n id: extractedIdBySpecifier.get(requirement.specifier) ?? requirement.id,\n };\n }),\n };\n}\n\nfunction normalizeRemoteSharedForTurbopackFallback(\n remoteShared: RemoteSharedModules,\n): RemoteSharedModules {\n if (isSharedModuleManifest(remoteShared)) {\n return {\n ...remoteShared,\n requirements: remoteShared.requirements.map((requirement) => ({\n ...requirement,\n id:\n typeof requirement.id === 'string'\n ? requirement.id.replace('[app-ssr]', '[app-client]')\n : requirement.id,\n })),\n } satisfies SharedModuleManifest;\n }\n\n // @legacy(remote-components<=0.4.x): normalize server-side generated\n // Turbopack IDs from the historical shared map until 0.4.x remotes are\n // outside the compatibility window.\n return Object.fromEntries(\n Object.entries(remoteShared).map(([id, module]) => [\n id.replace('[app-ssr]', '[app-client]'),\n module,\n ]),\n );\n}\n\n/**\n * Returns a shared module for the given scope and module ID.\n * Shared modules are common dependencies like React that are provided by the host.\n */\nexport function getSharedModule(\n scope: RemoteScope,\n id: string | number,\n): unknown {\n const idStr = String(id);\n\n // Exact match first (covers both string and numeric IDs)\n if (scope.sharedModules[idStr] !== undefined) {\n return scope.sharedModules[idStr];\n }\n\n // Fallback: the id may be a bundle-prefixed string like \"[bundle] /react/index.js\"\n // or a Turbopack dev id like \"[project]/node_modules/react/index.js [client]\".\n // Only path-like keys use the dev-id qualifier match to avoid \"react\"\n // matching \"react-dom\".\n for (const [key, value] of Object.entries(scope.sharedModules)) {\n if (\n typeof value !== 'undefined' &&\n idStr !== key &&\n matchesSharedModuleKey(idStr, key)\n ) {\n return value;\n }\n }\n\n return null;\n}\n\nfunction matchesSharedModuleKey(id: string, key: string): boolean {\n if (id.endsWith(key)) return true;\n if (!key.includes('/') && !key.endsWith('.js')) return false;\n\n const index = id.lastIndexOf(key);\n if (index < 0) return false;\n\n const afterKey = id.slice(index + key.length);\n return /^\\s+(?:\\[[^\\]]+\\]\\s*)?(?:\\([^)]*\\))?$/.test(afterKey);\n}\n","import type React from 'react';\nimport { getNamespace } from '#internal/runtime/namespace';\nimport { requireModule } from '#internal/runtime/turbopack/module';\nimport {\n getScope,\n type RemoteScope,\n} from '#internal/runtime/turbopack/remote-scope';\nimport { getTurbopackModules } from '#internal/runtime/turbopack/shared-modules';\nimport { RemoteComponentsError } from '#internal/utils/error';\nimport { logDebug } from '#internal/utils/logger';\n\ntype PageComponent = React.ComponentType<Record<string, unknown>>;\ntype AppComponent = React.ComponentType<\n { Component: PageComponent } & Record<string, unknown>\n>;\ntype NextPageEntry = [string, () => { default?: PageComponent }];\ntype NextAppEntry = [string, () => { default?: AppComponent }];\n\n// module loader for Next.js Pages Router\nexport function nextClientPagesLoader(\n bundle: string,\n route: string,\n styleContainer: HTMLHeadElement | ShadowRoot | null = document.head,\n): { Component: PageComponent | null; App: AppComponent | null } {\n // make a typed reference to the global scope\n const self = globalThis as typeof globalThis & {\n // webpack remote module loading function scoped for each bundle\n __remote_webpack_require__?: Record<\n string,\n ((remoteId: string | number) => unknown) & {\n c?: Record<\n string | number,\n { id: string; parents: string[]; children: string[] }\n >;\n m?: Record<string | number, (module: { exports: unknown }) => void>;\n type?: 'turbopack' | 'webpack';\n }\n >;\n // webpack module map for each bundle used in production builds\n __remote_webpack_module_map__?: Record<string, Record<string, number>>;\n // Next.js client pages loader reference storage\n __NEXT_P?: [\n (\n | [\n string,\n () => { default?: React.ComponentType<Record<string, unknown>> },\n ]\n | undefined\n ),\n (\n | [\n string,\n () => {\n default?: React.ComponentType<\n {\n Component: React.ComponentType<Record<string, unknown>>;\n } & Record<string, unknown>\n >;\n },\n ]\n | undefined\n ),\n (\n | [\n string,\n () => {\n default?: React.ComponentType<\n {\n Component: React.ComponentType<Record<string, unknown>>;\n } & Record<string, unknown>\n >;\n },\n ]\n | undefined\n ),\n ];\n };\n\n const ns = getNamespace();\n ns.pageComponentCache ??= {};\n const cacheKey = `${bundle}:${route}`;\n const remoteRequire = self.__remote_webpack_require__?.[bundle];\n const turbopackScope =\n remoteRequire?.type === 'turbopack' ? getScope(bundle) : undefined;\n\n // Applies the cached CSS for `bundle` into the caller's styleContainer.\n // Mirrors the final CSS-attach step of the fresh-load path so that cache\n // hits and additional host instances (each with their own shadow root)\n // still receive the styles.\n const applyBundleCss = () => {\n const elements = ns.cssCache[bundle] ?? [];\n if (styleContainer) {\n for (const el of elements) {\n styleContainer.appendChild(el.cloneNode(true));\n }\n } else {\n for (const el of elements) {\n document.head.appendChild(el);\n }\n }\n };\n\n // On repeat loads (e.g. after history.back()) the next-client-pages-loader\n // chunk is already cached by webpack and its factory won't re-run, so\n // __NEXT_P wouldn't be populated. Reuse the Component/App extracted on the\n // first load, but still run the CSS attach below because the caller may be\n // a different host instance with its own styleContainer.\n const cachedEntry = ns.pageComponentCache[cacheKey];\n if (cachedEntry) {\n applyBundleCss();\n return cachedEntry;\n }\n\n // temporarily remove the original Next.js CSS loader\n const nextCssOriginal = document.querySelector(\n `[id=\"__next_css__DO_NOT_USE__\"]:not([data-bundle=\"${bundle}\"][data-route=\"${route}\"])`,\n );\n const nextCssOriginalParent = nextCssOriginal?.parentNode ?? null;\n const nextCssOriginalNextSibling = nextCssOriginal?.nextSibling ?? null;\n if (nextCssOriginal) {\n nextCssOriginalParent?.removeChild(nextCssOriginal);\n }\n\n // create a new Next.js CSS loader element\n const nextCss = document.createElement('noscript');\n nextCss.id = '__next_css__DO_NOT_USE__';\n nextCss.setAttribute('data-bundle', bundle);\n nextCss.setAttribute('data-route', route);\n const nextCssEnd = document.createElement('noscript');\n nextCssEnd.id = '__next_css__DO_NOT_USE_END__';\n nextCssEnd.setAttribute('data-bundle', bundle);\n nextCssEnd.setAttribute('data-route', route);\n document.head.appendChild(nextCssEnd);\n document.head.appendChild(nextCss);\n\n // find the page component loader chunk\n const componentLoaderChunk =\n (turbopackScope\n ? findTurbopackPagesLoaderId(turbopackScope, route)\n : undefined) ??\n Object.keys(remoteRequire?.m ?? {}).find(\n (key) =>\n key.includes('/webpack/loaders/next-client-pages-loader.js') &&\n key.includes(`page=${encodeURIComponent(route)}!`),\n ) ??\n Object.keys(remoteRequire?.m ?? {}).find((key) =>\n key.includes('/next/dist/client/page-loader.js'),\n ) ??\n self.__remote_webpack_module_map__?.[bundle]?.[\n Object.keys(self.__remote_webpack_module_map__[bundle] ?? {}).find(\n (key) =>\n key.includes('/webpack/loaders/next-client-pages-loader.js') &&\n key.includes(`page=${encodeURIComponent(route)}!`),\n ) ??\n Object.keys(self.__remote_webpack_module_map__[bundle] ?? {}).find(\n (key) => key.includes('/next/dist/client/page-loader.js'),\n ) ??\n ''\n ] ??\n -1;\n\n // find the app loader chunk\n const appLoaderChunk =\n (turbopackScope\n ? findTurbopackPagesLoaderId(turbopackScope, '/_app')\n : undefined) ??\n Object.keys(remoteRequire?.m ?? {}).find(\n (key) =>\n key.includes('/webpack/loaders/next-client-pages-loader.js') &&\n key.includes(`page=%2F_app`),\n ) ??\n Object.keys(remoteRequire?.m ?? {}).find((key) =>\n key.includes('/next/dist/client/page-loader.js'),\n ) ??\n self.__remote_webpack_module_map__?.[bundle]?.[\n Object.keys(self.__remote_webpack_module_map__[bundle] ?? {}).find(\n (key) =>\n key.includes('/webpack/loaders/next-client-pages-loader.js') &&\n key.includes(`page=%2F_app`),\n ) ??\n Object.keys(self.__remote_webpack_module_map__[bundle] ?? {}).find(\n (key) => key.includes('/next/dist/client/page-loader.js'),\n ) ??\n ''\n ] ??\n -1;\n\n // if we didn't find the component loader or app loader, throw an error\n if (!isLoaderId(componentLoaderChunk) || !isLoaderId(appLoaderChunk)) {\n throw new RemoteComponentsError(\n `Next.js client pages loader not found in bundle \"${bundle}\".`,\n );\n }\n\n // temporarily store the original __NEXT_P reference\n // this is required to avoid conflicts with the Next.js client pages loader\n // which uses the same global variable to store the page components\n const __NEXT_P_ORIGINAL = self.__NEXT_P;\n const selfOriginal = self;\n delete selfOriginal.__NEXT_P;\n\n try {\n // load the component and app loader chunks\n loadPagesLoaderModule(bundle, componentLoaderChunk, turbopackScope);\n if (isLoaderId(appLoaderChunk)) {\n loadPagesLoaderModule(bundle, appLoaderChunk, turbopackScope);\n }\n\n // if we have the __NEXT_P global variable, we can extract the component and app\n if (self.__NEXT_P) {\n logDebug(\n 'ComponentLoader',\n `Next.js Pages loader registry for \"${route}\" in \"${bundle}\": ${self.__NEXT_P.map((entry) => entry?.[0] ?? '<empty>').join(', ')}`,\n );\n const componentEntry = (self.__NEXT_P.find(\n (entry) => entry?.[0] === route,\n ) ?? self.__NEXT_P[0]) as NextPageEntry | undefined;\n const appEntry = (self.__NEXT_P.find((entry) => entry?.[0] === '/_app') ??\n self.__NEXT_P[2]) as NextAppEntry | undefined;\n const [, componentLoader] = componentEntry ?? [\n undefined,\n () => ({ default: null }),\n ];\n const [, appLoader] = appEntry ?? [\n undefined,\n () => ({\n default: null,\n }),\n ];\n const { default: Component = null } = componentLoader();\n const { default: App = null } = appLoader();\n\n const cssCache = ns.cssCache;\n\n if (!cssCache[bundle]) {\n // load the CSS files from the remote bundle\n const cssRE = /\\.s?css$/;\n Object.keys(self.__remote_webpack_require__?.[bundle]?.m ?? {})\n .filter((id) => cssRE.test(id))\n .forEach((id) => {\n self.__remote_webpack_require__?.[bundle]?.(id);\n });\n\n Object.keys(self.__remote_webpack_module_map__?.[bundle] ?? {})\n .filter((path) => cssRE.test(path))\n .forEach((path) => {\n const id = self.__remote_webpack_module_map__?.[bundle]?.[path];\n if (id) {\n self.__remote_webpack_require__?.[bundle]?.(id);\n }\n });\n\n const elements = [];\n let node = nextCss.previousSibling;\n while (node && node !== nextCssEnd) {\n elements.push(node);\n node.remove();\n node = nextCss.previousSibling;\n }\n cssCache[bundle] = elements;\n }\n\n applyBundleCss();\n\n const result = { Component, App };\n ns.pageComponentCache[cacheKey] = result;\n return result;\n }\n\n logDebug(\n 'ComponentLoader',\n `Next.js Pages loaders for route \"${route}\" in \"${bundle}\" did not populate __NEXT_P`,\n );\n return { Component: null, App: null };\n } finally {\n // restore the original __NEXT_P reference\n if (typeof __NEXT_P_ORIGINAL === 'undefined') {\n delete self.__NEXT_P;\n } else {\n self.__NEXT_P = __NEXT_P_ORIGINAL;\n }\n // restore the original Next.js CSS loader\n if (nextCssOriginal && nextCssOriginalParent) {\n const restoreBefore =\n nextCssOriginalNextSibling?.parentNode === nextCssOriginalParent\n ? nextCssOriginalNextSibling\n : null;\n nextCssOriginalParent.insertBefore(nextCssOriginal, restoreBefore);\n }\n\n nextCss.remove();\n nextCssEnd.remove();\n }\n}\n\ntype LoaderId = string | number;\n\nfunction isLoaderId(id: unknown): id is LoaderId {\n return (\n (typeof id === 'string' && id.length > 0) ||\n (typeof id === 'number' && id !== -1)\n );\n}\n\nfunction loadPagesLoaderModule(\n bundle: string,\n id: LoaderId,\n turbopackScope: RemoteScope | undefined,\n) {\n const self = globalThis as typeof globalThis & {\n __remote_webpack_require__?: Record<\n string,\n ((remoteId: string | number) => unknown) & {\n c?: Record<string | number, unknown>;\n type?: 'turbopack' | 'webpack';\n }\n >;\n };\n\n if (turbopackScope) {\n delete turbopackScope.moduleCache[String(id)];\n requireModule(turbopackScope, id);\n return;\n }\n\n const remoteRequire = self.__remote_webpack_require__?.[bundle];\n if (remoteRequire?.c) {\n delete remoteRequire.c[id];\n }\n remoteRequire?.(id);\n}\n\nfunction findTurbopackPagesLoaderId(\n scope: RemoteScope,\n route: string,\n): LoaderId | undefined {\n const modules = getTurbopackModules(scope);\n if (!modules) return undefined;\n\n const routeLiteral = JSON.stringify(route);\n const singleQuotedRouteLiteral = `'${route.replaceAll(\"'\", \"\\\\'\")}'`;\n const flat = modules.flat();\n\n for (let index = 0; index < flat.length; index++) {\n const entry = flat[index];\n\n if (typeof entry === 'function') {\n const code = entry.toString();\n if (\n code.includes('__NEXT_P') &&\n (code.includes(routeLiteral) || code.includes(singleQuotedRouteLiteral))\n ) {\n const id = findPreviousModuleId(flat, index);\n if (isLoaderId(id) && isTurbopackPagesLoaderId(id)) {\n logDebug(\n 'SharedModules',\n `Resolved Turbopack Pages loader for route \"${route}\" in \"${scope.scopedName}\" as \"${id}\"`,\n );\n return id;\n }\n }\n continue;\n }\n\n if (!entry || typeof entry !== 'object' || Array.isArray(entry)) continue;\n if (typeof Element !== 'undefined' && entry instanceof Element) continue;\n\n for (const [id, moduleInit] of Object.entries(\n entry as Record<string, unknown>,\n )) {\n if (typeof moduleInit !== 'function') continue;\n const code = moduleInit.toString();\n if (\n code.includes('__NEXT_P') &&\n (code.includes(routeLiteral) ||\n code.includes(singleQuotedRouteLiteral)) &&\n isTurbopackPagesLoaderId(id)\n ) {\n logDebug(\n 'SharedModules',\n `Resolved Turbopack Pages loader for route \"${route}\" in \"${scope.scopedName}\" as \"${id}\"`,\n );\n return id;\n }\n }\n }\n\n return undefined;\n}\n\nfunction isTurbopackPagesLoaderId(id: LoaderId): boolean {\n if (typeof id === 'number') return true;\n return (\n id.includes('[next]/entry/page-loader.ts') ||\n id.includes('/next/dist/client/page-loader.js')\n );\n}\n\nfunction findPreviousModuleId(\n entries: unknown[],\n factoryIndex: number,\n): LoaderId | undefined {\n for (let index = factoryIndex - 1; index >= 0; index--) {\n const entry = entries[index];\n if (isLoaderId(entry)) return entry;\n if (typeof entry === 'function') return undefined;\n }\n return undefined;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/host/html/runtime/turbopack.ts"],"sourcesContent":["import { applySharedModules } from '#internal/config/webpack/apply-shared-modules';\nimport { nextClientPagesLoader } from '#internal/config/webpack/next-client-pages-loader';\nimport type { InternalResolveClientUrl } from '#internal/host/server/types';\nimport type { RemoteSharedModules } from '#internal/host/shared/shared-broker';\nimport {\n buildCoreShared,\n buildHostShared,\n} from '#internal/host/shared/shared-module-resolver';\nimport { setupRemoteScope } from '#internal/runtime/turbopack/remote-scope-setup';\nimport { initializeSharedModules } from '#internal/runtime/turbopack/shared-modules';\nimport type { MountUnmountFunctions, RSCKey } from '#internal/runtime/types';\n\n// initializer for the turbopack runtime to be able to access modules\n// required to run exposed client components of the remote component\nexport async function turbopackRuntime(\n url: URL,\n bundle?: string,\n shared?: Record<string, () => Promise<unknown>>,\n remoteShared?: RemoteSharedModules,\n resolveClientUrl?: InternalResolveClientUrl,\n) {\n // make a typed reference to the global scope\n const self = globalThis as typeof globalThis & {\n // webpack runtime globals\n __webpack_require__: (remoteId: string) => unknown;\n // webpack remote module loading function scoped for each bundle\n __remote_webpack_require__?: Record<\n string,\n ((remoteId: string) => unknown) & {\n m?: Record<string | number, (module: { exports: unknown }) => void>;\n }\n >;\n // webpack module map for each bundle used in production builds\n __remote_webpack_module_map__?: Record<string, Record<string, number>>;\n // conditional flag to disable webpack exec\n __DISABLE_WEBPACK_EXEC__: boolean;\n // webpack chunk loading function\n __webpack_chunk_load__: () => Promise<[]>;\n } & MountUnmountFunctions &\n Record<RSCKey, string[]>;\n\n const hostShared = buildHostShared(shared, resolveClientUrl, {\n includeRemoteComponentShared: true,\n });\n\n // Phase 1: Set up globals (__webpack_require__, __webpack_chunk_load__).\n // Called with empty scripts because we need the globals to exist before\n // importing react-server-dom-webpack. Shared module initialization is\n // deferred to preloadScripts where turbopack chunks are actually loaded.\n await setupRemoteScope('turbopack', [], url, bundle, resolveClientUrl);\n\n // we can only import react-server-dom-webpack after initializing the __webpack_require__ and __webpack_chunk_load__ functions\n const {\n default: { createFromReadableStream },\n } = await import('react-server-dom-webpack/client.browser');\n\n async function preloadScripts(scripts: HTMLScriptElement[], __: URL) {\n // Phase 2: Load turbopack chunks (scope is reused from phase 1).\n const scope = await setupRemoteScope(\n 'turbopack',\n scripts.map((script) => ({\n src:\n script.getAttribute('src') ||\n script.getAttribute('data-src') ||\n script.src,\n })),\n url,\n bundle,\n resolveClientUrl,\n );\n\n // Phase 3: Initialize shared modules now that turbopackModules is\n // populated. This uses the primary bundle-introspection path which\n // maps shared modules by numeric turbopack ID — unlike the fallback\n // path that uses file-path keys which can't match at runtime.\n await initializeSharedModules(\n scope,\n buildCoreShared(hostShared),\n remoteShared ?? {},\n );\n }\n\n return {\n self,\n createFromReadableStream,\n applySharedModules,\n nextClientPagesLoader,\n preloadScripts,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAcA,eAAsB,iBACpB,KACA,QACA,QACA,cACA,kBACA;AAEA,QAAM,OAAO;AAmBb,QAAM,aAAa,gBAAgB,QAAQ,kBAAkB;AAAA,IAC3D,8BAA8B;AAAA,EAChC,CAAC;AAMD,QAAM,iBAAiB,aAAa,CAAC,GAAG,KAAK,QAAQ,gBAAgB;AAGrE,QAAM;AAAA,IACJ,SAAS,EAAE,yBAAyB;AAAA,EACtC,IAAI,MAAM,OAAO,yCAAyC;AAE1D,iBAAe,eAAe,SAA8B,IAAS;AAEnE,UAAM,QAAQ,MAAM;AAAA,MAClB;AAAA,MACA,QAAQ,IAAI,CAAC,YAAY;AAAA,QACvB,KACE,OAAO,aAAa,KAAK,KACzB,OAAO,aAAa,UAAU,KAC9B,OAAO;AAAA,MACX,EAAE;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAMA,UAAM;AAAA,MACJ;AAAA,MACA,gBAAgB,UAAU;AAAA,MAC1B,gBAAgB,CAAC;AAAA,IACnB;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/host/html/runtime/webpack.ts"],"sourcesContent":["import { applySharedModules } from '#internal/config/webpack/apply-shared-modules';\nimport { nextClientPagesLoader } from '#internal/config/webpack/next-client-pages-loader';\nimport type { InternalResolveClientUrl } from '#internal/host/server/types';\nimport type { RemoteSharedModules } from '#internal/host/shared/shared-broker';\nimport {\n buildHostShared,\n buildWebpackResolve,\n} from '#internal/host/shared/shared-module-resolver';\nimport { loadScripts } from '#internal/runtime/loaders/script-loader';\nimport { NEXT_BUNDLE_PATH_RE } from '#internal/runtime/patterns';\nimport type { MountUnmountFunctions, RSCKey } from '#internal/runtime/types';\nimport { RemoteComponentsError } from '#internal/utils/error';\n\n// initializer for the webpack runtime to be able to access modules\n// required to run exposed client components of the remote component\nexport async function webpackRuntime(\n bundle: string,\n shared?: Record<string, () => Promise<unknown>>,\n remoteShared?: RemoteSharedModules,\n resolveClientUrl?: InternalResolveClientUrl,\n) {\n // make a typed reference to the global scope\n const self = globalThis as typeof globalThis & {\n // webpack runtime globals\n __webpack_require__: (remoteId: string) => unknown;\n // webpack remote module loading function scoped for each bundle\n __remote_webpack_require__?: Record<\n string,\n ((remoteId: string) => unknown) & {\n m?: Record<string | number, (module: { exports: unknown }) => void>;\n }\n >;\n // webpack module map for each bundle used in production builds\n __remote_webpack_module_map__?: Record<string, Record<string, number>>;\n // conditional flag to disable webpack exec\n __DISABLE_WEBPACK_EXEC__?: Record<string, boolean>;\n // webpack chunk loading function\n __webpack_chunk_load__: () => Promise<[]>;\n __webpack_require_type__: 'webpack' | 'turbopack';\n } & MountUnmountFunctions &\n Record<RSCKey, string[]>;\n\n // disable webpack exec to prevent automatically executing the entry module\n if (!self.__DISABLE_WEBPACK_EXEC__) {\n self.__DISABLE_WEBPACK_EXEC__ = {};\n }\n self.__DISABLE_WEBPACK_EXEC__[bundle] = true;\n // add a custom webpack require function to load remote components from multiple bundles / zones\n if (\n typeof self.__webpack_require__ !== 'function' &&\n self.__webpack_require_type__ !== 'turbopack'\n ) {\n self.__webpack_require__ = (remoteId: string) => {\n const re = /\\[(?<bundle>[^\\]]+)\\] (?<id>.*)/;\n const match = re.exec(remoteId);\n const remoteBundle = match?.groups?.bundle;\n const id = match?.groups?.id;\n if (!(id && remoteBundle)) {\n throw new RemoteComponentsError(\n `Remote Component module \"${remoteId}\" not found. Did you forget to wrap the Next.js config with \\`withRemoteComponentsConfig\\` on both host and remote?`,\n );\n }\n if (\n typeof self.__remote_webpack_require__?.[remoteBundle] !== 'function'\n ) {\n throw new RemoteComponentsError(\n `Remote Components are not available in \"${remoteBundle}\". Did you forget to wrap the Next.js config with \\`withRemoteComponentsConfig\\` on both host and remote?`,\n );\n }\n return self.__remote_webpack_require__[remoteBundle](id);\n };\n // not used but required by react-server-dom-webpack\n self.__webpack_chunk_load__ = () => {\n return Promise.resolve([]);\n };\n }\n // we can only import react-server-dom-webpack after initializing the __webpack_require__ and __webpack_chunk_load__ functions\n const {\n default: { createFromReadableStream },\n } = await import('react-server-dom-webpack/client.browser');\n\n async function preloadScripts(\n scripts: HTMLScriptElement[],\n url: URL,\n remoteBundle: string,\n _: string,\n ) {\n // Build absolute src URLs for each script and remove originals from the\n // parsed doc to prevent re-execution when the doc is later inserted into\n // the shadow DOM.\n const scriptSrcs = scripts.flatMap((script) => {\n const scriptSrc =\n script.getAttribute('src') || script.getAttribute('data-src');\n script.parentElement?.removeChild(script);\n if (!scriptSrc) return [];\n return [\n {\n src: new URL(scriptSrc.replace(NEXT_BUNDLE_PATH_RE, '/_next/'), url)\n .href,\n },\n ];\n });\n\n await loadScripts(scriptSrcs, resolveClientUrl);\n\n const hostShared = buildHostShared(shared, resolveClientUrl);\n const resolve = await buildWebpackResolve(\n hostShared,\n remoteShared ?? {},\n remoteBundle,\n {\n '/react/index.js': (await import('react')).default,\n '/react/jsx-dev-runtime.js': (await import('react/jsx-dev-runtime'))\n .default,\n '/react/jsx-runtime.js': (await import('react/jsx-runtime')).default,\n '/react-dom/index.js': (await import('react-dom')).default,\n '/react-dom/client.js': (await import('react-dom/client')).default,\n },\n 'WebpackRuntime',\n );\n\n // apply shared modules to the bundle\n applySharedModules(remoteBundle, resolve);\n }\n\n return {\n self,\n createFromReadableStream,\n applySharedModules,\n nextClientPagesLoader,\n preloadScripts,\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAeA,eAAsB,eACpB,QACA,QACA,cACA,kBACA;AAEA,QAAM,OAAO;AAqBb,MAAI,CAAC,KAAK,0BAA0B;AAClC,SAAK,2BAA2B,CAAC;AAAA,EACnC;AACA,OAAK,yBAAyB,MAAM,IAAI;AAExC,MACE,OAAO,KAAK,wBAAwB,cACpC,KAAK,6BAA6B,aAClC;AACA,SAAK,sBAAsB,CAAC,aAAqB;AAC/C,YAAM,KAAK;AACX,YAAM,QAAQ,GAAG,KAAK,QAAQ;AAC9B,YAAM,eAAe,OAAO,QAAQ;AACpC,YAAM,KAAK,OAAO,QAAQ;AAC1B,UAAI,EAAE,MAAM,eAAe;AACzB,cAAM,IAAI;AAAA,UACR,4BAA4B;AAAA,QAC9B;AAAA,MACF;AACA,UACE,OAAO,KAAK,6BAA6B,YAAY,MAAM,YAC3D;AACA,cAAM,IAAI;AAAA,UACR,2CAA2C;AAAA,QAC7C;AAAA,MACF;AACA,aAAO,KAAK,2BAA2B,YAAY,EAAE,EAAE;AAAA,IACzD;AAEA,SAAK,yBAAyB,MAAM;AAClC,aAAO,QAAQ,QAAQ,CAAC,CAAC;AAAA,IAC3B;AAAA,EACF;AAEA,QAAM;AAAA,IACJ,SAAS,EAAE,yBAAyB;AAAA,EACtC,IAAI,MAAM,OAAO,yCAAyC;AAE1D,iBAAe,eACb,SACA,KACA,cACA,GACA;AAIA,UAAM,aAAa,QAAQ,QAAQ,CAAC,WAAW;AAC7C,YAAM,YACJ,OAAO,aAAa,KAAK,KAAK,OAAO,aAAa,UAAU;AAC9D,aAAO,eAAe,YAAY,MAAM;AACxC,UAAI,CAAC;AAAW,eAAO,CAAC;AACxB,aAAO;AAAA,QACL;AAAA,UACE,KAAK,IAAI,IAAI,UAAU,QAAQ,qBAAqB,SAAS,GAAG,GAAG,EAChE;AAAA,QACL;AAAA,MACF;AAAA,IACF,CAAC;AAED,UAAM,YAAY,YAAY,gBAAgB;AAE9C,UAAM,aAAa,gBAAgB,QAAQ,gBAAgB;AAC3D,UAAM,UAAU,MAAM;AAAA,MACpB;AAAA,MACA,gBAAgB,CAAC;AAAA,MACjB;AAAA,MACA;AAAA,QACE,oBAAoB,MAAM,OAAO,OAAO,GAAG;AAAA,QAC3C,8BAA8B,MAAM,OAAO,uBAAuB,GAC/D;AAAA,QACH,0BAA0B,MAAM,OAAO,mBAAmB,GAAG;AAAA,QAC7D,wBAAwB,MAAM,OAAO,WAAW,GAAG;AAAA,QACnD,yBAAyB,MAAM,OAAO,kBAAkB,GAAG;AAAA,MAC7D;AAAA,MACA;AAAA,IACF;AAGA,uBAAmB,cAAc,OAAO;AAAA,EAC1C;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/host/html/runtime/webpack.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAeA,eAAsB,eACpB,QACA,QACA,cACA,kBACA;AAEA,QAAM,OAAO;AAqBb,MAAI,CAAC,KAAK,0BAA0B;AAClC,SAAK,2BAA2B,CAAC;AAAA,EACnC;AACA,OAAK,yBAAyB,MAAM,IAAI;AAExC,MACE,OAAO,KAAK,wBAAwB,cACpC,KAAK,6BAA6B,aAClC;AACA,SAAK,sBAAsB,CAAC,aAAqB;AAC/C,YAAM,KAAK;AACX,YAAM,QAAQ,GAAG,KAAK,QAAQ;AAC9B,YAAM,eAAe,OAAO,QAAQ;AACpC,YAAM,KAAK,OAAO,QAAQ;AAC1B,UAAI,EAAE,MAAM,eAAe;AACzB,cAAM,IAAI;AAAA,UACR,4BAA4B;AAAA,QAC9B;AAAA,MACF;AACA,UACE,OAAO,KAAK,6BAA6B,YAAY,MAAM,YAC3D;AACA,cAAM,IAAI;AAAA,UACR,2CAA2C;AAAA,QAC7C;AAAA,MACF;AACA,aAAO,KAAK,2BAA2B,YAAY,EAAE,EAAE;AAAA,IACzD;AAEA,SAAK,yBAAyB,MAAM;AAClC,aAAO,QAAQ,QAAQ,CAAC,CAAC;AAAA,IAC3B;AAAA,EACF;AAEA,QAAM;AAAA,IACJ,SAAS,EAAE,yBAAyB;AAAA,EACtC,IAAI,MAAM,OAAO,yCAAyC;AAE1D,iBAAe,eACb,SACA,KACA,cACA,GACA;AAIA,UAAM,aAAa,QAAQ,QAAQ,CAAC,WAAW;AAC7C,YAAM,YACJ,OAAO,aAAa,KAAK,KAAK,OAAO,aAAa,UAAU;AAC9D,aAAO,eAAe,YAAY,MAAM;AACxC,UAAI,CAAC;AAAW,eAAO,CAAC;AACxB,aAAO;AAAA,QACL;AAAA,UACE,KAAK,IAAI,IAAI,UAAU,QAAQ,qBAAqB,SAAS,GAAG,GAAG,EAChE;AAAA,QACL;AAAA,MACF;AAAA,IACF,CAAC;AAED,UAAM,YAAY,YAAY,gBAAgB;AAE9C,UAAM,aAAa,gBAAgB,QAAQ,gBAAgB;AAC3D,UAAM,UAAU,MAAM;AAAA,MACpB;AAAA,MACA,gBAAgB,CAAC;AAAA,MACjB;AAAA,MACA;AAAA,QACE,oBAAoB,MAAM,OAAO,OAAO,GAAG;AAAA,QAC3C,8BAA8B,MAAM,OAAO,uBAAuB,GAC/D;AAAA,QACH,0BAA0B,MAAM,OAAO,mBAAmB,GAAG;AAAA,QAC7D,wBAAwB,MAAM,OAAO,WAAW,GAAG;AAAA,QACnD,yBAAyB,MAAM,OAAO,kBAAkB,GAAG;AAAA,MAC7D;AAAA,MACA;AAAA,IACF;AAGA,uBAAmB,cAAc,OAAO;AAAA,EAC1C;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF","sourcesContent":["import { applySharedModules } from '#internal/config/webpack/apply-shared-modules';\nimport { nextClientPagesLoader } from '#internal/config/webpack/next-client-pages-loader';\nimport type { InternalResolveClientUrl } from '#internal/host/server/types';\nimport type { RemoteSharedModules } from '#internal/host/shared/shared-broker';\nimport {\n buildHostShared,\n buildWebpackResolve,\n} from '#internal/host/shared/shared-module-resolver';\nimport { loadScripts } from '#internal/runtime/loaders/script-loader';\nimport { NEXT_BUNDLE_PATH_RE } from '#internal/runtime/patterns';\nimport type { MountUnmountFunctions, RSCKey } from '#internal/runtime/types';\nimport { RemoteComponentsError } from '#internal/utils/error';\n\n// initializer for the webpack runtime to be able to access modules\n// required to run exposed client components of the remote component\nexport async function webpackRuntime(\n bundle: string,\n shared?: Record<string, () => Promise<unknown>>,\n remoteShared?: RemoteSharedModules,\n resolveClientUrl?: InternalResolveClientUrl,\n) {\n // make a typed reference to the global scope\n const self = globalThis as typeof globalThis & {\n // webpack runtime globals\n __webpack_require__: (remoteId: string) => unknown;\n // webpack remote module loading function scoped for each bundle\n __remote_webpack_require__?: Record<\n string,\n ((remoteId: string) => unknown) & {\n m?: Record<string | number, (module: { exports: unknown }) => void>;\n }\n >;\n // webpack module map for each bundle used in production builds\n __remote_webpack_module_map__?: Record<string, Record<string, number>>;\n // conditional flag to disable webpack exec\n __DISABLE_WEBPACK_EXEC__?: Record<string, boolean>;\n // webpack chunk loading function\n __webpack_chunk_load__: () => Promise<[]>;\n __webpack_require_type__: 'webpack' | 'turbopack';\n } & MountUnmountFunctions &\n Record<RSCKey, string[]>;\n\n // disable webpack exec to prevent automatically executing the entry module\n if (!self.__DISABLE_WEBPACK_EXEC__) {\n self.__DISABLE_WEBPACK_EXEC__ = {};\n }\n self.__DISABLE_WEBPACK_EXEC__[bundle] = true;\n // add a custom webpack require function to load remote components from multiple bundles / zones\n if (\n typeof self.__webpack_require__ !== 'function' &&\n self.__webpack_require_type__ !== 'turbopack'\n ) {\n self.__webpack_require__ = (remoteId: string) => {\n const re = /\\[(?<bundle>[^\\]]+)\\] (?<id>.*)/;\n const match = re.exec(remoteId);\n const remoteBundle = match?.groups?.bundle;\n const id = match?.groups?.id;\n if (!(id && remoteBundle)) {\n throw new RemoteComponentsError(\n `Remote Component module \"${remoteId}\" not found. Did you forget to wrap the Next.js config with \\`withRemoteComponentsConfig\\` on both host and remote?`,\n );\n }\n if (\n typeof self.__remote_webpack_require__?.[remoteBundle] !== 'function'\n ) {\n throw new RemoteComponentsError(\n `Remote Components are not available in \"${remoteBundle}\". Did you forget to wrap the Next.js config with \\`withRemoteComponentsConfig\\` on both host and remote?`,\n );\n }\n return self.__remote_webpack_require__[remoteBundle](id);\n };\n // not used but required by react-server-dom-webpack\n self.__webpack_chunk_load__ = () => {\n return Promise.resolve([]);\n };\n }\n // we can only import react-server-dom-webpack after initializing the __webpack_require__ and __webpack_chunk_load__ functions\n const {\n default: { createFromReadableStream },\n } = await import('react-server-dom-webpack/client.browser');\n\n async function preloadScripts(\n scripts: HTMLScriptElement[],\n url: URL,\n remoteBundle: string,\n _: string,\n ) {\n // Build absolute src URLs for each script and remove originals from the\n // parsed doc to prevent re-execution when the doc is later inserted into\n // the shadow DOM.\n const scriptSrcs = scripts.flatMap((script) => {\n const scriptSrc =\n script.getAttribute('src') || script.getAttribute('data-src');\n script.parentElement?.removeChild(script);\n if (!scriptSrc) return [];\n return [\n {\n src: new URL(scriptSrc.replace(NEXT_BUNDLE_PATH_RE, '/_next/'), url)\n .href,\n },\n ];\n });\n\n await loadScripts(scriptSrcs, resolveClientUrl);\n\n const hostShared = buildHostShared(shared, resolveClientUrl);\n const resolve = await buildWebpackResolve(\n hostShared,\n remoteShared ?? {},\n remoteBundle,\n {\n '/react/index.js': (await import('react')).default,\n '/react/jsx-dev-runtime.js': (await import('react/jsx-dev-runtime'))\n .default,\n '/react/jsx-runtime.js': (await import('react/jsx-runtime')).default,\n '/react-dom/index.js': (await import('react-dom')).default,\n '/react-dom/client.js': (await import('react-dom/client')).default,\n },\n 'WebpackRuntime',\n );\n\n // apply shared modules to the bundle\n applySharedModules(remoteBundle, resolve);\n }\n\n return {\n self,\n createFromReadableStream,\n applySharedModules,\n nextClientPagesLoader,\n preloadScripts,\n };\n}\n"]}