remote-components 0.3.3 → 0.3.5

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 (176) hide show
  1. package/dist/config/nextjs.cjs +86 -37
  2. package/dist/config/nextjs.cjs.map +1 -1
  3. package/dist/config/nextjs.js +86 -37
  4. package/dist/config/nextjs.js.map +1 -1
  5. package/dist/config/webpack.cjs +5 -1
  6. package/dist/config/webpack.cjs.map +1 -1
  7. package/dist/config/webpack.js +5 -1
  8. package/dist/config/webpack.js.map +1 -1
  9. package/dist/host/html.cjs +861 -617
  10. package/dist/host/html.cjs.map +1 -1
  11. package/dist/host/html.js +861 -617
  12. package/dist/host/html.js.map +1 -1
  13. package/dist/host/nextjs/app/client-only.cjs +700 -383
  14. package/dist/host/nextjs/app/client-only.cjs.map +1 -1
  15. package/dist/host/nextjs/app/client-only.js +674 -357
  16. package/dist/host/nextjs/app/client-only.js.map +1 -1
  17. package/dist/host/nextjs/app.cjs +34 -2
  18. package/dist/host/nextjs/app.cjs.map +1 -1
  19. package/dist/host/nextjs/app.js +35 -3
  20. package/dist/host/nextjs/app.js.map +1 -1
  21. package/dist/host/react.cjs +641 -352
  22. package/dist/host/react.cjs.map +1 -1
  23. package/dist/host/react.js +641 -352
  24. package/dist/host/react.js.map +1 -1
  25. package/dist/internal/config/webpack/apply-shared-modules.cjs +6 -4
  26. package/dist/internal/config/webpack/apply-shared-modules.cjs.map +1 -1
  27. package/dist/internal/config/webpack/apply-shared-modules.js +6 -4
  28. package/dist/internal/config/webpack/apply-shared-modules.js.map +1 -1
  29. package/dist/internal/config/webpack/next-client-pages-loader.cjs +6 -7
  30. package/dist/internal/config/webpack/next-client-pages-loader.cjs.map +1 -1
  31. package/dist/internal/config/webpack/next-client-pages-loader.js +6 -7
  32. package/dist/internal/config/webpack/next-client-pages-loader.js.map +1 -1
  33. package/dist/internal/host/nextjs/app-client.cjs +42 -27
  34. package/dist/internal/host/nextjs/app-client.cjs.map +1 -1
  35. package/dist/internal/host/nextjs/app-client.js +42 -27
  36. package/dist/internal/host/nextjs/app-client.js.map +1 -1
  37. package/dist/internal/host/nextjs/dom-flight.cjs +19 -39
  38. package/dist/internal/host/nextjs/dom-flight.cjs.map +1 -1
  39. package/dist/internal/host/nextjs/dom-flight.js +31 -39
  40. package/dist/internal/host/nextjs/dom-flight.js.map +1 -1
  41. package/dist/internal/host/nextjs/image-shared.cjs +39 -3
  42. package/dist/internal/host/nextjs/image-shared.cjs.map +1 -1
  43. package/dist/internal/host/nextjs/image-shared.d.ts +5 -10
  44. package/dist/internal/host/nextjs/image-shared.js +29 -3
  45. package/dist/internal/host/nextjs/image-shared.js.map +1 -1
  46. package/dist/internal/host/nextjs/remote-component-links.cjs +24 -13
  47. package/dist/internal/host/nextjs/remote-component-links.cjs.map +1 -1
  48. package/dist/internal/host/nextjs/remote-component-links.d.ts +3 -0
  49. package/dist/internal/host/nextjs/remote-component-links.js +24 -13
  50. package/dist/internal/host/nextjs/remote-component-links.js.map +1 -1
  51. package/dist/internal/host/server/fetch-remote-component.cjs +2 -1
  52. package/dist/internal/host/server/fetch-remote-component.cjs.map +1 -1
  53. package/dist/internal/host/server/fetch-remote-component.js +2 -1
  54. package/dist/internal/host/server/fetch-remote-component.js.map +1 -1
  55. package/dist/internal/host/shared/lifecycle.cjs +69 -0
  56. package/dist/internal/host/shared/lifecycle.cjs.map +1 -0
  57. package/dist/internal/host/shared/lifecycle.d.ts +34 -0
  58. package/dist/internal/host/shared/lifecycle.js +44 -0
  59. package/dist/internal/host/shared/lifecycle.js.map +1 -0
  60. package/dist/internal/host/shared/pipeline.cjs +222 -0
  61. package/dist/internal/host/shared/pipeline.cjs.map +1 -0
  62. package/dist/internal/host/shared/pipeline.d.ts +153 -0
  63. package/dist/internal/host/shared/pipeline.js +200 -0
  64. package/dist/internal/host/shared/pipeline.js.map +1 -0
  65. package/dist/internal/host/shared/polyfill.cjs +8 -7
  66. package/dist/internal/host/shared/polyfill.cjs.map +1 -1
  67. package/dist/internal/host/shared/polyfill.js +8 -7
  68. package/dist/internal/host/shared/polyfill.js.map +1 -1
  69. package/dist/internal/host/shared/shared-module-resolver.cjs +117 -0
  70. package/dist/internal/host/shared/shared-module-resolver.cjs.map +1 -0
  71. package/dist/internal/host/shared/shared-module-resolver.d.ts +64 -0
  72. package/dist/internal/host/shared/shared-module-resolver.js +78 -0
  73. package/dist/internal/host/shared/shared-module-resolver.js.map +1 -0
  74. package/dist/internal/remote/nextjs/next-internals.cjs +53 -0
  75. package/dist/internal/remote/nextjs/next-internals.cjs.map +1 -0
  76. package/dist/internal/remote/nextjs/next-internals.d.ts +42 -0
  77. package/dist/internal/remote/nextjs/next-internals.js +26 -0
  78. package/dist/internal/remote/nextjs/next-internals.js.map +1 -0
  79. package/dist/internal/runtime/html/apply-origin.cjs +11 -32
  80. package/dist/internal/runtime/html/apply-origin.cjs.map +1 -1
  81. package/dist/internal/runtime/html/apply-origin.js +11 -32
  82. package/dist/internal/runtime/html/apply-origin.js.map +1 -1
  83. package/dist/internal/runtime/html/html-spec.cjs +78 -0
  84. package/dist/internal/runtime/html/html-spec.cjs.map +1 -0
  85. package/dist/internal/runtime/html/html-spec.d.ts +23 -0
  86. package/dist/internal/runtime/html/html-spec.js +41 -0
  87. package/dist/internal/runtime/html/html-spec.js.map +1 -0
  88. package/dist/internal/runtime/html/parse-remote-html.cjs +15 -12
  89. package/dist/internal/runtime/html/parse-remote-html.cjs.map +1 -1
  90. package/dist/internal/runtime/html/parse-remote-html.js +29 -12
  91. package/dist/internal/runtime/html/parse-remote-html.js.map +1 -1
  92. package/dist/internal/runtime/html/rewrite-srcset.cjs +38 -0
  93. package/dist/internal/runtime/html/rewrite-srcset.cjs.map +1 -0
  94. package/dist/internal/runtime/html/rewrite-srcset.d.ts +12 -0
  95. package/dist/internal/runtime/html/rewrite-srcset.js +14 -0
  96. package/dist/internal/runtime/html/rewrite-srcset.js.map +1 -0
  97. package/dist/internal/runtime/loaders/component-loader.cjs +25 -44
  98. package/dist/internal/runtime/loaders/component-loader.cjs.map +1 -1
  99. package/dist/internal/runtime/loaders/component-loader.d.ts +3 -1
  100. package/dist/internal/runtime/loaders/component-loader.js +28 -44
  101. package/dist/internal/runtime/loaders/component-loader.js.map +1 -1
  102. package/dist/internal/runtime/loaders/static-loader.cjs +15 -21
  103. package/dist/internal/runtime/loaders/static-loader.cjs.map +1 -1
  104. package/dist/internal/runtime/loaders/static-loader.d.ts +3 -1
  105. package/dist/internal/runtime/loaders/static-loader.js +15 -21
  106. package/dist/internal/runtime/loaders/static-loader.js.map +1 -1
  107. package/dist/internal/runtime/namespace.cjs +82 -0
  108. package/dist/internal/runtime/namespace.cjs.map +1 -0
  109. package/dist/internal/runtime/namespace.d.ts +5 -0
  110. package/dist/internal/runtime/namespace.js +58 -0
  111. package/dist/internal/runtime/namespace.js.map +1 -0
  112. package/dist/internal/runtime/rsc-imports.cjs +86 -0
  113. package/dist/internal/runtime/rsc-imports.cjs.map +1 -0
  114. package/dist/internal/runtime/rsc-imports.d.ts +39 -0
  115. package/dist/internal/runtime/rsc-imports.js +50 -0
  116. package/dist/internal/runtime/rsc-imports.js.map +1 -0
  117. package/dist/internal/runtime/rsc-runtime.cjs +17 -0
  118. package/dist/internal/runtime/rsc-runtime.cjs.map +1 -0
  119. package/dist/internal/runtime/rsc-runtime.d.ts +37 -0
  120. package/dist/internal/runtime/rsc-runtime.js +1 -0
  121. package/dist/internal/runtime/rsc-runtime.js.map +1 -0
  122. package/dist/internal/runtime/rsc.cjs +23 -12
  123. package/dist/internal/runtime/rsc.cjs.map +1 -1
  124. package/dist/internal/runtime/rsc.d.ts +19 -2
  125. package/dist/internal/runtime/rsc.js +20 -11
  126. package/dist/internal/runtime/rsc.js.map +1 -1
  127. package/dist/internal/runtime/turbopack/chunk-loader.cjs +53 -35
  128. package/dist/internal/runtime/turbopack/chunk-loader.cjs.map +1 -1
  129. package/dist/internal/runtime/turbopack/chunk-loader.d.ts +1 -1
  130. package/dist/internal/runtime/turbopack/chunk-loader.js +53 -35
  131. package/dist/internal/runtime/turbopack/chunk-loader.js.map +1 -1
  132. package/dist/internal/runtime/turbopack/module.cjs +17 -4
  133. package/dist/internal/runtime/turbopack/module.cjs.map +1 -1
  134. package/dist/internal/runtime/turbopack/module.d.ts +23 -1
  135. package/dist/internal/runtime/turbopack/module.js +16 -4
  136. package/dist/internal/runtime/turbopack/module.js.map +1 -1
  137. package/dist/internal/runtime/turbopack/patterns.cjs +26 -10
  138. package/dist/internal/runtime/turbopack/patterns.cjs.map +1 -1
  139. package/dist/internal/runtime/turbopack/patterns.d.ts +44 -49
  140. package/dist/internal/runtime/turbopack/patterns.js +23 -7
  141. package/dist/internal/runtime/turbopack/patterns.js.map +1 -1
  142. package/dist/internal/runtime/turbopack/{webpack-runtime.cjs → remote-scope-setup.cjs} +35 -32
  143. package/dist/internal/runtime/turbopack/remote-scope-setup.cjs.map +1 -0
  144. package/dist/internal/runtime/turbopack/remote-scope-setup.d.ts +25 -0
  145. package/dist/internal/runtime/turbopack/{webpack-runtime.js → remote-scope-setup.js} +36 -19
  146. package/dist/internal/runtime/turbopack/remote-scope-setup.js.map +1 -0
  147. package/dist/internal/runtime/turbopack/remote-scope.cjs +4 -6
  148. package/dist/internal/runtime/turbopack/remote-scope.cjs.map +1 -1
  149. package/dist/internal/runtime/turbopack/remote-scope.d.ts +20 -1
  150. package/dist/internal/runtime/turbopack/remote-scope.js +4 -6
  151. package/dist/internal/runtime/turbopack/remote-scope.js.map +1 -1
  152. package/dist/internal/runtime/turbopack/shared-modules.cjs +21 -15
  153. package/dist/internal/runtime/turbopack/shared-modules.cjs.map +1 -1
  154. package/dist/internal/runtime/turbopack/shared-modules.d.ts +9 -2
  155. package/dist/internal/runtime/turbopack/shared-modules.js +24 -18
  156. package/dist/internal/runtime/turbopack/shared-modules.js.map +1 -1
  157. package/dist/internal/runtime/types.cjs.map +1 -1
  158. package/dist/internal/runtime/types.d.ts +5 -41
  159. package/dist/internal/utils/logger.cjs +1 -1
  160. package/dist/internal/utils/logger.cjs.map +1 -1
  161. package/dist/internal/utils/logger.d.ts +2 -2
  162. package/dist/internal/utils/logger.js +1 -1
  163. package/dist/internal/utils/logger.js.map +1 -1
  164. package/dist/remote/html.cjs +78 -22
  165. package/dist/remote/html.cjs.map +1 -1
  166. package/dist/remote/html.js +78 -22
  167. package/dist/remote/html.js.map +1 -1
  168. package/dist/remote/nextjs/app.cjs +14 -55
  169. package/dist/remote/nextjs/app.cjs.map +1 -1
  170. package/dist/remote/nextjs/app.js +24 -45
  171. package/dist/remote/nextjs/app.js.map +1 -1
  172. package/dist/types-59251814.d.ts +94 -0
  173. package/package.json +2 -2
  174. package/dist/internal/runtime/turbopack/webpack-runtime.cjs.map +0 -1
  175. package/dist/internal/runtime/turbopack/webpack-runtime.d.ts +0 -23
  176. package/dist/internal/runtime/turbopack/webpack-runtime.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/runtime/turbopack/module.ts"],"sourcesContent":["import { 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: { exports: Record<string, unknown> },\n exports: Record<string, unknown>,\n) => void;\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) => unknown;\n /** Value exports */\n v: (value: unknown) => 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) => 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 /** Global object for this bundle */\n g: unknown;\n /** Module object */\n m: { exports: Record<string, unknown> };\n /** Exports object */\n e: Record<string, unknown>;\n}\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 // moduleCache is checked first inside handleTurbopackModule too, but\n // checking here avoids the shared-module lookup on every re-entry.\n if (scope.moduleCache[idStr]) return scope.moduleCache[idStr];\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 const sharedModule = getSharedModule(scope, moduleId);\n if (sharedModule) return sharedModule;\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 = { exports };\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 in the Turbopack bundle.\n */\nfunction findModuleInit(\n modules: BundleModules,\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 return flat.find((e): e is Record<string, TurbopackModuleInit> =>\n Boolean(e && typeof e === 'object' && moduleId in (e as object)),\n )?.[moduleId];\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: { exports: Record<string, unknown> },\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 (!('default' in mod) && mod.toString() !== '[object Module]') {\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) {\n return scopedRequire(requireId);\n },\n\n // value exports\n v(value: unknown) {\n if (typeof value === 'function') {\n exports.default = value((vid: string | number) => scopedRequire(vid));\n } else {\n moduleExports.exports = value 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 async A(Aid: string) {\n const mod = scopedRequire(Aid) as {\n default: (\n parentImport: (parentId: string) => unknown,\n ) => Promise<unknown>;\n };\n return mod.default((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 // globalThis substitute shared across all modules in this scope\n g: scope.moduleGlobal,\n m: moduleExports,\n e: exports,\n };\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../../src/runtime/turbopack/module.ts"],"sourcesContent":["import { 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: { exports: Record<string, unknown> },\n exports: Record<string, unknown>,\n) => void;\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) => unknown;\n /** Value exports */\n v: (value: unknown) => 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) => 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 /** Global object for this bundle */\n g: unknown;\n /** Module object */\n m: { exports: Record<string, unknown> };\n /** Exports object */\n e: Record<string, unknown>;\n}\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 // moduleCache is checked first inside handleTurbopackModule too, but\n // checking here avoids the shared-module lookup on every re-entry.\n if (scope.moduleCache[idStr]) return scope.moduleCache[idStr];\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 const sharedModule = getSharedModule(scope, moduleId);\n if (sharedModule) return sharedModule;\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 = { exports };\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: { exports: Record<string, unknown> },\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) {\n return scopedRequire(requireId);\n },\n\n // value exports\n v(value: unknown) {\n if (typeof value === 'function') {\n exports.default = value((vid: string | number) => scopedRequire(vid));\n } else {\n moduleExports.exports = value 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 async A(Aid: string) {\n const mod = scopedRequire(Aid) as {\n default: (\n parentImport: (parentId: string) => unknown,\n ) => Promise<unknown>;\n };\n return mod.default((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 // globalThis substitute shared across all modules in this scope\n g: scope.moduleGlobal,\n m: moduleExports,\n e: exports,\n };\n}\n"],"mappings":"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","names":[]}
@@ -18,27 +18,43 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var patterns_exports = {};
20
20
  __export(patterns_exports, {
21
- ASYNC_MODULE_ALL_RE: () => ASYNC_MODULE_ALL_RE,
21
+ ASYNC_MODULE_CALLBACK_RE: () => ASYNC_MODULE_CALLBACK_RE,
22
22
  ASYNC_MODULE_LOADER_RE: () => ASYNC_MODULE_LOADER_RE,
23
- ASYNC_MODULE_RESOLVE_RE: () => ASYNC_MODULE_RESOLVE_RE,
24
23
  REMOTE_SHARED_ASSIGNMENT_RE: () => REMOTE_SHARED_ASSIGNMENT_RE,
25
24
  REMOTE_SHARED_MARKER_RE: () => REMOTE_SHARED_MARKER_RE,
26
- TURBOPACK_GLOBAL_RE: () => TURBOPACK_GLOBAL_RE
25
+ TURBOPACK_GLOBAL_RE: () => TURBOPACK_GLOBAL_RE,
26
+ extractGroup: () => extractGroup
27
27
  });
28
28
  module.exports = __toCommonJS(patterns_exports);
29
+ const MODULE_ID_PATTERN = '"[^"]+"|[0-9]+';
30
+ function stripQuotes(value) {
31
+ if (value.startsWith('"') && value.endsWith('"')) {
32
+ return value.slice(1, -1);
33
+ }
34
+ return value;
35
+ }
36
+ function extractGroup(re, input, group) {
37
+ const raw = re.exec(input)?.groups?.[group];
38
+ return raw ? stripQuotes(raw) : void 0;
39
+ }
29
40
  const REMOTE_SHARED_MARKER_RE = /(?:self|[a-z])\.TURBOPACK_REMOTE_SHARED/;
30
- const REMOTE_SHARED_ASSIGNMENT_RE = /\.TURBOPACK_REMOTE_SHARED=await (?:__turbopack_context__|[a-z])\.A\((?<sharedModuleId>[0-9]+)\)/;
31
- const ASYNC_MODULE_LOADER_RE = /(?:__turbopack_context__|e)\.A\((?<asyncSharedModuleId>[0-9]+)\)/;
32
- const ASYNC_MODULE_RESOLVE_RE = /(?<ctx>__turbopack_context__|e)=>\{\k<ctx>\.v\((?<inner>parentImport|e)=>Promise\.resolve\(\)\.then\(\(\)=>\k<inner>\((?<sharedModuleId>[0-9]+)\)\)\)\}/;
33
- const ASYNC_MODULE_ALL_RE = /(?<ctx>__turbopack_context__|e)=>\{\k<ctx>\.v\((?<vCb>parentImport|t)=>Promise\.all\(\["[^"]+"\]\.map\((?<mapCb>chunk|t)=>\k<ctx>\.l\(\k<mapCb>\)\)\)\.then\(\(\)=>\k<vCb>\((?<sharedModuleId>[0-9]+)\)\)\)\}/;
41
+ const REMOTE_SHARED_ASSIGNMENT_RE = new RegExp(
42
+ `\\.TURBOPACK_REMOTE_SHARED\\s*=\\s*await (?:__turbopack_context__|[a-z])\\.A\\((?<sharedModuleId>${MODULE_ID_PATTERN})\\)`
43
+ );
44
+ const ASYNC_MODULE_LOADER_RE = new RegExp(
45
+ `(?:__turbopack_context__|[a-z])\\.A\\((?<asyncSharedModuleId>${MODULE_ID_PATTERN})\\)`
46
+ );
47
+ const ASYNC_MODULE_CALLBACK_RE = new RegExp(
48
+ `(?:parentImport|[a-z])\\((?<sharedModuleId>${MODULE_ID_PATTERN})\\)`
49
+ );
34
50
  const TURBOPACK_GLOBAL_RE = /(?:globalThis|self)\s*(?:\.TURBOPACK|\[\s*["']TURBOPACK["']\s*\])/;
35
51
  // Annotate the CommonJS export names for ESM import in node:
36
52
  0 && (module.exports = {
37
- ASYNC_MODULE_ALL_RE,
53
+ ASYNC_MODULE_CALLBACK_RE,
38
54
  ASYNC_MODULE_LOADER_RE,
39
- ASYNC_MODULE_RESOLVE_RE,
40
55
  REMOTE_SHARED_ASSIGNMENT_RE,
41
56
  REMOTE_SHARED_MARKER_RE,
42
- TURBOPACK_GLOBAL_RE
57
+ TURBOPACK_GLOBAL_RE,
58
+ extractGroup
43
59
  });
44
60
  //# sourceMappingURL=patterns.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/runtime/turbopack/patterns.ts"],"sourcesContent":["/**\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 * These patterns use named capture groups and backreferences to ensure\n * consistency within a single match (e.g., if ctx is 'e', all uses of ctx must be 'e').\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 numeric module ID\n *\n * The minifier can assign any single-letter variable names to both the receiver and\n * the Turbopack context, so both are matched as `[a-z]`.\n *\n * @example\n * // Development:\n * \"self.TURBOPACK_REMOTE_SHARED=await __turbopack_context__.A(984803)\"\n * // -> { sharedModuleId: \"984803\" }\n *\n * // Minified (context as \"e\"):\n * \"t.TURBOPACK_REMOTE_SHARED=await e.A(123456)\"\n * // -> { sharedModuleId: \"123456\" }\n *\n * // Minified (context as \"t\"):\n * \"e.TURBOPACK_REMOTE_SHARED=await t.A(123456)\"\n * // -> { sharedModuleId: \"123456\" }\n */\nexport const REMOTE_SHARED_ASSIGNMENT_RE =\n /\\.TURBOPACK_REMOTE_SHARED=await (?:__turbopack_context__|[a-z])\\.A\\((?<sharedModuleId>[0-9]+)\\)/;\n\n/**\n * Matches async module loader calls: ctx.A(moduleId)\n *\n * Captures:\n * - `asyncSharedModuleId`: The numeric module ID being loaded asynchronously\n *\n * @example\n * // Development:\n * \"() => __turbopack_context__.A(460400)\"\n * // -> { asyncSharedModuleId: \"460400\" }\n *\n * // Minified:\n * \"() => e.A(460400)\"\n * // -> { asyncSharedModuleId: \"460400\" }\n */\nexport const ASYNC_MODULE_LOADER_RE =\n /(?:__turbopack_context__|e)\\.A\\((?<asyncSharedModuleId>[0-9]+)\\)/;\n\n/**\n * Matches async module with Promise.resolve pattern.\n * Used for modules that can be loaded immediately without chunk loading.\n *\n * Captures:\n * - `ctx`: The context variable (__turbopack_context__ or e)\n * - `inner`: The inner callback variable (parentImport or e)\n * - `sharedModuleId`: The numeric module ID\n *\n * @example\n * // Development:\n * \"__turbopack_context__=>{__turbopack_context__.v(parentImport=>Promise.resolve().then(()=>parentImport(633334)))}\"\n * // -> { ctx: \"__turbopack_context__\", inner: \"parentImport\", sharedModuleId: \"633334\" }\n *\n * // Minified:\n * \"e=>{e.v(e=>Promise.resolve().then(()=>e(633334)))}\"\n * // -> { ctx: \"e\", inner: \"e\", sharedModuleId: \"633334\" }\n */\nexport const ASYNC_MODULE_RESOLVE_RE =\n /(?<ctx>__turbopack_context__|e)=>\\{\\k<ctx>\\.v\\((?<inner>parentImport|e)=>Promise\\.resolve\\(\\)\\.then\\(\\(\\)=>\\k<inner>\\((?<sharedModuleId>[0-9]+)\\)\\)\\)\\}/;\n\n/**\n * Matches async module with Promise.all pattern.\n * Used for modules that require loading additional chunks first.\n *\n * Captures:\n * - `ctx`: The context variable (__turbopack_context__ or e)\n * - `vCb`: The callback passed to .v() (parentImport or t)\n * - `mapCb`: The callback passed to .map() (chunk or t)\n * - `sharedModuleId`: The numeric module ID\n *\n * @example\n * // Development:\n * \"__turbopack_context__=>{__turbopack_context__.v(parentImport=>Promise.all([\\\"static/chunks/82dcf883b4ba22f0.js\\\"].map(chunk=>__turbopack_context__.l(chunk))).then(()=>parentImport(657407)))}\"\n * // -> { ctx: \"__turbopack_context__\", vCb: \"parentImport\", mapCb: \"chunk\", sharedModuleId: \"657407\" }\n *\n * // Minified:\n * \"e=>{e.v(t=>Promise.all([\\\"chunk.js\\\"].map(t=>e.l(t))).then(()=>t(633334)))}\"\n * // -> { ctx: \"e\", vCb: \"t\", mapCb: \"t\", sharedModuleId: \"633334\" }\n */\nexport const ASYNC_MODULE_ALL_RE =\n /(?<ctx>__turbopack_context__|e)=>\\{\\k<ctx>\\.v\\((?<vCb>parentImport|t)=>Promise\\.all\\(\\[\"[^\"]+\"\\]\\.map\\((?<mapCb>chunk|t)=>\\k<ctx>\\.l\\(\\k<mapCb>\\)\\)\\)\\.then\\(\\(\\)=>\\k<vCb>\\((?<sharedModuleId>[0-9]+)\\)\\)\\)\\}/;\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|\\[\\s*[\"']TURBOPACK[\"']\\s*\\])/;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAqBO,MAAM,0BACX;AAwBK,MAAM,8BACX;AAiBK,MAAM,yBACX;AAoBK,MAAM,0BACX;AAqBK,MAAM,sBACX;AASK,MAAM,sBACX;","names":[]}
1
+ {"version":3,"sources":["../../../../src/runtime/turbopack/patterns.ts"],"sourcesContent":["/**\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/** Reusable fragment that matches a turbopack module ID: quoted string or numeric. */\nconst MODULE_ID_PATTERN = '\"[^\"]+\"|[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 * Runs a regex against `input` and returns the named capture group with\n * quotes stripped, or `undefined` if there's 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 return raw ? stripQuotes(raw) : undefined;\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|\\[\\s*[\"']TURBOPACK[\"']\\s*\\])/;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeA,MAAM,oBAAoB;AAG1B,SAAS,YAAY,OAAuB;AAC1C,MAAI,MAAM,WAAW,GAAG,KAAK,MAAM,SAAS,GAAG,GAAG;AAChD,WAAO,MAAM,MAAM,GAAG,EAAE;AAAA,EAC1B;AACA,SAAO;AACT;AAMO,SAAS,aACd,IACA,OACA,OACoB;AACpB,QAAM,MAAM,GAAG,KAAK,KAAK,GAAG,SAAS,KAAK;AAC1C,SAAO,MAAM,YAAY,GAAG,IAAI;AAClC;AAYO,MAAM,0BACX;AAqBK,MAAM,8BAA8B,IAAI;AAAA,EAC7C,oGAAoG;AACtG;AAqBO,MAAM,yBAAyB,IAAI;AAAA,EACxC,gEAAgE;AAClE;AA0BO,MAAM,2BAA2B,IAAI;AAAA,EAC1C,8CAA8C;AAChD;AASO,MAAM,sBACX;","names":[]}
@@ -5,9 +5,17 @@
5
5
  * - Development: __turbopack_context__, parentImport, chunk, self
6
6
  * - Minified: e, t, etc.
7
7
  *
8
- * These patterns use named capture groups and backreferences to ensure
9
- * consistency within a single match (e.g., if ctx is 'e', all uses of ctx must be 'e').
8
+ * Module IDs are numeric in Next.js 16+ (e.g. `984803`) but full string paths in
9
+ * Next.js 15.x dev mode (e.g. `"[project]/.../react/index.js [app-client] (ecmascript)"`).
10
+ * ID-capturing patterns match `"quoted string"|digits` via the shared
11
+ * `MODULE_ID_PATTERN` fragment. Use `extractGroup()` to both match and strip quotes
12
+ * in one step.
10
13
  */
14
+ /**
15
+ * Runs a regex against `input` and returns the named capture group with
16
+ * quotes stripped, or `undefined` if there's no match.
17
+ */
18
+ declare function extractGroup(re: RegExp, input: string, group: string): string | undefined;
11
19
  /**
12
20
  * Matches: self.TURBOPACK_REMOTE_SHARED or e.TURBOPACK_REMOTE_SHARED
13
21
  *
@@ -23,80 +31,67 @@ declare const REMOTE_SHARED_MARKER_RE: RegExp;
23
31
  * Extracts the module ID from a TURBOPACK_REMOTE_SHARED assignment.
24
32
  *
25
33
  * Captures:
26
- * - `sharedModuleId`: The numeric module ID
27
- *
28
- * The minifier can assign any single-letter variable names to both the receiver and
29
- * the Turbopack context, so both are matched as `[a-z]`.
34
+ * - `sharedModuleId`: The module ID (may be quoted for string paths).
30
35
  *
31
36
  * @example
32
- * // Development:
37
+ * // Next.js 16:
33
38
  * "self.TURBOPACK_REMOTE_SHARED=await __turbopack_context__.A(984803)"
34
- * // -> { sharedModuleId: "984803" }
39
+ * // -> sharedModuleId = "984803"
35
40
  *
36
- * // Minified (context as "e"):
37
- * "t.TURBOPACK_REMOTE_SHARED=await e.A(123456)"
38
- * // -> { sharedModuleId: "123456" }
41
+ * // Next.js 15.x (string IDs, spaces around `=`):
42
+ * 'self.TURBOPACK_REMOTE_SHARED = await __turbopack_context__.A("[project]/...app-remote.tsx [app-client] (ecmascript, async loader)")'
43
+ * // -> sharedModuleId = "[project]/...app-remote.tsx [app-client] (ecmascript, async loader)"
39
44
  *
40
- * // Minified (context as "t"):
41
- * "e.TURBOPACK_REMOTE_SHARED=await t.A(123456)"
42
- * // -> { sharedModuleId: "123456" }
45
+ * // Minified:
46
+ * "t.TURBOPACK_REMOTE_SHARED=await e.A(123456)"
47
+ * // -> sharedModuleId = "123456"
43
48
  */
44
49
  declare const REMOTE_SHARED_ASSIGNMENT_RE: RegExp;
45
50
  /**
46
51
  * Matches async module loader calls: ctx.A(moduleId)
47
52
  *
48
53
  * Captures:
49
- * - `asyncSharedModuleId`: The numeric module ID being loaded asynchronously
54
+ * - `asyncSharedModuleId`: The module ID (may be quoted).
50
55
  *
51
56
  * @example
52
- * // Development:
57
+ * // Next.js 16:
53
58
  * "() => __turbopack_context__.A(460400)"
54
- * // -> { asyncSharedModuleId: "460400" }
59
+ * // -> asyncSharedModuleId = "460400"
60
+ *
61
+ * // Next.js 15.x:
62
+ * '() => __turbopack_context__.A("[project]/.../react/index.js [app-client] (ecmascript, async loader)")'
63
+ * // -> asyncSharedModuleId = "[project]/.../react/index.js [app-client] (ecmascript, async loader)"
55
64
  *
56
65
  * // Minified:
57
66
  * "() => e.A(460400)"
58
- * // -> { asyncSharedModuleId: "460400" }
67
+ * // -> asyncSharedModuleId = "460400"
59
68
  */
60
69
  declare const ASYNC_MODULE_LOADER_RE: RegExp;
61
70
  /**
62
- * Matches async module with Promise.resolve pattern.
63
- * Used for modules that can be loaded immediately without chunk loading.
64
- *
65
- * Captures:
66
- * - `ctx`: The context variable (__turbopack_context__ or e)
67
- * - `inner`: The inner callback variable (parentImport or e)
68
- * - `sharedModuleId`: The numeric module ID
71
+ * Extracts the final module ID from an async module `.v()` callback.
72
+ * The callback always ends by calling its argument (parentImport / single-letter
73
+ * variable) with the real module ID. This matches that final call regardless of
74
+ * surrounding structure (whitespace, `return` statements, block vs expression bodies).
69
75
  *
70
- * @example
71
- * // Development:
72
- * "__turbopack_context__=>{__turbopack_context__.v(parentImport=>Promise.resolve().then(()=>parentImport(633334)))}"
73
- * // -> { ctx: "__turbopack_context__", inner: "parentImport", sharedModuleId: "633334" }
74
- *
75
- * // Minified:
76
- * "e=>{e.v(e=>Promise.resolve().then(()=>e(633334)))}"
77
- * // -> { ctx: "e", inner: "e", sharedModuleId: "633334" }
78
- */
79
- declare const ASYNC_MODULE_RESOLVE_RE: RegExp;
80
- /**
81
- * Matches async module with Promise.all pattern.
82
- * Used for modules that require loading additional chunks first.
76
+ * Handles both Promise.resolve (no extra chunks) and Promise.all (with chunks).
83
77
  *
84
78
  * Captures:
85
- * - `ctx`: The context variable (__turbopack_context__ or e)
86
- * - `vCb`: The callback passed to .v() (parentImport or t)
87
- * - `mapCb`: The callback passed to .map() (chunk or t)
88
- * - `sharedModuleId`: The numeric module ID
79
+ * - `sharedModuleId`: The module ID (may be quoted).
89
80
  *
90
81
  * @example
91
- * // Development:
92
- * "__turbopack_context__=>{__turbopack_context__.v(parentImport=>Promise.all([\"static/chunks/82dcf883b4ba22f0.js\"].map(chunk=>__turbopack_context__.l(chunk))).then(()=>parentImport(657407)))}"
93
- * // -> { ctx: "__turbopack_context__", vCb: "parentImport", mapCb: "chunk", sharedModuleId: "657407" }
82
+ * // Next.js 16 minified (Promise.resolve):
83
+ * "e=>{e.v(e=>Promise.resolve().then(()=>e(633334)))}"
84
+ * // -> sharedModuleId = "633334"
94
85
  *
95
- * // Minified:
86
+ * // Next.js 16 minified (Promise.all):
96
87
  * "e=>{e.v(t=>Promise.all([\"chunk.js\"].map(t=>e.l(t))).then(()=>t(633334)))}"
97
- * // -> { ctx: "e", vCb: "t", mapCb: "t", sharedModuleId: "633334" }
88
+ * // -> sharedModuleId = "633334"
89
+ *
90
+ * // Next.js 15.x development (multi-line):
91
+ * '(__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}'
92
+ * // -> sharedModuleId = "[project]/.../react/index.js [app-client] (ecmascript)"
98
93
  */
99
- declare const ASYNC_MODULE_ALL_RE: RegExp;
94
+ declare const ASYNC_MODULE_CALLBACK_RE: RegExp;
100
95
  /**
101
96
  * Detects Turbopack runtime global usage in a chunk.
102
97
  *
@@ -106,4 +101,4 @@ declare const ASYNC_MODULE_ALL_RE: RegExp;
106
101
  */
107
102
  declare const TURBOPACK_GLOBAL_RE: RegExp;
108
103
 
109
- export { ASYNC_MODULE_ALL_RE, ASYNC_MODULE_LOADER_RE, ASYNC_MODULE_RESOLVE_RE, REMOTE_SHARED_ASSIGNMENT_RE, REMOTE_SHARED_MARKER_RE, TURBOPACK_GLOBAL_RE };
104
+ export { ASYNC_MODULE_CALLBACK_RE, ASYNC_MODULE_LOADER_RE, REMOTE_SHARED_ASSIGNMENT_RE, REMOTE_SHARED_MARKER_RE, TURBOPACK_GLOBAL_RE, extractGroup };
@@ -1,15 +1,31 @@
1
+ const MODULE_ID_PATTERN = '"[^"]+"|[0-9]+';
2
+ function stripQuotes(value) {
3
+ if (value.startsWith('"') && value.endsWith('"')) {
4
+ return value.slice(1, -1);
5
+ }
6
+ return value;
7
+ }
8
+ function extractGroup(re, input, group) {
9
+ const raw = re.exec(input)?.groups?.[group];
10
+ return raw ? stripQuotes(raw) : void 0;
11
+ }
1
12
  const REMOTE_SHARED_MARKER_RE = /(?:self|[a-z])\.TURBOPACK_REMOTE_SHARED/;
2
- const REMOTE_SHARED_ASSIGNMENT_RE = /\.TURBOPACK_REMOTE_SHARED=await (?:__turbopack_context__|[a-z])\.A\((?<sharedModuleId>[0-9]+)\)/;
3
- const ASYNC_MODULE_LOADER_RE = /(?:__turbopack_context__|e)\.A\((?<asyncSharedModuleId>[0-9]+)\)/;
4
- const ASYNC_MODULE_RESOLVE_RE = /(?<ctx>__turbopack_context__|e)=>\{\k<ctx>\.v\((?<inner>parentImport|e)=>Promise\.resolve\(\)\.then\(\(\)=>\k<inner>\((?<sharedModuleId>[0-9]+)\)\)\)\}/;
5
- const ASYNC_MODULE_ALL_RE = /(?<ctx>__turbopack_context__|e)=>\{\k<ctx>\.v\((?<vCb>parentImport|t)=>Promise\.all\(\["[^"]+"\]\.map\((?<mapCb>chunk|t)=>\k<ctx>\.l\(\k<mapCb>\)\)\)\.then\(\(\)=>\k<vCb>\((?<sharedModuleId>[0-9]+)\)\)\)\}/;
13
+ const REMOTE_SHARED_ASSIGNMENT_RE = new RegExp(
14
+ `\\.TURBOPACK_REMOTE_SHARED\\s*=\\s*await (?:__turbopack_context__|[a-z])\\.A\\((?<sharedModuleId>${MODULE_ID_PATTERN})\\)`
15
+ );
16
+ const ASYNC_MODULE_LOADER_RE = new RegExp(
17
+ `(?:__turbopack_context__|[a-z])\\.A\\((?<asyncSharedModuleId>${MODULE_ID_PATTERN})\\)`
18
+ );
19
+ const ASYNC_MODULE_CALLBACK_RE = new RegExp(
20
+ `(?:parentImport|[a-z])\\((?<sharedModuleId>${MODULE_ID_PATTERN})\\)`
21
+ );
6
22
  const TURBOPACK_GLOBAL_RE = /(?:globalThis|self)\s*(?:\.TURBOPACK|\[\s*["']TURBOPACK["']\s*\])/;
7
23
  export {
8
- ASYNC_MODULE_ALL_RE,
24
+ ASYNC_MODULE_CALLBACK_RE,
9
25
  ASYNC_MODULE_LOADER_RE,
10
- ASYNC_MODULE_RESOLVE_RE,
11
26
  REMOTE_SHARED_ASSIGNMENT_RE,
12
27
  REMOTE_SHARED_MARKER_RE,
13
- TURBOPACK_GLOBAL_RE
28
+ TURBOPACK_GLOBAL_RE,
29
+ extractGroup
14
30
  };
15
31
  //# sourceMappingURL=patterns.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/runtime/turbopack/patterns.ts"],"sourcesContent":["/**\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 * These patterns use named capture groups and backreferences to ensure\n * consistency within a single match (e.g., if ctx is 'e', all uses of ctx must be 'e').\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 numeric module ID\n *\n * The minifier can assign any single-letter variable names to both the receiver and\n * the Turbopack context, so both are matched as `[a-z]`.\n *\n * @example\n * // Development:\n * \"self.TURBOPACK_REMOTE_SHARED=await __turbopack_context__.A(984803)\"\n * // -> { sharedModuleId: \"984803\" }\n *\n * // Minified (context as \"e\"):\n * \"t.TURBOPACK_REMOTE_SHARED=await e.A(123456)\"\n * // -> { sharedModuleId: \"123456\" }\n *\n * // Minified (context as \"t\"):\n * \"e.TURBOPACK_REMOTE_SHARED=await t.A(123456)\"\n * // -> { sharedModuleId: \"123456\" }\n */\nexport const REMOTE_SHARED_ASSIGNMENT_RE =\n /\\.TURBOPACK_REMOTE_SHARED=await (?:__turbopack_context__|[a-z])\\.A\\((?<sharedModuleId>[0-9]+)\\)/;\n\n/**\n * Matches async module loader calls: ctx.A(moduleId)\n *\n * Captures:\n * - `asyncSharedModuleId`: The numeric module ID being loaded asynchronously\n *\n * @example\n * // Development:\n * \"() => __turbopack_context__.A(460400)\"\n * // -> { asyncSharedModuleId: \"460400\" }\n *\n * // Minified:\n * \"() => e.A(460400)\"\n * // -> { asyncSharedModuleId: \"460400\" }\n */\nexport const ASYNC_MODULE_LOADER_RE =\n /(?:__turbopack_context__|e)\\.A\\((?<asyncSharedModuleId>[0-9]+)\\)/;\n\n/**\n * Matches async module with Promise.resolve pattern.\n * Used for modules that can be loaded immediately without chunk loading.\n *\n * Captures:\n * - `ctx`: The context variable (__turbopack_context__ or e)\n * - `inner`: The inner callback variable (parentImport or e)\n * - `sharedModuleId`: The numeric module ID\n *\n * @example\n * // Development:\n * \"__turbopack_context__=>{__turbopack_context__.v(parentImport=>Promise.resolve().then(()=>parentImport(633334)))}\"\n * // -> { ctx: \"__turbopack_context__\", inner: \"parentImport\", sharedModuleId: \"633334\" }\n *\n * // Minified:\n * \"e=>{e.v(e=>Promise.resolve().then(()=>e(633334)))}\"\n * // -> { ctx: \"e\", inner: \"e\", sharedModuleId: \"633334\" }\n */\nexport const ASYNC_MODULE_RESOLVE_RE =\n /(?<ctx>__turbopack_context__|e)=>\\{\\k<ctx>\\.v\\((?<inner>parentImport|e)=>Promise\\.resolve\\(\\)\\.then\\(\\(\\)=>\\k<inner>\\((?<sharedModuleId>[0-9]+)\\)\\)\\)\\}/;\n\n/**\n * Matches async module with Promise.all pattern.\n * Used for modules that require loading additional chunks first.\n *\n * Captures:\n * - `ctx`: The context variable (__turbopack_context__ or e)\n * - `vCb`: The callback passed to .v() (parentImport or t)\n * - `mapCb`: The callback passed to .map() (chunk or t)\n * - `sharedModuleId`: The numeric module ID\n *\n * @example\n * // Development:\n * \"__turbopack_context__=>{__turbopack_context__.v(parentImport=>Promise.all([\\\"static/chunks/82dcf883b4ba22f0.js\\\"].map(chunk=>__turbopack_context__.l(chunk))).then(()=>parentImport(657407)))}\"\n * // -> { ctx: \"__turbopack_context__\", vCb: \"parentImport\", mapCb: \"chunk\", sharedModuleId: \"657407\" }\n *\n * // Minified:\n * \"e=>{e.v(t=>Promise.all([\\\"chunk.js\\\"].map(t=>e.l(t))).then(()=>t(633334)))}\"\n * // -> { ctx: \"e\", vCb: \"t\", mapCb: \"t\", sharedModuleId: \"633334\" }\n */\nexport const ASYNC_MODULE_ALL_RE =\n /(?<ctx>__turbopack_context__|e)=>\\{\\k<ctx>\\.v\\((?<vCb>parentImport|t)=>Promise\\.all\\(\\[\"[^\"]+\"\\]\\.map\\((?<mapCb>chunk|t)=>\\k<ctx>\\.l\\(\\k<mapCb>\\)\\)\\)\\.then\\(\\(\\)=>\\k<vCb>\\((?<sharedModuleId>[0-9]+)\\)\\)\\)\\}/;\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|\\[\\s*[\"']TURBOPACK[\"']\\s*\\])/;\n"],"mappings":"AAqBO,MAAM,0BACX;AAwBK,MAAM,8BACX;AAiBK,MAAM,yBACX;AAoBK,MAAM,0BACX;AAqBK,MAAM,sBACX;AASK,MAAM,sBACX;","names":[]}
1
+ {"version":3,"sources":["../../../../src/runtime/turbopack/patterns.ts"],"sourcesContent":["/**\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/** Reusable fragment that matches a turbopack module ID: quoted string or numeric. */\nconst MODULE_ID_PATTERN = '\"[^\"]+\"|[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 * Runs a regex against `input` and returns the named capture group with\n * quotes stripped, or `undefined` if there's 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 return raw ? stripQuotes(raw) : undefined;\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|\\[\\s*[\"']TURBOPACK[\"']\\s*\\])/;\n"],"mappings":"AAeA,MAAM,oBAAoB;AAG1B,SAAS,YAAY,OAAuB;AAC1C,MAAI,MAAM,WAAW,GAAG,KAAK,MAAM,SAAS,GAAG,GAAG;AAChD,WAAO,MAAM,MAAM,GAAG,EAAE;AAAA,EAC1B;AACA,SAAO;AACT;AAMO,SAAS,aACd,IACA,OACA,OACoB;AACpB,QAAM,MAAM,GAAG,KAAK,KAAK,GAAG,SAAS,KAAK;AAC1C,SAAO,MAAM,YAAY,GAAG,IAAI;AAClC;AAYO,MAAM,0BACX;AAqBK,MAAM,8BAA8B,IAAI;AAAA,EAC7C,oGAAoG;AACtG;AAqBO,MAAM,yBAAyB,IAAI;AAAA,EACxC,gEAAgE;AAClE;AA0BO,MAAM,2BAA2B,IAAI;AAAA,EAC1C,8CAA8C;AAChD;AASO,MAAM,sBACX;","names":[]}
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
@@ -17,42 +15,51 @@ var __copyProps = (to, from, except, desc) => {
17
15
  }
18
16
  return to;
19
17
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var webpack_runtime_exports = {};
30
- __export(webpack_runtime_exports, {
31
- setupWebpackRuntime: () => setupWebpackRuntime
19
+ var remote_scope_setup_exports = {};
20
+ __export(remote_scope_setup_exports, {
21
+ setupRemoteScope: () => setupRemoteScope
32
22
  });
33
- module.exports = __toCommonJS(webpack_runtime_exports);
23
+ module.exports = __toCommonJS(remote_scope_setup_exports);
34
24
  var import_constants = require("#internal/runtime/constants");
25
+ var import_namespace = require("#internal/runtime/namespace");
35
26
  var import_patterns = require("#internal/runtime/patterns");
36
27
  var import_error = require("#internal/utils/error");
37
28
  var import_logger = require("#internal/utils/logger");
38
29
  var import_chunk_loader = require("./chunk-loader");
39
30
  var import_module = require("./module");
40
31
  var import_remote_scope = require("./remote-scope");
41
- var import_shared_modules = require("./shared-modules");
42
- async function setupWebpackRuntime(runtime, scripts = [], url = new URL(location.href), bundle, shared = {}, remoteShared = {}, resolveClientUrl) {
32
+ async function setupRemoteScope(runtime, scripts = [], url = new URL(location.href), bundle, resolveClientUrl) {
43
33
  const self = globalThis;
34
+ const ns = (0, import_namespace.getNamespace)();
44
35
  const bundleName = bundle ?? "default";
36
+ const existingScope = (0, import_remote_scope.getScope)(bundleName);
37
+ if (existingScope && existingScope.url.origin === url.origin) {
38
+ (0, import_logger.logDebug)(
39
+ "WebpackRuntime",
40
+ `Reusing scope "${existingScope.scopedName}" (turbopackModules=${existingScope.turbopackModules.length})`
41
+ );
42
+ existingScope.resolveClientUrl = resolveClientUrl;
43
+ if (runtime === import_constants.RUNTIME_TURBOPACK) {
44
+ await Promise.allSettled(
45
+ scripts.map(
46
+ (script) => script.src ? (0, import_chunk_loader.loadChunkWithScope)(existingScope, script.src) : Promise.resolve(void 0)
47
+ )
48
+ );
49
+ }
50
+ return existingScope;
51
+ }
45
52
  const scope = (0, import_remote_scope.createScope)(bundleName, url, runtime, resolveClientUrl);
46
53
  (0, import_remote_scope.registerScope)(scope);
47
- if (!self.__remote_bundle_url__) {
48
- self.__remote_bundle_url__ = {};
54
+ if (runtime === import_constants.RUNTIME_WEBPACK && self.__remote_webpack_require__?.[bundleName]) {
55
+ scope.webpackRequire = self.__remote_webpack_require__[bundleName];
49
56
  }
50
- self.__remote_bundle_url__[bundleName] = url;
57
+ ns.bundleUrls[bundleName] = url;
51
58
  if (scope.scopedName !== bundleName) {
52
- self.__remote_bundle_url__[scope.scopedName] = url;
59
+ ns.bundleUrls[scope.scopedName] = url;
53
60
  }
54
61
  self.__webpack_get_script_filename__ = () => null;
55
- const willCreateDispatchers = typeof self.__webpack_require__ !== "function" || self.__webpack_require_type__ !== "turbopack";
62
+ const willCreateDispatchers = typeof self.__webpack_require__ !== "function" || ns.dispatcherRuntime !== "turbopack";
56
63
  if (willCreateDispatchers) {
57
64
  if (!self.__original_webpack_require__ && !self.__original_webpack_chunk_load__) {
58
65
  self.__original_webpack_chunk_load__ = self.__webpack_chunk_load__;
@@ -60,6 +67,7 @@ async function setupWebpackRuntime(runtime, scripts = [], url = new URL(location
60
67
  }
61
68
  self.__webpack_chunk_load__ = (0, import_chunk_loader.createChunkDispatcher)();
62
69
  self.__webpack_require__ = createModuleDispatcher(runtime);
70
+ ns.dispatcherRuntime = runtime;
63
71
  self.__webpack_require_type__ = runtime;
64
72
  if (self.__remote_webpack_require__ && runtime === import_constants.RUNTIME_TURBOPACK) {
65
73
  self.__remote_webpack_require__[bundleName] = self.__webpack_require__;
@@ -87,15 +95,7 @@ async function setupWebpackRuntime(runtime, scripts = [], url = new URL(location
87
95
  }
88
96
  }
89
97
  }
90
- const coreShared = {
91
- react: async () => (await import("react")).default,
92
- "react-dom": async () => (await import("react-dom")).default,
93
- "react/jsx-dev-runtime": async () => (await import("react/jsx-dev-runtime")).default,
94
- "react/jsx-runtime": async () => (await import("react/jsx-runtime")).default,
95
- "react-dom/client": async () => (await import("react-dom/client")).default,
96
- ...shared
97
- };
98
- await (0, import_shared_modules.initializeSharedModules)(scope, coreShared, remoteShared);
98
+ return scope;
99
99
  }
100
100
  function createModuleDispatcher(runtime) {
101
101
  return (id) => {
@@ -112,6 +112,9 @@ function createModuleDispatcher(runtime) {
112
112
  );
113
113
  try {
114
114
  if (remoteRuntime === import_constants.RUNTIME_WEBPACK && bundle && moduleId) {
115
+ const scope2 = (0, import_remote_scope.getScope)(bundle);
116
+ if (scope2?.webpackRequire)
117
+ return scope2.webpackRequire(moduleId);
115
118
  return self.__remote_webpack_require__?.[bundle]?.(moduleId);
116
119
  }
117
120
  const scope = (0, import_remote_scope.getScope)(bundleName);
@@ -151,6 +154,6 @@ function createModuleDispatcher(runtime) {
151
154
  }
152
155
  // Annotate the CommonJS export names for ESM import in node:
153
156
  0 && (module.exports = {
154
- setupWebpackRuntime
157
+ setupRemoteScope
155
158
  });
156
- //# sourceMappingURL=webpack-runtime.cjs.map
159
+ //# sourceMappingURL=remote-scope-setup.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/runtime/turbopack/remote-scope-setup.ts"],"sourcesContent":["import type { InternalResolveClientUrl } from '#internal/host/server/types';\nimport {\n RUNTIME_TURBOPACK,\n RUNTIME_WEBPACK,\n type Runtime,\n} from '#internal/runtime/constants';\nimport { getNamespace } from '#internal/runtime/namespace';\nimport { REMOTE_COMPONENT_REGEX } from '#internal/runtime/patterns';\nimport type { GlobalScope } from '#internal/runtime/types';\nimport { RemoteComponentsError } from '#internal/utils/error';\nimport { logDebug, logWarn } from '#internal/utils/logger';\nimport { createChunkDispatcher, loadChunkWithScope } from './chunk-loader';\nimport { requireModule } from './module';\nimport {\n createScope,\n getScope,\n type RemoteScope,\n registerScope,\n} from './remote-scope';\n\n/**\n * Sets up the bundler runtime environment for remote components.\n *\n * Creates a RemoteScope that encapsulates all per-remote state (base URL,\n * proxy callback, module cache, shared modules) and registers it in the\n * global scope registry. Global dispatchers (__webpack_require__,\n * __webpack_chunk_load__) are set once and route to the correct scope.\n *\n * Shared module initialization is NOT performed here — callers must invoke\n * `initializeSharedModules` separately after this function returns. This\n * separation ensures shared modules are initialized after turbopack chunks\n * are loaded (so the primary bundle-introspection path is used), avoiding\n * the fallback that keys shared modules by file path instead of numeric ID.\n *\n * @returns The scope (newly created or reused) for the bundle.\n */\nexport async function setupRemoteScope(\n runtime: Runtime,\n scripts: { src: string | null }[] = [],\n url: URL = new URL(location.href),\n bundle?: string,\n resolveClientUrl?: InternalResolveClientUrl,\n): Promise<RemoteScope> {\n const self = globalThis as GlobalScope;\n const ns = getNamespace();\n const bundleName = bundle ?? 'default';\n\n // When the same remote loads a second component (e.g. switching from basic\n // to styled), reuse the existing scope. The chunk cache is keyed by URL and\n // returns cached promises without re-running handleTurbopackChunk, so\n // turbopackModules, moduleCache, and sharedModules from the first load are\n // all still valid. Only resolveClientUrl may have changed.\n //\n // Origin-only comparison is sufficient because bundleName already identifies\n // a specific remote — different paths on the same origin would be a different\n // bundle with a different name, so getScope() wouldn't return a match.\n const existingScope = getScope(bundleName);\n if (existingScope && existingScope.url.origin === url.origin) {\n logDebug(\n 'WebpackRuntime',\n `Reusing scope \"${existingScope.scopedName}\" (turbopackModules=${existingScope.turbopackModules.length})`,\n );\n existingScope.resolveClientUrl = resolveClientUrl;\n\n // Still load scripts — chunk cache deduplicates already-loaded chunks,\n // and a different component may reference additional chunks.\n if (runtime === RUNTIME_TURBOPACK) {\n await Promise.allSettled(\n scripts.map((script) =>\n script.src\n ? loadChunkWithScope(existingScope, script.src)\n : Promise.resolve(undefined),\n ),\n );\n }\n return existingScope;\n }\n\n const scope = createScope(bundleName, url, runtime, resolveClientUrl);\n registerScope(scope);\n\n // For webpack remotes the remote's own scripts have already loaded (via\n // loadScripts in component-loader) and populated __remote_webpack_require__\n // under the plain bundle name. Capture the reference on the scope so\n // downstream code (applySharedModules, module dispatcher) can use it\n // without reaching into the global.\n if (\n runtime === RUNTIME_WEBPACK &&\n self.__remote_webpack_require__?.[bundleName]\n ) {\n scope.webpackRequire = self.__remote_webpack_require__[bundleName];\n }\n\n ns.bundleUrls[bundleName] = url;\n // Also register under scopedName so webpack hosts (patch-require.ts) can\n // resolve cross-origin remotes whose bundle identifiers were rewritten.\n if (scope.scopedName !== bundleName) {\n ns.bundleUrls[scope.scopedName] = url;\n }\n self.__webpack_get_script_filename__ = () => null;\n\n const willCreateDispatchers =\n typeof self.__webpack_require__ !== 'function' ||\n ns.dispatcherRuntime !== 'turbopack';\n\n if (willCreateDispatchers) {\n // preserve original webpack functions for fallback\n if (\n !self.__original_webpack_require__ &&\n !self.__original_webpack_chunk_load__\n ) {\n self.__original_webpack_chunk_load__ = self.__webpack_chunk_load__;\n self.__original_webpack_require__ = self.__webpack_require__;\n }\n\n self.__webpack_chunk_load__ = createChunkDispatcher();\n self.__webpack_require__ = createModuleDispatcher(runtime);\n // Write-through needed: dispatcherRuntime is a primitive string,\n // so the legacy global can't be aliased by reference in getNamespace().\n ns.dispatcherRuntime = runtime;\n self.__webpack_require_type__ = runtime;\n\n // @legacy(v0.3.4) — __remote_webpack_require__ write-through for turbopack remotes.\n // Needed by PatchRequirePlugin which reads this global at runtime.\n // Remove once PatchRequirePlugin reads from scope.\n if (self.__remote_webpack_require__ && runtime === RUNTIME_TURBOPACK) {\n self.__remote_webpack_require__[bundleName] =\n self.__webpack_require__ as (remoteId: string | number) => unknown;\n self.__remote_webpack_require__[bundleName].type = 'turbopack';\n }\n }\n\n // @legacy(v0.3.4) — __remote_webpack_require__ scoped-name alias.\n // Ensures PatchRequirePlugin can find webpack remotes under rewritten\n // bundle identifiers. Remove once PatchRequirePlugin reads from scope.\n if (\n self.__remote_webpack_require__?.[bundleName] &&\n scope.scopedName !== bundleName\n ) {\n self.__remote_webpack_require__[scope.scopedName] =\n self.__remote_webpack_require__[bundleName];\n }\n\n // load all initial chunks directly via scope — no global dispatch needed\n if (runtime === RUNTIME_TURBOPACK) {\n const results = await Promise.allSettled(\n scripts.map((script) => {\n if (script.src) {\n return loadChunkWithScope(scope, script.src);\n }\n return Promise.resolve(undefined);\n }),\n );\n\n for (const result of results) {\n if (result.status === 'rejected') {\n logWarn(\n 'WebpackRuntime',\n `Initial chunk load failed: ${String(result.reason)}`,\n );\n }\n }\n }\n\n return scope;\n}\n\n/**\n * Creates the global module dispatcher for __webpack_require__.\n * Called by external code (React's RSC runtime) that doesn't have access to\n * a scope. Parses the module ID to find the correct scope and delegates\n * to scope-local module resolution.\n */\nfunction createModuleDispatcher(runtime: Runtime): (id: string) => unknown {\n return (id: string) => {\n const self = globalThis as GlobalScope;\n const { bundle, id: moduleId } = id.match(REMOTE_COMPONENT_REGEX)\n ?.groups ?? {\n bundle: 'default',\n id,\n };\n const bundleName = bundle ?? 'default';\n const remoteRuntime = self.__remote_webpack_require__?.[bundleName]\n ? self.__remote_webpack_require__[bundleName]?.type || 'webpack'\n : runtime;\n\n logDebug(\n 'ModuleDispatcher',\n `Resolving \"${id}\" (bundle: \"${bundleName}\", runtime: \"${remoteRuntime}\")`,\n );\n\n try {\n // for webpack remotes, prefer scope-based dispatch then fall back to global\n if (remoteRuntime === RUNTIME_WEBPACK && bundle && moduleId) {\n const scope = getScope(bundle);\n if (scope?.webpackRequire) return scope.webpackRequire(moduleId);\n // @legacy(v0.3.4) — global fallback for hosts that populated\n // __remote_webpack_require__ without calling setupWebpackRuntime.\n return self.__remote_webpack_require__?.[bundle]?.(moduleId);\n }\n\n // Look up scope by parsed bundle name. Works with both the scoped\n // name (Next.js hosts with server-side rewriting) and the plain\n // bundle name (static/HTML hosts with unrewritten chunks).\n const scope = getScope(bundleName);\n if (scope) {\n return requireModule(scope, moduleId ?? id, id);\n }\n\n throw new Error(\n `Module \"${id}\" not found — no scope for bundle \"${bundleName}\".`,\n );\n } catch (requireError) {\n logWarn(\n 'ModuleDispatcher',\n `Module require failed: ${String(requireError)}`,\n );\n if (typeof self.__original_webpack_require__ !== 'function') {\n throw new RemoteComponentsError(\n `Module \"${id}\" not found in remote component bundle \"${bundleName}\".`,\n {\n cause: requireError instanceof Error ? requireError : undefined,\n },\n );\n }\n try {\n logDebug(\n 'ModuleDispatcher',\n 'Falling back to original webpack require',\n );\n return self.__original_webpack_require__(id);\n } catch (originalError) {\n throw new RemoteComponentsError(\n `Module \"${id}\" not found in remote component bundle \"${bundleName}\".`,\n { cause: originalError instanceof Error ? originalError : undefined },\n );\n }\n }\n };\n}\n"],"mappings":"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","names":["scope"]}
@@ -0,0 +1,25 @@
1
+ import { InternalResolveClientUrl } from '../url/resolve-client-url.js';
2
+ import { Runtime } from '../constants.js';
3
+ import { RemoteScope } from './remote-scope.js';
4
+
5
+ /**
6
+ * Sets up the bundler runtime environment for remote components.
7
+ *
8
+ * Creates a RemoteScope that encapsulates all per-remote state (base URL,
9
+ * proxy callback, module cache, shared modules) and registers it in the
10
+ * global scope registry. Global dispatchers (__webpack_require__,
11
+ * __webpack_chunk_load__) are set once and route to the correct scope.
12
+ *
13
+ * Shared module initialization is NOT performed here — callers must invoke
14
+ * `initializeSharedModules` separately after this function returns. This
15
+ * separation ensures shared modules are initialized after turbopack chunks
16
+ * are loaded (so the primary bundle-introspection path is used), avoiding
17
+ * the fallback that keys shared modules by file path instead of numeric ID.
18
+ *
19
+ * @returns The scope (newly created or reused) for the bundle.
20
+ */
21
+ declare function setupRemoteScope(runtime: Runtime, scripts?: {
22
+ src: string | null;
23
+ }[], url?: URL, bundle?: string, resolveClientUrl?: InternalResolveClientUrl): Promise<RemoteScope>;
24
+
25
+ export { setupRemoteScope };