remote-components 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/nextjs.cjs.map +1 -1
- package/dist/config/nextjs.js.map +1 -1
- package/dist/host/html.cjs +467 -395
- package/dist/host/html.cjs.map +1 -1
- package/dist/host/html.js +467 -395
- package/dist/host/html.js.map +1 -1
- package/dist/host/nextjs/app/client-only.cjs +507 -447
- package/dist/host/nextjs/app/client-only.cjs.map +1 -1
- package/dist/host/nextjs/app/client-only.js +515 -455
- package/dist/host/nextjs/app/client-only.js.map +1 -1
- package/dist/host/nextjs/app.cjs +5 -6
- package/dist/host/nextjs/app.cjs.map +1 -1
- package/dist/host/nextjs/app.js +5 -6
- package/dist/host/nextjs/app.js.map +1 -1
- package/dist/host/nextjs/pages.cjs +6 -11
- package/dist/host/nextjs/pages.cjs.map +1 -1
- package/dist/host/nextjs/pages.js +9 -11
- package/dist/host/nextjs/pages.js.map +1 -1
- package/dist/host/react.cjs +435 -374
- package/dist/host/react.cjs.map +1 -1
- package/dist/host/react.js +435 -374
- package/dist/host/react.js.map +1 -1
- package/dist/internal/host/nextjs/dom-flight.cjs +16 -7
- package/dist/internal/host/nextjs/dom-flight.cjs.map +1 -1
- package/dist/internal/host/nextjs/dom-flight.d.ts +2 -2
- package/dist/internal/host/nextjs/dom-flight.js +16 -7
- package/dist/internal/host/nextjs/dom-flight.js.map +1 -1
- package/dist/internal/host/nextjs/image-shared.cjs +2 -2
- package/dist/internal/host/nextjs/image-shared.cjs.map +1 -1
- package/dist/internal/host/nextjs/image-shared.js +2 -2
- package/dist/internal/host/nextjs/image-shared.js.map +1 -1
- package/dist/internal/host/server/fetch-remote-component.cjs +183 -149
- package/dist/internal/host/server/fetch-remote-component.cjs.map +1 -1
- package/dist/internal/host/server/fetch-remote-component.js +185 -149
- package/dist/internal/host/server/fetch-remote-component.js.map +1 -1
- package/dist/internal/host/shared/remote-image-loader.cjs +2 -5
- package/dist/internal/host/shared/remote-image-loader.cjs.map +1 -1
- package/dist/internal/host/shared/remote-image-loader.js +2 -5
- package/dist/internal/host/shared/remote-image-loader.js.map +1 -1
- package/dist/internal/runtime/constants.cjs +6 -6
- package/dist/internal/runtime/constants.cjs.map +1 -1
- package/dist/internal/runtime/constants.d.ts +3 -3
- package/dist/internal/runtime/constants.js +4 -4
- package/dist/internal/runtime/constants.js.map +1 -1
- package/dist/internal/runtime/html/parse-remote-html.cjs +11 -15
- package/dist/internal/runtime/html/parse-remote-html.cjs.map +1 -1
- package/dist/internal/runtime/html/parse-remote-html.d.ts +2 -12
- package/dist/internal/runtime/html/parse-remote-html.js +17 -15
- package/dist/internal/runtime/html/parse-remote-html.js.map +1 -1
- package/dist/internal/runtime/loaders/script-loader.cjs +2 -2
- package/dist/internal/runtime/loaders/script-loader.cjs.map +1 -1
- package/dist/internal/runtime/loaders/script-loader.js +1 -1
- package/dist/internal/runtime/loaders/script-loader.js.map +1 -1
- package/dist/internal/runtime/metadata.cjs +42 -0
- package/dist/internal/runtime/metadata.cjs.map +1 -1
- package/dist/internal/runtime/metadata.d.ts +21 -1
- package/dist/internal/runtime/metadata.js +38 -0
- package/dist/internal/runtime/metadata.js.map +1 -1
- package/dist/internal/runtime/patterns.cjs +38 -0
- package/dist/internal/runtime/patterns.cjs.map +1 -0
- package/dist/internal/runtime/patterns.d.ts +5 -0
- package/dist/internal/runtime/patterns.js +12 -0
- package/dist/internal/runtime/patterns.js.map +1 -0
- package/dist/internal/runtime/turbopack/chunk-loader.cjs +79 -128
- package/dist/internal/runtime/turbopack/chunk-loader.cjs.map +1 -1
- package/dist/internal/runtime/turbopack/chunk-loader.d.ts +22 -7
- package/dist/internal/runtime/turbopack/chunk-loader.js +85 -131
- package/dist/internal/runtime/turbopack/chunk-loader.js.map +1 -1
- package/dist/internal/runtime/turbopack/module.cjs +56 -57
- package/dist/internal/runtime/turbopack/module.cjs.map +1 -1
- package/dist/internal/runtime/turbopack/module.d.ts +14 -11
- package/dist/internal/runtime/turbopack/module.js +54 -56
- package/dist/internal/runtime/turbopack/module.js.map +1 -1
- package/dist/internal/runtime/turbopack/remote-scope.cjs +101 -0
- package/dist/internal/runtime/turbopack/remote-scope.cjs.map +1 -0
- package/dist/internal/runtime/turbopack/remote-scope.d.ts +55 -0
- package/dist/internal/runtime/turbopack/remote-scope.js +73 -0
- package/dist/internal/runtime/turbopack/remote-scope.js.map +1 -0
- package/dist/internal/runtime/turbopack/shared-modules.cjs +62 -56
- package/dist/internal/runtime/turbopack/shared-modules.cjs.map +1 -1
- package/dist/internal/runtime/turbopack/shared-modules.d.ts +7 -3
- package/dist/internal/runtime/turbopack/shared-modules.js +63 -57
- package/dist/internal/runtime/turbopack/shared-modules.js.map +1 -1
- package/dist/internal/runtime/turbopack/webpack-runtime.cjs +50 -31
- package/dist/internal/runtime/turbopack/webpack-runtime.cjs.map +1 -1
- package/dist/internal/runtime/turbopack/webpack-runtime.d.ts +5 -2
- package/dist/internal/runtime/turbopack/webpack-runtime.js +52 -34
- package/dist/internal/runtime/turbopack/webpack-runtime.js.map +1 -1
- package/dist/internal/runtime/types.cjs.map +1 -1
- package/dist/internal/runtime/types.d.ts +4 -3
- package/dist/internal/utils/logger.cjs.map +1 -1
- package/dist/internal/utils/logger.d.ts +1 -1
- package/dist/internal/utils/logger.js.map +1 -1
- package/dist/internal/utils.cjs +5 -0
- package/dist/internal/utils.cjs.map +1 -1
- package/dist/internal/utils.d.ts +15 -1
- package/dist/internal/utils.js +4 -0
- package/dist/internal/utils.js.map +1 -1
- package/dist/remote/html.cjs.map +1 -1
- package/dist/remote/html.js.map +1 -1
- package/dist/remote/nextjs/app.cjs +2 -1
- package/dist/remote/nextjs/app.cjs.map +1 -1
- package/dist/remote/nextjs/app.js +2 -1
- package/dist/remote/nextjs/app.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,71 +1,54 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
REMOTE_COMPONENT_REGEX,
|
|
4
|
-
RUNTIME_WEBPACK
|
|
5
|
-
} from "#internal/runtime/constants";
|
|
1
|
+
import { RUNTIME_WEBPACK } from "#internal/runtime/constants";
|
|
2
|
+
import { collapseDoubleSlashes } from "#internal/runtime/patterns";
|
|
6
3
|
import { isProxiedUrl } from "#internal/runtime/url/protected-rc-fallback";
|
|
7
4
|
import {
|
|
8
5
|
failedProxiedAssetError,
|
|
9
6
|
RemoteComponentsError
|
|
10
7
|
} from "#internal/utils/error";
|
|
11
|
-
import {
|
|
8
|
+
import {
|
|
9
|
+
logDebug,
|
|
10
|
+
logWarn,
|
|
11
|
+
warnCrossOriginFetchError
|
|
12
|
+
} from "#internal/utils/logger";
|
|
12
13
|
import { TURBOPACK_GLOBAL_RE } from "./patterns";
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
if (!self.__remote_components_turbopack_chunk_loader_promise__) {
|
|
47
|
-
self.__remote_components_turbopack_chunk_loader_promise__ = {};
|
|
48
|
-
}
|
|
49
|
-
if (self.__remote_components_turbopack_chunk_loader_promise__[url]) {
|
|
50
|
-
logDebug("ChunkLoader", `Returning cached promise for: "${url}"`);
|
|
51
|
-
return self.__remote_components_turbopack_chunk_loader_promise__[url];
|
|
52
|
-
}
|
|
53
|
-
const resolvedUrl = resolveClientUrl?.(url) ?? url;
|
|
54
|
-
logDebug("ChunkLoader", `Fetching chunk from: "${resolvedUrl}"`);
|
|
55
|
-
self.__remote_components_turbopack_chunk_loader_promise__[url] = new Promise((resolve, reject) => {
|
|
14
|
+
import {
|
|
15
|
+
formatRemoteId,
|
|
16
|
+
getScope,
|
|
17
|
+
parseRemoteId
|
|
18
|
+
} from "./remote-scope";
|
|
19
|
+
function loadChunkWithScope(scope, chunkId) {
|
|
20
|
+
logDebug(
|
|
21
|
+
"ChunkLoader",
|
|
22
|
+
`loadChunkWithScope: "${chunkId}" (scope: "${scope.scopedName}")`
|
|
23
|
+
);
|
|
24
|
+
const self = globalThis;
|
|
25
|
+
const { bundle, path, prefix } = parseRemoteId(chunkId);
|
|
26
|
+
const remoteRuntime = self.__remote_webpack_require__?.[bundle ?? "default"] ? self.__remote_webpack_require__[bundle ?? "default"]?.type || "webpack" : scope.runtime;
|
|
27
|
+
if (remoteRuntime === RUNTIME_WEBPACK) {
|
|
28
|
+
return Promise.resolve(void 0);
|
|
29
|
+
}
|
|
30
|
+
const rawPath = path ? collapseDoubleSlashes(`${prefix}${path}`) : "/";
|
|
31
|
+
const url = new URL(rawPath, scope.url).href;
|
|
32
|
+
if (url.endsWith(".css")) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (!self.__remote_components_turbopack_chunk_loader_promise__) {
|
|
36
|
+
self.__remote_components_turbopack_chunk_loader_promise__ = {};
|
|
37
|
+
}
|
|
38
|
+
if (self.__remote_components_turbopack_chunk_loader_promise__[url]) {
|
|
39
|
+
return self.__remote_components_turbopack_chunk_loader_promise__[url];
|
|
40
|
+
}
|
|
41
|
+
const resolvedUrl = scope.resolveClientUrl?.(url) ?? url;
|
|
42
|
+
if (resolvedUrl !== url) {
|
|
43
|
+
logDebug("ChunkLoader", `Proxied chunk URL: "${url}" \u2192 "${resolvedUrl}"`);
|
|
44
|
+
}
|
|
45
|
+
self.__remote_components_turbopack_chunk_loader_promise__[url] = new Promise(
|
|
46
|
+
(resolve, reject) => {
|
|
56
47
|
fetch(resolvedUrl).then((res) => res.text()).then((code) => {
|
|
57
48
|
const hasTurbopack = TURBOPACK_GLOBAL_RE.test(code);
|
|
58
49
|
if (hasTurbopack) {
|
|
59
|
-
return handleTurbopackChunk(code,
|
|
50
|
+
return handleTurbopackChunk(code, scope, url);
|
|
60
51
|
}
|
|
61
|
-
logDebug(
|
|
62
|
-
"ChunkLoader",
|
|
63
|
-
`Chunk does not contain globalThis.TURBOPACK or self.TURBOPACK: "${url}"`
|
|
64
|
-
);
|
|
65
|
-
logDebug(
|
|
66
|
-
"ChunkLoader",
|
|
67
|
-
`First 500 chars of chunk: ${code.slice(0, 500)}`
|
|
68
|
-
);
|
|
69
52
|
}).then(resolve).catch((error) => {
|
|
70
53
|
const isProxied = isProxiedUrl(resolvedUrl);
|
|
71
54
|
if (isProxied) {
|
|
@@ -75,17 +58,29 @@ function createChunkLoader(runtime, resolveClientUrl) {
|
|
|
75
58
|
reject(error);
|
|
76
59
|
}
|
|
77
60
|
});
|
|
78
|
-
}
|
|
79
|
-
|
|
61
|
+
}
|
|
62
|
+
);
|
|
63
|
+
return self.__remote_components_turbopack_chunk_loader_promise__[url];
|
|
64
|
+
}
|
|
65
|
+
function createChunkDispatcher() {
|
|
66
|
+
return function __chunk_dispatcher__(chunkId, scriptBundle) {
|
|
67
|
+
logDebug("ChunkDispatcher", `Dispatching chunk: "${chunkId}"`);
|
|
68
|
+
const { bundle } = parseRemoteId(chunkId);
|
|
69
|
+
const bundleName = bundle || scriptBundle || "default";
|
|
70
|
+
const scope = getScope(bundleName);
|
|
71
|
+
logDebug(
|
|
72
|
+
"ChunkDispatcher",
|
|
73
|
+
`Scope resolution: bundle="${bundleName}", scope=${scope?.scopedName ?? "null"}`
|
|
74
|
+
);
|
|
75
|
+
if (!scope) {
|
|
76
|
+
logWarn("ChunkDispatcher", `No scope found for bundle "${bundleName}"`);
|
|
77
|
+
return Promise.resolve(void 0);
|
|
78
|
+
}
|
|
79
|
+
return loadChunkWithScope(scope, chunkId);
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
|
-
async function handleTurbopackChunk(code,
|
|
83
|
-
logDebug(
|
|
84
|
-
"ChunkLoader",
|
|
85
|
-
`Handling Turbopack chunk - bundle: "${bundle}", url: "${url}"`
|
|
86
|
-
);
|
|
82
|
+
async function handleTurbopackChunk(code, scope, url) {
|
|
87
83
|
if (/importScripts\(\.\.\.self.TURBOPACK_NEXT_CHUNK_URLS/.test(code)) {
|
|
88
|
-
logDebug("ChunkLoader", `Skipping worker chunk: "${url}"`);
|
|
89
84
|
const preloadLinks = document.querySelectorAll(
|
|
90
85
|
`link[rel="preload"][href="${new URL(url).pathname}"]`
|
|
91
86
|
);
|
|
@@ -93,58 +88,41 @@ async function handleTurbopackChunk(code, bundle, url) {
|
|
|
93
88
|
return;
|
|
94
89
|
}
|
|
95
90
|
const self = globalThis;
|
|
96
|
-
const
|
|
97
|
-
logDebug("ChunkLoader", `Bundle key: "${bundleKey}"`);
|
|
91
|
+
const { globalKey } = scope;
|
|
98
92
|
const transformedCode = code.replace(
|
|
99
93
|
/globalThis\[\s*["']TURBOPACK["']\s*\]/g,
|
|
100
|
-
`globalThis["TURBOPACK_${
|
|
94
|
+
`globalThis["TURBOPACK_${globalKey}"]`
|
|
101
95
|
).replace(
|
|
102
96
|
/self\[\s*["']TURBOPACK["']\s*\]/g,
|
|
103
|
-
`self["TURBOPACK_${
|
|
104
|
-
).replace(/globalThis\.TURBOPACK/g, `globalThis.TURBOPACK_${
|
|
97
|
+
`self["TURBOPACK_${globalKey}"]`
|
|
98
|
+
).replace(/globalThis\.TURBOPACK/g, `globalThis.TURBOPACK_${globalKey}`).replace(/self\.TURBOPACK(?!_)/g, `self.TURBOPACK_${globalKey}`).replace(
|
|
105
99
|
/TURBOPACK_WORKER_LOCATION/g,
|
|
106
|
-
`TURBOPACK_WORKER_LOCATION_${
|
|
100
|
+
`TURBOPACK_WORKER_LOCATION_${globalKey}`
|
|
107
101
|
).replace(
|
|
108
102
|
/TURBOPACK_NEXT_CHUNK_URLS/g,
|
|
109
|
-
`TURBOPACK_NEXT_CHUNK_URLS_${
|
|
103
|
+
`TURBOPACK_NEXT_CHUNK_URLS_${globalKey}`
|
|
110
104
|
).replace(
|
|
111
105
|
/TURBOPACK_CHUNK_UPDATE_LISTENERS/g,
|
|
112
|
-
`TURBOPACK_CHUNK_UPDATE_LISTENERS_${
|
|
113
|
-
).replace(/__next_require__/g, `__${
|
|
106
|
+
`TURBOPACK_CHUNK_UPDATE_LISTENERS_${globalKey}`
|
|
107
|
+
).replace(/__next_require__/g, `__${globalKey}_next_require__`).replace(
|
|
114
108
|
/\/\/# sourceMappingURL=(?<name>.+)(?<optional>\._)?\.js\.map/g,
|
|
115
|
-
`//# sourceMappingURL=${new URL(
|
|
116
|
-
".",
|
|
117
|
-
new URL(
|
|
118
|
-
url,
|
|
119
|
-
self.__remote_bundle_url__?.[bundle] ?? new URL(location.origin)
|
|
120
|
-
)
|
|
121
|
-
).href}$1$2.js.map`
|
|
109
|
+
`//# sourceMappingURL=${new URL(".", new URL(url, scope.url)).href}$1$2.js.map`
|
|
122
110
|
);
|
|
123
|
-
if (!self[`TURBOPACK_${
|
|
111
|
+
if (!self[`TURBOPACK_${globalKey}`]) {
|
|
124
112
|
const chunkData = [];
|
|
125
113
|
const turbopackObject = {
|
|
126
114
|
push: (item) => {
|
|
127
|
-
logDebug(
|
|
128
|
-
"ChunkLoader",
|
|
129
|
-
`TURBOPACK_${bundleKey}.push() called with item type: ${Array.isArray(item) ? "array" : typeof item}`
|
|
130
|
-
);
|
|
131
115
|
if (Array.isArray(item)) {
|
|
132
116
|
chunkData.push(item);
|
|
133
|
-
logDebug(
|
|
134
|
-
"ChunkLoader",
|
|
135
|
-
`TURBOPACK_${bundleKey} now has ${chunkData.length} chunks`
|
|
136
|
-
);
|
|
137
117
|
} else {
|
|
138
118
|
chunkData.push([item]);
|
|
139
119
|
}
|
|
140
120
|
return chunkData.length;
|
|
141
121
|
},
|
|
142
|
-
// Store chunks for later access
|
|
143
122
|
__chunks__: chunkData
|
|
144
123
|
};
|
|
145
|
-
self[`TURBOPACK_${
|
|
124
|
+
self[`TURBOPACK_${globalKey}`] = turbopackObject;
|
|
146
125
|
}
|
|
147
|
-
logDebug("ChunkLoader", `Creating blob script for: "${url}"`);
|
|
148
126
|
await new Promise((scriptResolve, scriptReject) => {
|
|
149
127
|
const blob = new Blob([transformedCode], {
|
|
150
128
|
type: "application/javascript; charset=UTF-8"
|
|
@@ -156,21 +134,6 @@ async function handleTurbopackChunk(code, bundle, url) {
|
|
|
156
134
|
script.async = true;
|
|
157
135
|
script.onload = () => {
|
|
158
136
|
URL.revokeObjectURL(scriptUrl);
|
|
159
|
-
logDebug(
|
|
160
|
-
"ChunkLoader",
|
|
161
|
-
`Script loaded successfully for bundle "${bundle}"`
|
|
162
|
-
);
|
|
163
|
-
const turbopackBundle = self[`TURBOPACK_${bundleKey}`];
|
|
164
|
-
logDebug(
|
|
165
|
-
"ChunkLoader",
|
|
166
|
-
`TURBOPACK_${bundleKey} type: ${typeof turbopackBundle}, isArray: ${Array.isArray(turbopackBundle)}, keys: ${turbopackBundle ? Object.keys(turbopackBundle).slice(0, 10).join(", ") : "none"}`
|
|
167
|
-
);
|
|
168
|
-
if (turbopackBundle && typeof turbopackBundle === "object") {
|
|
169
|
-
logDebug(
|
|
170
|
-
"ChunkLoader",
|
|
171
|
-
`TURBOPACK_${bundleKey} length/size: ${Array.isArray(turbopackBundle) ? turbopackBundle.length : Object.keys(turbopackBundle).length}`
|
|
172
|
-
);
|
|
173
|
-
}
|
|
174
137
|
scriptResolve(void 0);
|
|
175
138
|
script.remove();
|
|
176
139
|
};
|
|
@@ -185,38 +148,29 @@ async function handleTurbopackChunk(code, bundle, url) {
|
|
|
185
148
|
};
|
|
186
149
|
document.head.appendChild(script);
|
|
187
150
|
});
|
|
188
|
-
const chunkLists = self[`TURBOPACK_${
|
|
189
|
-
|
|
190
|
-
"ChunkLoader",
|
|
191
|
-
`Processing chunk lists for bundle "${bundle}": ${chunkLists?.length ?? 0} lists`
|
|
192
|
-
);
|
|
193
|
-
const loadChunkLists = [];
|
|
151
|
+
const chunkLists = self[`TURBOPACK_${globalKey}_CHUNK_LISTS`];
|
|
152
|
+
const loadChunkPromises = [];
|
|
194
153
|
while (chunkLists?.length) {
|
|
195
154
|
const { chunks } = chunkLists.shift() ?? { chunks: [] };
|
|
196
155
|
if (chunks.length > 0) {
|
|
197
|
-
|
|
198
|
-
"
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
const chunkLoadResult = self.__webpack_chunk_load__?.(
|
|
203
|
-
`[${bundle}] ${url.slice(0, url.indexOf("/_next"))}/_next/${id}`
|
|
156
|
+
for (const id of chunks) {
|
|
157
|
+
const baseUrl = url.slice(0, url.indexOf("/_next"));
|
|
158
|
+
const chunkLoadResult = loadChunkWithScope(
|
|
159
|
+
scope,
|
|
160
|
+
formatRemoteId(scope, `${baseUrl}/_next/${id}`)
|
|
204
161
|
);
|
|
205
162
|
if (chunkLoadResult) {
|
|
206
|
-
|
|
163
|
+
loadChunkPromises.push(chunkLoadResult);
|
|
207
164
|
}
|
|
208
|
-
}
|
|
165
|
+
}
|
|
209
166
|
}
|
|
210
167
|
}
|
|
211
|
-
if (
|
|
212
|
-
|
|
213
|
-
"ChunkLoader",
|
|
214
|
-
`Waiting for ${loadChunkLists.length} additional chunks to load`
|
|
215
|
-
);
|
|
216
|
-
await Promise.all(loadChunkLists);
|
|
168
|
+
if (loadChunkPromises.length > 0) {
|
|
169
|
+
await Promise.all(loadChunkPromises);
|
|
217
170
|
}
|
|
218
171
|
}
|
|
219
172
|
export {
|
|
220
|
-
|
|
173
|
+
createChunkDispatcher,
|
|
174
|
+
loadChunkWithScope
|
|
221
175
|
};
|
|
222
176
|
//# sourceMappingURL=chunk-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/runtime/turbopack/chunk-loader.ts"],"sourcesContent":["import type { InternalResolveClientUrl } from '#internal/host/server/types';\nimport {\n getBundleKey,\n REMOTE_COMPONENT_REGEX,\n RUNTIME_WEBPACK,\n type Runtime,\n} from '#internal/runtime/constants';\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 { logDebug, warnCrossOriginFetchError } from '#internal/utils/logger';\nimport { TURBOPACK_GLOBAL_RE } from './patterns';\n\n/**\n * Creates chunk loader function for webpack runtime.\n * This function is responsible for loading JavaScript chunks from remote applications\n * and transforming Turbopack-specific code to work in the host environment.\n */\nexport function createChunkLoader(\n runtime: Runtime,\n resolveClientUrl?: InternalResolveClientUrl,\n): (chunkId: string, scriptBundle?: string) => Promise<unknown> | undefined {\n return function __turbopack_chunk_load__(\n chunkId: string,\n scriptBundle?: string,\n ) {\n logDebug('ChunkLoader', `Loading chunk: \"${chunkId}\"`);\n const self = globalThis as GlobalScope;\n const {\n bundle,\n id: path,\n prefix,\n } = REMOTE_COMPONENT_REGEX.exec(chunkId)?.groups ?? {\n bundle: scriptBundle ?? '',\n id: chunkId,\n };\n logDebug(\n 'ChunkLoader',\n `Parsed chunk - bundle: \"${bundle}\", path: \"${path}\", prefix: \"${prefix}\"`,\n );\n const remoteRuntime = self.__remote_webpack_require__?.[bundle ?? 'default']\n ? self.__remote_webpack_require__[bundle ?? 'default']?.type || 'webpack'\n : runtime;\n logDebug('ChunkLoader', `Remote runtime: \"${remoteRuntime}\"`);\n if (remoteRuntime === RUNTIME_WEBPACK) {\n logDebug('ChunkLoader', 'Skipping chunk load - webpack runtime detected');\n return Promise.resolve(undefined);\n }\n\n const url = new URL(\n path\n ? `${prefix ?? ''}${path}`.replace(\n /(?<char>[^:])(?<double>\\/\\/)/g,\n '$1/',\n )\n : '/',\n self.__remote_bundle_url__?.[bundle ?? 'default'] ??\n new URL(location.origin),\n ).href;\n if (url.endsWith('.css')) {\n logDebug('ChunkLoader', `Skipping CSS file: \"${url}\"`);\n return;\n }\n\n if (!self.__remote_components_turbopack_chunk_loader_promise__) {\n self.__remote_components_turbopack_chunk_loader_promise__ = {};\n }\n if (self.__remote_components_turbopack_chunk_loader_promise__[url]) {\n logDebug('ChunkLoader', `Returning cached promise for: \"${url}\"`);\n return self.__remote_components_turbopack_chunk_loader_promise__[url];\n }\n\n const resolvedUrl = resolveClientUrl?.(url) ?? url;\n logDebug('ChunkLoader', `Fetching chunk from: \"${resolvedUrl}\"`);\n self.__remote_components_turbopack_chunk_loader_promise__[url] =\n new Promise((resolve, reject) => {\n fetch(resolvedUrl)\n .then((res) => res.text())\n .then((code) => {\n // Turbopack runtime uses either dot-notation or bracket-notation globals.\n const hasTurbopack = TURBOPACK_GLOBAL_RE.test(code);\n if (hasTurbopack) {\n return handleTurbopackChunk(code, bundle ?? '', url);\n }\n logDebug(\n 'ChunkLoader',\n `Chunk does not contain globalThis.TURBOPACK or self.TURBOPACK: \"${url}\"`,\n );\n logDebug(\n 'ChunkLoader',\n `First 500 chars of chunk: ${code.slice(0, 500)}`,\n );\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 self.__remote_components_turbopack_chunk_loader_promise__[url];\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 */\nasync function handleTurbopackChunk(\n code: string,\n bundle: string,\n url: string,\n): Promise<void> {\n logDebug(\n 'ChunkLoader',\n `Handling Turbopack chunk - bundle: \"${bundle}\", url: \"${url}\"`,\n );\n // skip this chunk as it is not needed for remote components\n if (/importScripts\\(\\.\\.\\.self.TURBOPACK_NEXT_CHUNK_URLS/.test(code)) {\n logDebug('ChunkLoader', `Skipping worker chunk: \"${url}\"`);\n // remove preload links for this chunk\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 self = globalThis as GlobalScope;\n const bundleKey = getBundleKey(bundle);\n logDebug('ChunkLoader', `Bundle key: \"${bundleKey}\"`);\n\n // replace global variables with bundle-specific ones to prevent collisions\n // between multiple remote component bundles\n const transformedCode = code\n // Turbopack runtime can reference TURBOPACK via bracket-notation (common in newer Next.js)\n // e.g. globalThis[\"TURBOPACK\"] / self['TURBOPACK']\n .replace(\n /globalThis\\[\\s*[\"']TURBOPACK[\"']\\s*\\]/g,\n `globalThis[\"TURBOPACK_${bundleKey}\"]`,\n )\n .replace(\n /self\\[\\s*[\"']TURBOPACK[\"']\\s*\\]/g,\n `self[\"TURBOPACK_${bundleKey}\"]`,\n )\n .replace(/globalThis\\.TURBOPACK/g, `globalThis.TURBOPACK_${bundleKey}`)\n .replace(/self\\.TURBOPACK(?!_)/g, `self.TURBOPACK_${bundleKey}`)\n .replace(\n /TURBOPACK_WORKER_LOCATION/g,\n `TURBOPACK_WORKER_LOCATION_${bundleKey}`,\n )\n .replace(\n /TURBOPACK_NEXT_CHUNK_URLS/g,\n `TURBOPACK_NEXT_CHUNK_URLS_${bundleKey}`,\n )\n .replace(\n /TURBOPACK_CHUNK_UPDATE_LISTENERS/g,\n `TURBOPACK_CHUNK_UPDATE_LISTENERS_${bundleKey}`,\n )\n .replace(/__next_require__/g, `__${bundleKey}_next_require__`)\n .replace(\n /\\/\\/# sourceMappingURL=(?<name>.+)(?<optional>\\._)?\\.js\\.map/g,\n `//# sourceMappingURL=${\n new URL(\n '.',\n new URL(\n url,\n self.__remote_bundle_url__?.[bundle] ?? new URL(location.origin),\n ),\n ).href\n }$1$2.js.map`,\n );\n\n // Initialize TURBOPACK bundle with push interceptor for Next.js 16.2.0-canary\n // Use webpack-style chunk loading pattern\n if (!self[`TURBOPACK_${bundleKey}`]) {\n const chunkData: unknown[][] = [];\n const turbopackObject = {\n push: (item: unknown) => {\n logDebug(\n 'ChunkLoader',\n `TURBOPACK_${bundleKey}.push() called with item type: ${Array.isArray(item) ? 'array' : typeof item}`,\n );\n if (Array.isArray(item)) {\n chunkData.push(item);\n logDebug(\n 'ChunkLoader',\n `TURBOPACK_${bundleKey} now has ${chunkData.length} chunks`,\n );\n } else {\n chunkData.push([item]);\n }\n return chunkData.length;\n },\n // Store chunks for later access\n __chunks__: chunkData,\n };\n self[`TURBOPACK_${bundleKey}`] = turbopackObject as unknown as Record<\n string,\n unknown\n >;\n }\n\n // load the script dynamically using a Blob URL\n logDebug('ChunkLoader', `Creating blob script for: \"${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 logDebug(\n 'ChunkLoader',\n `Script loaded successfully for bundle \"${bundle}\"`,\n );\n const turbopackBundle = self[`TURBOPACK_${bundleKey}`];\n logDebug(\n 'ChunkLoader',\n `TURBOPACK_${bundleKey} type: ${typeof turbopackBundle}, isArray: ${Array.isArray(turbopackBundle)}, keys: ${\n turbopackBundle\n ? Object.keys(turbopackBundle as object)\n .slice(0, 10)\n .join(', ')\n : 'none'\n }`,\n );\n if (turbopackBundle && typeof turbopackBundle === 'object') {\n logDebug(\n 'ChunkLoader',\n `TURBOPACK_${bundleKey} length/size: ${Array.isArray(turbopackBundle) ? turbopackBundle.length : Object.keys(turbopackBundle as object).length}`,\n );\n }\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 const chunkLists = self[`TURBOPACK_${bundleKey}_CHUNK_LISTS`] as\n | { chunks: string[] }[]\n | undefined;\n logDebug(\n 'ChunkLoader',\n `Processing chunk lists for bundle \"${bundle}\": ${chunkLists?.length ?? 0} lists`,\n );\n const loadChunkLists = [] as (Promise<unknown> | undefined)[];\n while (chunkLists?.length) {\n const { chunks } = chunkLists.shift() ?? { chunks: [] };\n if (chunks.length > 0) {\n logDebug(\n 'ChunkLoader',\n `Loading ${chunks.length} additional chunks for bundle \"${bundle}\": [${chunks.join(', ')}]`,\n );\n chunks.forEach((id: string) => {\n const chunkLoadResult = self.__webpack_chunk_load__?.(\n `[${bundle}] ${url.slice(0, url.indexOf('/_next'))}/_next/${id}`,\n );\n if (chunkLoadResult) {\n loadChunkLists.push(chunkLoadResult);\n }\n });\n }\n }\n if (loadChunkLists.length > 0) {\n logDebug(\n 'ChunkLoader',\n `Waiting for ${loadChunkLists.length} additional chunks to load`,\n );\n await Promise.all(loadChunkLists);\n }\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/runtime/turbopack/chunk-loader.ts"],"sourcesContent":["import { RUNTIME_WEBPACK } from '#internal/runtime/constants';\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 * - setupWebpackRuntime (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\n const { bundle, path, prefix } = parseRemoteId(chunkId);\n\n // Skip webpack runtime chunks\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 // Global dedup cache keyed by absolute URL\n if (!self.__remote_components_turbopack_chunk_loader_promise__) {\n self.__remote_components_turbopack_chunk_loader_promise__ = {};\n }\n if (self.__remote_components_turbopack_chunk_loader_promise__[url]) {\n return self.__remote_components_turbopack_chunk_loader_promise__[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 self.__remote_components_turbopack_chunk_loader_promise__[url] = new Promise(\n (resolve, reject) => {\n fetch(resolvedUrl)\n .then((res) => res.text())\n .then((code) => {\n const hasTurbopack = TURBOPACK_GLOBAL_RE.test(code);\n if (hasTurbopack) {\n return handleTurbopackChunk(code, scope, url);\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\n return self.__remote_components_turbopack_chunk_loader_promise__[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 */\nasync function handleTurbopackChunk(\n code: string,\n scope: RemoteScope,\n url: string,\n): Promise<void> {\n // skip this chunk as it is not needed for remote components\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 self = globalThis as GlobalScope;\n const { globalKey } = scope;\n\n // replace global variables with scope-specific ones to prevent collisions\n // between multiple remote component bundles\n const transformedCode = code\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(\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 with push interceptor\n if (!self[`TURBOPACK_${globalKey}`]) {\n const chunkData: unknown[][] = [];\n const turbopackObject = {\n push: (item: unknown) => {\n if (Array.isArray(item)) {\n chunkData.push(item);\n } else {\n chunkData.push([item]);\n }\n return chunkData.length;\n },\n __chunks__: chunkData,\n };\n self[`TURBOPACK_${globalKey}`] = turbopackObject as unknown as Record<\n string,\n unknown\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 const chunkLists = self[`TURBOPACK_${globalKey}_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"],"mappings":"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","names":[]}
|
|
@@ -18,15 +18,35 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var module_exports = {};
|
|
20
20
|
__export(module_exports, {
|
|
21
|
-
handleTurbopackModule: () => handleTurbopackModule
|
|
21
|
+
handleTurbopackModule: () => handleTurbopackModule,
|
|
22
|
+
requireModule: () => requireModule
|
|
22
23
|
});
|
|
23
24
|
module.exports = __toCommonJS(module_exports);
|
|
24
|
-
var import_constants = require("#internal/runtime/constants");
|
|
25
25
|
var import_logger = require("#internal/utils/logger");
|
|
26
|
-
|
|
26
|
+
var import_chunk_loader = require("./chunk-loader");
|
|
27
|
+
var import_remote_scope = require("./remote-scope");
|
|
28
|
+
var import_shared_modules = require("./shared-modules");
|
|
29
|
+
function requireModule(scope, moduleId, fullId) {
|
|
30
|
+
const idStr = String(moduleId);
|
|
31
|
+
if (scope.moduleCache[idStr])
|
|
32
|
+
return scope.moduleCache[idStr];
|
|
33
|
+
const sharedModule = (0, import_shared_modules.getSharedModule)(scope, moduleId);
|
|
34
|
+
if (sharedModule) {
|
|
35
|
+
scope.moduleCache[idStr] = sharedModule;
|
|
36
|
+
return sharedModule;
|
|
37
|
+
}
|
|
38
|
+
return handleTurbopackModule(
|
|
39
|
+
scope,
|
|
40
|
+
idStr,
|
|
41
|
+
fullId ?? (0, import_remote_scope.formatRemoteId)(scope, idStr)
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
function handleTurbopackModule(scope, moduleId, id) {
|
|
27
45
|
const self = globalThis;
|
|
28
|
-
|
|
29
|
-
|
|
46
|
+
if (scope.moduleCache[moduleId]) {
|
|
47
|
+
return scope.moduleCache[moduleId];
|
|
48
|
+
}
|
|
49
|
+
const raw = self[`TURBOPACK_${scope.globalKey}`];
|
|
30
50
|
let modules;
|
|
31
51
|
if (raw && typeof raw === "object" && "__chunks__" in raw) {
|
|
32
52
|
modules = raw.__chunks__.flat();
|
|
@@ -35,48 +55,35 @@ function handleTurbopackModule(bundle, moduleId, id) {
|
|
|
35
55
|
} else {
|
|
36
56
|
modules = raw;
|
|
37
57
|
}
|
|
38
|
-
if (!self.__remote_components_turbopack_modules__) {
|
|
39
|
-
self.__remote_components_turbopack_modules__ = {};
|
|
40
|
-
}
|
|
41
|
-
if (!self.__remote_components_turbopack_modules__[bundle]) {
|
|
42
|
-
self.__remote_components_turbopack_modules__[bundle] = {};
|
|
43
|
-
}
|
|
44
|
-
if (self.__remote_components_turbopack_modules__[bundle][moduleId]) {
|
|
45
|
-
return self.__remote_components_turbopack_modules__[bundle][moduleId];
|
|
46
|
-
}
|
|
47
58
|
if (!modules) {
|
|
48
|
-
(0, import_logger.logError)(
|
|
59
|
+
(0, import_logger.logError)(
|
|
60
|
+
"TurbopackModule",
|
|
61
|
+
`TURBOPACK_${scope.globalKey} is undefined (scope: "${scope.scopedName}")`
|
|
62
|
+
);
|
|
49
63
|
}
|
|
50
64
|
const moduleInit = findModuleInit(modules, moduleId);
|
|
51
65
|
const exports = {};
|
|
52
66
|
const moduleExports = { exports };
|
|
53
67
|
if (typeof moduleInit !== "function") {
|
|
54
68
|
throw new Error(
|
|
55
|
-
`Module ${id} not found in bundle ${
|
|
69
|
+
`Module ${id} not found in bundle ${scope.name} with id ${moduleId}`
|
|
56
70
|
);
|
|
57
71
|
}
|
|
58
|
-
|
|
59
|
-
if (!self.__remote_components_turbopack_global__) {
|
|
60
|
-
self.__remote_components_turbopack_global__ = {};
|
|
61
|
-
}
|
|
62
|
-
if (!self.__remote_components_turbopack_global__[bundle]) {
|
|
63
|
-
self.__remote_components_turbopack_global__[bundle] = {};
|
|
64
|
-
}
|
|
72
|
+
scope.moduleCache[moduleId] = moduleExports.exports;
|
|
65
73
|
moduleInit(
|
|
66
74
|
createTurbopackContext(
|
|
67
|
-
|
|
75
|
+
scope,
|
|
68
76
|
exports,
|
|
69
77
|
moduleExports,
|
|
70
78
|
modules,
|
|
71
79
|
moduleInit,
|
|
72
|
-
id
|
|
73
|
-
self
|
|
80
|
+
id
|
|
74
81
|
),
|
|
75
82
|
moduleExports,
|
|
76
83
|
exports
|
|
77
84
|
);
|
|
78
|
-
if (
|
|
79
|
-
|
|
85
|
+
if (scope.moduleCache[moduleId] !== moduleExports.exports) {
|
|
86
|
+
scope.moduleCache[moduleId] = moduleExports.exports;
|
|
80
87
|
}
|
|
81
88
|
return moduleExports.exports;
|
|
82
89
|
}
|
|
@@ -101,7 +108,8 @@ function findModuleInit(modules, moduleId) {
|
|
|
101
108
|
(e) => Boolean(e && typeof e === "object" && moduleId in e)
|
|
102
109
|
)?.[moduleId];
|
|
103
110
|
}
|
|
104
|
-
function createTurbopackContext(
|
|
111
|
+
function createTurbopackContext(scope, exports, moduleExports, modules, moduleInit, id) {
|
|
112
|
+
const scopedRequire = (moduleId) => requireModule(scope, moduleId, (0, import_remote_scope.formatRemoteId)(scope, String(moduleId)));
|
|
105
113
|
return {
|
|
106
114
|
// HMR not implemented for Remote Components
|
|
107
115
|
k: {
|
|
@@ -117,16 +125,10 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
|
|
|
117
125
|
s(bindings, esmId) {
|
|
118
126
|
let mod = exports;
|
|
119
127
|
if (typeof esmId === "string" || typeof esmId === "number") {
|
|
120
|
-
if (!
|
|
121
|
-
|
|
128
|
+
if (!scope.moduleCache[esmId]) {
|
|
129
|
+
scope.moduleCache[esmId] = {};
|
|
122
130
|
}
|
|
123
|
-
|
|
124
|
-
self.__remote_components_turbopack_modules__[bundle] = {};
|
|
125
|
-
}
|
|
126
|
-
if (!self.__remote_components_turbopack_modules__[bundle][esmId]) {
|
|
127
|
-
self.__remote_components_turbopack_modules__[bundle][esmId] = {};
|
|
128
|
-
}
|
|
129
|
-
mod = self.__remote_components_turbopack_modules__[bundle][esmId];
|
|
131
|
+
mod = scope.moduleCache[esmId];
|
|
130
132
|
}
|
|
131
133
|
Object.defineProperty(mod, "__esModule", { value: true });
|
|
132
134
|
if (Array.isArray(bindings)) {
|
|
@@ -159,7 +161,7 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
|
|
|
159
161
|
}
|
|
160
162
|
}
|
|
161
163
|
},
|
|
162
|
-
// import
|
|
164
|
+
// import — resolves directly via scope, no global dispatch
|
|
163
165
|
i(importId) {
|
|
164
166
|
let mod;
|
|
165
167
|
if (typeof importId === "string") {
|
|
@@ -170,7 +172,7 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
|
|
|
170
172
|
/\s+<export(?<specifier>.*)>$/,
|
|
171
173
|
""
|
|
172
174
|
);
|
|
173
|
-
mod =
|
|
175
|
+
mod = scopedRequire(normalizedId);
|
|
174
176
|
if (mod && exportSource && exportName && (exportSource === "*" || typeof mod[exportSource] !== "undefined") && typeof mod[exportName] === "undefined") {
|
|
175
177
|
if (exportSource === "*") {
|
|
176
178
|
mod[exportName] = mod;
|
|
@@ -179,7 +181,7 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
|
|
|
179
181
|
}
|
|
180
182
|
}
|
|
181
183
|
} else {
|
|
182
|
-
mod =
|
|
184
|
+
mod = scopedRequire(importId);
|
|
183
185
|
}
|
|
184
186
|
if (typeof mod !== "object" || mod === null) {
|
|
185
187
|
mod = { default: mod };
|
|
@@ -191,16 +193,14 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
|
|
|
191
193
|
}
|
|
192
194
|
return mod;
|
|
193
195
|
},
|
|
194
|
-
// require
|
|
196
|
+
// require — resolves directly via scope
|
|
195
197
|
r(requireId) {
|
|
196
|
-
return
|
|
198
|
+
return scopedRequire(requireId);
|
|
197
199
|
},
|
|
198
200
|
// value exports
|
|
199
201
|
v(value) {
|
|
200
202
|
if (typeof value === "function") {
|
|
201
|
-
exports.default = value((vid) =>
|
|
202
|
-
return self.__webpack_require__?.(`[${bundle}] ${vid}`);
|
|
203
|
-
});
|
|
203
|
+
exports.default = value((vid) => scopedRequire(vid));
|
|
204
204
|
} else {
|
|
205
205
|
moduleExports.exports = value;
|
|
206
206
|
}
|
|
@@ -215,17 +215,15 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
|
|
|
215
215
|
);
|
|
216
216
|
exports.default = result;
|
|
217
217
|
},
|
|
218
|
-
// async module loader
|
|
218
|
+
// async module loader — resolves directly via scope
|
|
219
219
|
async A(Aid) {
|
|
220
|
-
const mod =
|
|
221
|
-
return mod.default(
|
|
222
|
-
(parentId) => self.__webpack_require__?.(`[${bundle}] ${parentId}`)
|
|
223
|
-
);
|
|
220
|
+
const mod = scopedRequire(Aid);
|
|
221
|
+
return mod.default((parentId) => scopedRequire(parentId));
|
|
224
222
|
},
|
|
225
223
|
// dynamic import tracking — no-op for remote components
|
|
226
224
|
j() {
|
|
227
225
|
},
|
|
228
|
-
// chunk loader
|
|
226
|
+
// chunk loader — loads directly via scope, no global dispatch
|
|
229
227
|
l(url) {
|
|
230
228
|
const flatModules = Array.isArray(modules) ? modules : [];
|
|
231
229
|
const moduleInitIndex = flatModules.indexOf(moduleInit);
|
|
@@ -236,22 +234,23 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
|
|
|
236
234
|
const scriptSrc = script.getAttribute("data-turbopack-src") || "";
|
|
237
235
|
const nextIndex = scriptSrc.indexOf("/_next");
|
|
238
236
|
const baseUrl = nextIndex !== -1 ? scriptSrc.slice(0, nextIndex) : "";
|
|
239
|
-
const
|
|
240
|
-
return
|
|
237
|
+
const chunkUrl = `${baseUrl}/_next/${url}`;
|
|
238
|
+
return (0, import_chunk_loader.loadChunkWithScope)(scope, (0, import_remote_scope.formatRemoteId)(scope, chunkUrl));
|
|
241
239
|
}
|
|
242
240
|
}
|
|
243
241
|
throw new Error(
|
|
244
242
|
`Failed to load Turbopack chunk "${url}" for module "${id}". Check the URL is correct.`
|
|
245
243
|
);
|
|
246
244
|
},
|
|
247
|
-
//
|
|
248
|
-
g:
|
|
245
|
+
// globalThis substitute shared across all modules in this scope
|
|
246
|
+
g: scope.moduleGlobal,
|
|
249
247
|
m: moduleExports,
|
|
250
248
|
e: exports
|
|
251
249
|
};
|
|
252
250
|
}
|
|
253
251
|
// Annotate the CommonJS export names for ESM import in node:
|
|
254
252
|
0 && (module.exports = {
|
|
255
|
-
handleTurbopackModule
|
|
253
|
+
handleTurbopackModule,
|
|
254
|
+
requireModule
|
|
256
255
|
});
|
|
257
256
|
//# sourceMappingURL=module.cjs.map
|