remote-components 0.3.1 → 0.3.3
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 +36 -25
- package/dist/config/nextjs.cjs.map +1 -1
- package/dist/config/nextjs.js +30 -19
- package/dist/config/nextjs.js.map +1 -1
- package/dist/host/defaults/app.cjs +2 -5
- package/dist/host/defaults/app.cjs.map +1 -1
- package/dist/host/defaults/app.d.ts +1 -3
- package/dist/host/defaults/app.js +1 -4
- package/dist/host/defaults/app.js.map +1 -1
- package/dist/host/defaults/pages.cjs +2 -5
- package/dist/host/defaults/pages.cjs.map +1 -1
- package/dist/host/defaults/pages.d.ts +1 -3
- package/dist/host/defaults/pages.js +1 -4
- package/dist/host/defaults/pages.js.map +1 -1
- package/dist/host/defaults/shared.cjs +32 -0
- package/dist/host/defaults/shared.cjs.map +1 -0
- package/dist/host/defaults/shared.d.ts +3 -0
- package/dist/host/defaults/shared.js +8 -0
- package/dist/host/defaults/shared.js.map +1 -0
- package/dist/host/html.cjs +390 -357
- package/dist/host/html.cjs.map +1 -1
- package/dist/host/html.js +390 -357
- package/dist/host/html.js.map +1 -1
- package/dist/host/nextjs/app/client-only.cjs +477 -453
- package/dist/host/nextjs/app/client-only.cjs.map +1 -1
- package/dist/host/nextjs/app/client-only.js +485 -461
- package/dist/host/nextjs/app/client-only.js.map +1 -1
- package/dist/host/react.cjs +382 -367
- package/dist/host/react.cjs.map +1 -1
- package/dist/host/react.js +382 -367
- package/dist/host/react.js.map +1 -1
- package/dist/internal/host/nextjs/app-client.cjs +2 -19
- package/dist/internal/host/nextjs/app-client.cjs.map +1 -1
- package/dist/internal/host/nextjs/app-client.js +1 -8
- package/dist/internal/host/nextjs/app-client.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/nextjs/shared-import.cjs +46 -0
- package/dist/internal/host/nextjs/shared-import.cjs.map +1 -0
- package/dist/internal/host/nextjs/shared-import.d.ts +3 -0
- package/dist/internal/host/nextjs/shared-import.js +12 -0
- package/dist/internal/host/nextjs/shared-import.js.map +1 -0
- package/dist/internal/host/server/fetch-remote-component.cjs +20 -1
- package/dist/internal/host/server/fetch-remote-component.cjs.map +1 -1
- package/dist/internal/host/server/fetch-remote-component.js +20 -1
- 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/loaders/script-loader.cjs +7 -0
- package/dist/internal/runtime/loaders/script-loader.cjs.map +1 -1
- package/dist/internal/runtime/loaders/script-loader.js +7 -0
- package/dist/internal/runtime/loaders/script-loader.js.map +1 -1
- package/dist/internal/runtime/turbopack/chunk-loader.cjs +76 -126
- 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 +53 -65
- 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 +51 -64
- 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 +64 -56
- package/dist/internal/runtime/turbopack/shared-modules.cjs.map +1 -1
- package/dist/internal/runtime/turbopack/shared-modules.d.ts +13 -4
- package/dist/internal/runtime/turbopack/shared-modules.js +64 -57
- package/dist/internal/runtime/turbopack/shared-modules.js.map +1 -1
- package/dist/internal/runtime/turbopack/webpack-runtime.cjs +39 -29
- 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 +42 -32
- 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/project-id-env.cjs +31 -0
- package/dist/internal/utils/project-id-env.cjs.map +1 -0
- package/dist/internal/utils/project-id-env.d.ts +7 -0
- package/dist/internal/utils/project-id-env.js +7 -0
- package/dist/internal/utils/project-id-env.js.map +1 -0
- package/dist/internal/utils/project-id.cjs +46 -0
- package/dist/internal/utils/project-id.cjs.map +1 -0
- package/dist/internal/utils/project-id.d.ts +8 -0
- package/dist/internal/utils/project-id.js +22 -0
- package/dist/internal/utils/project-id.js.map +1 -0
- 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/defaults/app.cjs +2 -5
- package/dist/remote/defaults/app.cjs.map +1 -1
- package/dist/remote/defaults/app.d.ts +1 -3
- package/dist/remote/defaults/app.js +1 -4
- package/dist/remote/defaults/app.js.map +1 -1
- package/dist/remote/defaults/pages.cjs +2 -5
- package/dist/remote/defaults/pages.cjs.map +1 -1
- package/dist/remote/defaults/pages.d.ts +1 -3
- package/dist/remote/defaults/pages.js +1 -4
- package/dist/remote/defaults/pages.js.map +1 -1
- package/dist/{internal/host/shared/resolved-data.cjs → remote/defaults/shared.cjs} +18 -3
- package/dist/remote/defaults/shared.cjs.map +1 -0
- package/dist/remote/defaults/shared.d.ts +3 -0
- package/dist/remote/defaults/shared.js +8 -0
- package/dist/remote/defaults/shared.js.map +1 -0
- 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/dist/remote/nextjs/pages.cjs +2 -1
- package/dist/remote/nextjs/pages.cjs.map +1 -1
- package/dist/remote/nextjs/pages.js +2 -1
- package/dist/remote/nextjs/pages.js.map +1 -1
- package/package.json +1 -1
- package/dist/internal/host/shared/resolved-data.cjs.map +0 -1
- package/dist/internal/host/shared/resolved-data.d.ts +0 -48
- package/dist/internal/host/shared/resolved-data.js +0 -1
- package/dist/internal/host/shared/resolved-data.js.map +0 -1
|
@@ -18,65 +18,61 @@ 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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
if (
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return self.__remote_components_turbopack_modules__[bundle][moduleId];
|
|
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
|
+
return sharedModule;
|
|
36
|
+
return handleTurbopackModule(
|
|
37
|
+
scope,
|
|
38
|
+
idStr,
|
|
39
|
+
fullId ?? (0, import_remote_scope.formatRemoteId)(scope, idStr)
|
|
40
|
+
);
|
|
41
|
+
}
|
|
42
|
+
function handleTurbopackModule(scope, moduleId, id) {
|
|
43
|
+
if (scope.moduleCache[moduleId]) {
|
|
44
|
+
return scope.moduleCache[moduleId];
|
|
46
45
|
}
|
|
46
|
+
const modules = (0, import_shared_modules.getTurbopackModules)(scope);
|
|
47
47
|
if (!modules) {
|
|
48
|
-
(0, import_logger.logError)(
|
|
48
|
+
(0, import_logger.logError)(
|
|
49
|
+
"TurbopackModule",
|
|
50
|
+
`TURBOPACK_${scope.globalKey} is undefined (scope: "${scope.scopedName}")`
|
|
51
|
+
);
|
|
49
52
|
}
|
|
50
53
|
const moduleInit = findModuleInit(modules, moduleId);
|
|
51
54
|
const exports = {};
|
|
52
55
|
const moduleExports = { exports };
|
|
53
56
|
if (typeof moduleInit !== "function") {
|
|
54
57
|
throw new Error(
|
|
55
|
-
`Module ${id} not found in bundle ${
|
|
58
|
+
`Module ${id} not found in bundle ${scope.name} with id ${moduleId}`
|
|
56
59
|
);
|
|
57
60
|
}
|
|
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
|
-
}
|
|
61
|
+
scope.moduleCache[moduleId] = moduleExports.exports;
|
|
65
62
|
moduleInit(
|
|
66
63
|
createTurbopackContext(
|
|
67
|
-
|
|
64
|
+
scope,
|
|
68
65
|
exports,
|
|
69
66
|
moduleExports,
|
|
70
67
|
modules,
|
|
71
68
|
moduleInit,
|
|
72
|
-
id
|
|
73
|
-
self
|
|
69
|
+
id
|
|
74
70
|
),
|
|
75
71
|
moduleExports,
|
|
76
72
|
exports
|
|
77
73
|
);
|
|
78
|
-
if (
|
|
79
|
-
|
|
74
|
+
if (scope.moduleCache[moduleId] !== moduleExports.exports) {
|
|
75
|
+
scope.moduleCache[moduleId] = moduleExports.exports;
|
|
80
76
|
}
|
|
81
77
|
return moduleExports.exports;
|
|
82
78
|
}
|
|
@@ -101,7 +97,8 @@ function findModuleInit(modules, moduleId) {
|
|
|
101
97
|
(e) => Boolean(e && typeof e === "object" && moduleId in e)
|
|
102
98
|
)?.[moduleId];
|
|
103
99
|
}
|
|
104
|
-
function createTurbopackContext(
|
|
100
|
+
function createTurbopackContext(scope, exports, moduleExports, modules, moduleInit, id) {
|
|
101
|
+
const scopedRequire = (moduleId) => requireModule(scope, moduleId, (0, import_remote_scope.formatRemoteId)(scope, String(moduleId)));
|
|
105
102
|
return {
|
|
106
103
|
// HMR not implemented for Remote Components
|
|
107
104
|
k: {
|
|
@@ -117,16 +114,10 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
|
|
|
117
114
|
s(bindings, esmId) {
|
|
118
115
|
let mod = exports;
|
|
119
116
|
if (typeof esmId === "string" || typeof esmId === "number") {
|
|
120
|
-
if (!
|
|
121
|
-
|
|
122
|
-
}
|
|
123
|
-
if (!self.__remote_components_turbopack_modules__[bundle]) {
|
|
124
|
-
self.__remote_components_turbopack_modules__[bundle] = {};
|
|
117
|
+
if (!scope.moduleCache[esmId]) {
|
|
118
|
+
scope.moduleCache[esmId] = {};
|
|
125
119
|
}
|
|
126
|
-
|
|
127
|
-
self.__remote_components_turbopack_modules__[bundle][esmId] = {};
|
|
128
|
-
}
|
|
129
|
-
mod = self.__remote_components_turbopack_modules__[bundle][esmId];
|
|
120
|
+
mod = scope.moduleCache[esmId];
|
|
130
121
|
}
|
|
131
122
|
Object.defineProperty(mod, "__esModule", { value: true });
|
|
132
123
|
if (Array.isArray(bindings)) {
|
|
@@ -159,7 +150,7 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
|
|
|
159
150
|
}
|
|
160
151
|
}
|
|
161
152
|
},
|
|
162
|
-
// import
|
|
153
|
+
// import — resolves directly via scope, no global dispatch
|
|
163
154
|
i(importId) {
|
|
164
155
|
let mod;
|
|
165
156
|
if (typeof importId === "string") {
|
|
@@ -170,7 +161,7 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
|
|
|
170
161
|
/\s+<export(?<specifier>.*)>$/,
|
|
171
162
|
""
|
|
172
163
|
);
|
|
173
|
-
mod =
|
|
164
|
+
mod = scopedRequire(normalizedId);
|
|
174
165
|
if (mod && exportSource && exportName && (exportSource === "*" || typeof mod[exportSource] !== "undefined") && typeof mod[exportName] === "undefined") {
|
|
175
166
|
if (exportSource === "*") {
|
|
176
167
|
mod[exportName] = mod;
|
|
@@ -179,7 +170,7 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
|
|
|
179
170
|
}
|
|
180
171
|
}
|
|
181
172
|
} else {
|
|
182
|
-
mod =
|
|
173
|
+
mod = scopedRequire(importId);
|
|
183
174
|
}
|
|
184
175
|
if (typeof mod !== "object" || mod === null) {
|
|
185
176
|
mod = { default: mod };
|
|
@@ -191,16 +182,14 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
|
|
|
191
182
|
}
|
|
192
183
|
return mod;
|
|
193
184
|
},
|
|
194
|
-
// require
|
|
185
|
+
// require — resolves directly via scope
|
|
195
186
|
r(requireId) {
|
|
196
|
-
return
|
|
187
|
+
return scopedRequire(requireId);
|
|
197
188
|
},
|
|
198
189
|
// value exports
|
|
199
190
|
v(value) {
|
|
200
191
|
if (typeof value === "function") {
|
|
201
|
-
exports.default = value((vid) =>
|
|
202
|
-
return self.__webpack_require__?.(`[${bundle}] ${vid}`);
|
|
203
|
-
});
|
|
192
|
+
exports.default = value((vid) => scopedRequire(vid));
|
|
204
193
|
} else {
|
|
205
194
|
moduleExports.exports = value;
|
|
206
195
|
}
|
|
@@ -215,17 +204,15 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
|
|
|
215
204
|
);
|
|
216
205
|
exports.default = result;
|
|
217
206
|
},
|
|
218
|
-
// async module loader
|
|
207
|
+
// async module loader — resolves directly via scope
|
|
219
208
|
async A(Aid) {
|
|
220
|
-
const mod =
|
|
221
|
-
return mod.default(
|
|
222
|
-
(parentId) => self.__webpack_require__?.(`[${bundle}] ${parentId}`)
|
|
223
|
-
);
|
|
209
|
+
const mod = scopedRequire(Aid);
|
|
210
|
+
return mod.default((parentId) => scopedRequire(parentId));
|
|
224
211
|
},
|
|
225
212
|
// dynamic import tracking — no-op for remote components
|
|
226
213
|
j() {
|
|
227
214
|
},
|
|
228
|
-
// chunk loader
|
|
215
|
+
// chunk loader — loads directly via scope, no global dispatch
|
|
229
216
|
l(url) {
|
|
230
217
|
const flatModules = Array.isArray(modules) ? modules : [];
|
|
231
218
|
const moduleInitIndex = flatModules.indexOf(moduleInit);
|
|
@@ -236,22 +223,23 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
|
|
|
236
223
|
const scriptSrc = script.getAttribute("data-turbopack-src") || "";
|
|
237
224
|
const nextIndex = scriptSrc.indexOf("/_next");
|
|
238
225
|
const baseUrl = nextIndex !== -1 ? scriptSrc.slice(0, nextIndex) : "";
|
|
239
|
-
const
|
|
240
|
-
return
|
|
226
|
+
const chunkUrl = `${baseUrl}/_next/${url}`;
|
|
227
|
+
return (0, import_chunk_loader.loadChunkWithScope)(scope, (0, import_remote_scope.formatRemoteId)(scope, chunkUrl));
|
|
241
228
|
}
|
|
242
229
|
}
|
|
243
230
|
throw new Error(
|
|
244
231
|
`Failed to load Turbopack chunk "${url}" for module "${id}". Check the URL is correct.`
|
|
245
232
|
);
|
|
246
233
|
},
|
|
247
|
-
//
|
|
248
|
-
g:
|
|
234
|
+
// globalThis substitute shared across all modules in this scope
|
|
235
|
+
g: scope.moduleGlobal,
|
|
249
236
|
m: moduleExports,
|
|
250
237
|
e: exports
|
|
251
238
|
};
|
|
252
239
|
}
|
|
253
240
|
// Annotate the CommonJS export names for ESM import in node:
|
|
254
241
|
0 && (module.exports = {
|
|
255
|
-
handleTurbopackModule
|
|
242
|
+
handleTurbopackModule,
|
|
243
|
+
requireModule
|
|
256
244
|
});
|
|
257
245
|
//# sourceMappingURL=module.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/runtime/turbopack/module.ts"],"sourcesContent":["import { getBundleKey } from '#internal/runtime/constants';\nimport type { GlobalScope } from '#internal/runtime/types';\nimport { logError } from '#internal/utils/logger';\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 * Handles Turbopack module resolution and execution.\n * This function finds a module in the Turbopack bundle, executes its initializer,\n * and returns the module exports.\n *\n * The Turbopack bundle stores modules as arrays where each entry is either:\n * - A module ID (string or number)\n * - A module initializer function\n *\n * This function provides a custom runtime context that implements the Turbopack\n * module system API, enabling remote modules to resolve their dependencies.\n */\nexport function handleTurbopackModule(\n bundle: string,\n moduleId: string,\n id: string,\n): unknown {\n const self = globalThis as GlobalScope;\n const bundleKey = getBundleKey(bundle);\n const raw = self[`TURBOPACK_${bundleKey}`];\n\n // Normalize the bundle global to a flat entry list. The chunk-loader push\n // interceptor stores modules as { __chunks__: [[Element, id, fn, ...], ...] }.\n let modules: BundleModules;\n if (raw && typeof raw === 'object' && '__chunks__' in raw) {\n modules = (\n raw as { __chunks__: unknown[][] }\n ).__chunks__.flat() as unknown as BundleModules;\n } else if (Array.isArray(raw)) {\n modules = (raw as unknown[]).flat() as unknown as BundleModules;\n } else {\n modules = raw as BundleModules;\n }\n\n // prepare module cache to handle circular dependencies\n if (!self.__remote_components_turbopack_modules__) {\n self.__remote_components_turbopack_modules__ = {};\n }\n if (!self.__remote_components_turbopack_modules__[bundle]) {\n self.__remote_components_turbopack_modules__[bundle] = {};\n }\n // return cached module if already loaded (CRITICAL: check this FIRST)\n if (self.__remote_components_turbopack_modules__[bundle][moduleId]) {\n return self.__remote_components_turbopack_modules__[bundle][moduleId];\n }\n\n // Log only if bundle is completely missing (critical error)\n if (!modules) {\n logError('TurbopackModule', `TURBOPACK_${bundleKey} is undefined`);\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 ${bundle} 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 self.__remote_components_turbopack_modules__[bundle][moduleId] =\n moduleExports.exports;\n\n // prepare global object for the bundle\n if (!self.__remote_components_turbopack_global__) {\n self.__remote_components_turbopack_global__ = {};\n }\n if (!self.__remote_components_turbopack_global__[bundle]) {\n self.__remote_components_turbopack_global__[bundle] = {};\n }\n\n // execute the module initializer with our custom Turbopack context\n moduleInit(\n createTurbopackContext(\n bundle,\n exports,\n moduleExports,\n modules,\n moduleInit,\n id,\n self,\n ),\n moduleExports,\n exports,\n );\n\n // update the cache with the final exports (may have changed during execution)\n if (\n self.__remote_components_turbopack_modules__[bundle][moduleId] !==\n moduleExports.exports\n ) {\n self.__remote_components_turbopack_modules__[bundle][moduleId] =\n 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\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 */\nfunction createTurbopackContext(\n bundle: string,\n exports: Record<string, unknown>,\n moduleExports: { exports: Record<string, unknown> },\n modules: BundleModules,\n moduleInit: TurbopackModuleInit,\n id: string,\n self: GlobalScope,\n): TurbopackContext {\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 (!self.__remote_components_turbopack_modules__) {\n self.__remote_components_turbopack_modules__ = {};\n }\n if (!self.__remote_components_turbopack_modules__[bundle]) {\n self.__remote_components_turbopack_modules__[bundle] = {};\n }\n if (!self.__remote_components_turbopack_modules__[bundle][esmId]) {\n self.__remote_components_turbopack_modules__[bundle][esmId] =\n {} as Record<string, unknown>;\n }\n mod = self.__remote_components_turbopack_modules__[bundle][\n esmId\n ] 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\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 = self.__webpack_require__?.(`[${bundle}] ${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 = self.__webpack_require__?.(`[${bundle}] ${importId}`) as\n | Record<string, unknown>\n | 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\n r(requireId: string) {\n return self.__webpack_require__?.(`[${bundle}] ${requireId}`);\n },\n\n // value exports\n v(value: unknown) {\n if (typeof value === 'function') {\n exports.default = value((vid: string | number) => {\n return self.__webpack_require__?.(`[${bundle}] ${vid}`);\n });\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\n async A(Aid: string) {\n const mod = self.__webpack_require__?.(`[${bundle}] ${Aid}`) as {\n default: (\n parentImport: (parentId: string) => unknown,\n ) => Promise<unknown>;\n };\n return mod.default((parentId: string) =>\n self.__webpack_require__?.(`[${bundle}] ${parentId}`),\n );\n },\n\n // dynamic import tracking — no-op for remote components\n j() {\n // omit\n },\n\n // chunk loader\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 bundleUrl = `[${bundle}] ${baseUrl}/_next/${url}`;\n return self.__webpack_chunk_load__?.(bundleUrl, bundle);\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 // global object for this bundle\n g: self.__remote_components_turbopack_global__?.[bundle],\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 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,3 +1,7 @@
|
|
|
1
|
+
import { RemoteScope } from './remote-scope.js';
|
|
2
|
+
import '../url/resolve-client-url.js';
|
|
3
|
+
import '../constants.js';
|
|
4
|
+
|
|
1
5
|
/**
|
|
2
6
|
* Function signature for Turbopack module initializers.
|
|
3
7
|
* These functions are generated by Turbopack and initialize module exports.
|
|
@@ -44,18 +48,17 @@ interface TurbopackContext {
|
|
|
44
48
|
/** Exports object */
|
|
45
49
|
e: Record<string, unknown>;
|
|
46
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Resolves a module within a scope: checks shared modules first, then
|
|
53
|
+
* falls back to Turbopack module resolution. This is the scope-local
|
|
54
|
+
* equivalent of the global __webpack_require__ dispatcher.
|
|
55
|
+
*/
|
|
56
|
+
declare function requireModule(scope: RemoteScope, moduleId: string | number, fullId?: string): unknown;
|
|
47
57
|
/**
|
|
48
58
|
* Handles Turbopack module resolution and execution.
|
|
49
|
-
*
|
|
50
|
-
* and returns the module exports.
|
|
51
|
-
*
|
|
52
|
-
* The Turbopack bundle stores modules as arrays where each entry is either:
|
|
53
|
-
* - A module ID (string or number)
|
|
54
|
-
* - A module initializer function
|
|
55
|
-
*
|
|
56
|
-
* This function provides a custom runtime context that implements the Turbopack
|
|
57
|
-
* module system API, enabling remote modules to resolve their dependencies.
|
|
59
|
+
* Finds a module in the Turbopack bundle, executes its initializer with a
|
|
60
|
+
* custom runtime context, and returns the module exports.
|
|
58
61
|
*/
|
|
59
|
-
declare function handleTurbopackModule(
|
|
62
|
+
declare function handleTurbopackModule(scope: RemoteScope, moduleId: string, id: string): unknown;
|
|
60
63
|
|
|
61
|
-
export { TurbopackModuleInit, handleTurbopackModule };
|
|
64
|
+
export { TurbopackModuleInit, handleTurbopackModule, requireModule };
|
|
@@ -1,59 +1,54 @@
|
|
|
1
|
-
import { getBundleKey } from "#internal/runtime/constants";
|
|
2
1
|
import { logError } from "#internal/utils/logger";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
if (
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return self.__remote_components_turbopack_modules__[bundle][moduleId];
|
|
2
|
+
import { loadChunkWithScope } from "./chunk-loader";
|
|
3
|
+
import { formatRemoteId } from "./remote-scope";
|
|
4
|
+
import { getSharedModule, getTurbopackModules } from "./shared-modules";
|
|
5
|
+
function requireModule(scope, moduleId, fullId) {
|
|
6
|
+
const idStr = String(moduleId);
|
|
7
|
+
if (scope.moduleCache[idStr])
|
|
8
|
+
return scope.moduleCache[idStr];
|
|
9
|
+
const sharedModule = getSharedModule(scope, moduleId);
|
|
10
|
+
if (sharedModule)
|
|
11
|
+
return sharedModule;
|
|
12
|
+
return handleTurbopackModule(
|
|
13
|
+
scope,
|
|
14
|
+
idStr,
|
|
15
|
+
fullId ?? formatRemoteId(scope, idStr)
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
function handleTurbopackModule(scope, moduleId, id) {
|
|
19
|
+
if (scope.moduleCache[moduleId]) {
|
|
20
|
+
return scope.moduleCache[moduleId];
|
|
23
21
|
}
|
|
22
|
+
const modules = getTurbopackModules(scope);
|
|
24
23
|
if (!modules) {
|
|
25
|
-
logError(
|
|
24
|
+
logError(
|
|
25
|
+
"TurbopackModule",
|
|
26
|
+
`TURBOPACK_${scope.globalKey} is undefined (scope: "${scope.scopedName}")`
|
|
27
|
+
);
|
|
26
28
|
}
|
|
27
29
|
const moduleInit = findModuleInit(modules, moduleId);
|
|
28
30
|
const exports = {};
|
|
29
31
|
const moduleExports = { exports };
|
|
30
32
|
if (typeof moduleInit !== "function") {
|
|
31
33
|
throw new Error(
|
|
32
|
-
`Module ${id} not found in bundle ${
|
|
34
|
+
`Module ${id} not found in bundle ${scope.name} with id ${moduleId}`
|
|
33
35
|
);
|
|
34
36
|
}
|
|
35
|
-
|
|
36
|
-
if (!self.__remote_components_turbopack_global__) {
|
|
37
|
-
self.__remote_components_turbopack_global__ = {};
|
|
38
|
-
}
|
|
39
|
-
if (!self.__remote_components_turbopack_global__[bundle]) {
|
|
40
|
-
self.__remote_components_turbopack_global__[bundle] = {};
|
|
41
|
-
}
|
|
37
|
+
scope.moduleCache[moduleId] = moduleExports.exports;
|
|
42
38
|
moduleInit(
|
|
43
39
|
createTurbopackContext(
|
|
44
|
-
|
|
40
|
+
scope,
|
|
45
41
|
exports,
|
|
46
42
|
moduleExports,
|
|
47
43
|
modules,
|
|
48
44
|
moduleInit,
|
|
49
|
-
id
|
|
50
|
-
self
|
|
45
|
+
id
|
|
51
46
|
),
|
|
52
47
|
moduleExports,
|
|
53
48
|
exports
|
|
54
49
|
);
|
|
55
|
-
if (
|
|
56
|
-
|
|
50
|
+
if (scope.moduleCache[moduleId] !== moduleExports.exports) {
|
|
51
|
+
scope.moduleCache[moduleId] = moduleExports.exports;
|
|
57
52
|
}
|
|
58
53
|
return moduleExports.exports;
|
|
59
54
|
}
|
|
@@ -78,7 +73,8 @@ function findModuleInit(modules, moduleId) {
|
|
|
78
73
|
(e) => Boolean(e && typeof e === "object" && moduleId in e)
|
|
79
74
|
)?.[moduleId];
|
|
80
75
|
}
|
|
81
|
-
function createTurbopackContext(
|
|
76
|
+
function createTurbopackContext(scope, exports, moduleExports, modules, moduleInit, id) {
|
|
77
|
+
const scopedRequire = (moduleId) => requireModule(scope, moduleId, formatRemoteId(scope, String(moduleId)));
|
|
82
78
|
return {
|
|
83
79
|
// HMR not implemented for Remote Components
|
|
84
80
|
k: {
|
|
@@ -94,16 +90,10 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
|
|
|
94
90
|
s(bindings, esmId) {
|
|
95
91
|
let mod = exports;
|
|
96
92
|
if (typeof esmId === "string" || typeof esmId === "number") {
|
|
97
|
-
if (!
|
|
98
|
-
|
|
99
|
-
}
|
|
100
|
-
if (!self.__remote_components_turbopack_modules__[bundle]) {
|
|
101
|
-
self.__remote_components_turbopack_modules__[bundle] = {};
|
|
93
|
+
if (!scope.moduleCache[esmId]) {
|
|
94
|
+
scope.moduleCache[esmId] = {};
|
|
102
95
|
}
|
|
103
|
-
|
|
104
|
-
self.__remote_components_turbopack_modules__[bundle][esmId] = {};
|
|
105
|
-
}
|
|
106
|
-
mod = self.__remote_components_turbopack_modules__[bundle][esmId];
|
|
96
|
+
mod = scope.moduleCache[esmId];
|
|
107
97
|
}
|
|
108
98
|
Object.defineProperty(mod, "__esModule", { value: true });
|
|
109
99
|
if (Array.isArray(bindings)) {
|
|
@@ -136,7 +126,7 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
|
|
|
136
126
|
}
|
|
137
127
|
}
|
|
138
128
|
},
|
|
139
|
-
// import
|
|
129
|
+
// import — resolves directly via scope, no global dispatch
|
|
140
130
|
i(importId) {
|
|
141
131
|
let mod;
|
|
142
132
|
if (typeof importId === "string") {
|
|
@@ -147,7 +137,7 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
|
|
|
147
137
|
/\s+<export(?<specifier>.*)>$/,
|
|
148
138
|
""
|
|
149
139
|
);
|
|
150
|
-
mod =
|
|
140
|
+
mod = scopedRequire(normalizedId);
|
|
151
141
|
if (mod && exportSource && exportName && (exportSource === "*" || typeof mod[exportSource] !== "undefined") && typeof mod[exportName] === "undefined") {
|
|
152
142
|
if (exportSource === "*") {
|
|
153
143
|
mod[exportName] = mod;
|
|
@@ -156,7 +146,7 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
|
|
|
156
146
|
}
|
|
157
147
|
}
|
|
158
148
|
} else {
|
|
159
|
-
mod =
|
|
149
|
+
mod = scopedRequire(importId);
|
|
160
150
|
}
|
|
161
151
|
if (typeof mod !== "object" || mod === null) {
|
|
162
152
|
mod = { default: mod };
|
|
@@ -168,16 +158,14 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
|
|
|
168
158
|
}
|
|
169
159
|
return mod;
|
|
170
160
|
},
|
|
171
|
-
// require
|
|
161
|
+
// require — resolves directly via scope
|
|
172
162
|
r(requireId) {
|
|
173
|
-
return
|
|
163
|
+
return scopedRequire(requireId);
|
|
174
164
|
},
|
|
175
165
|
// value exports
|
|
176
166
|
v(value) {
|
|
177
167
|
if (typeof value === "function") {
|
|
178
|
-
exports.default = value((vid) =>
|
|
179
|
-
return self.__webpack_require__?.(`[${bundle}] ${vid}`);
|
|
180
|
-
});
|
|
168
|
+
exports.default = value((vid) => scopedRequire(vid));
|
|
181
169
|
} else {
|
|
182
170
|
moduleExports.exports = value;
|
|
183
171
|
}
|
|
@@ -192,17 +180,15 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
|
|
|
192
180
|
);
|
|
193
181
|
exports.default = result;
|
|
194
182
|
},
|
|
195
|
-
// async module loader
|
|
183
|
+
// async module loader — resolves directly via scope
|
|
196
184
|
async A(Aid) {
|
|
197
|
-
const mod =
|
|
198
|
-
return mod.default(
|
|
199
|
-
(parentId) => self.__webpack_require__?.(`[${bundle}] ${parentId}`)
|
|
200
|
-
);
|
|
185
|
+
const mod = scopedRequire(Aid);
|
|
186
|
+
return mod.default((parentId) => scopedRequire(parentId));
|
|
201
187
|
},
|
|
202
188
|
// dynamic import tracking — no-op for remote components
|
|
203
189
|
j() {
|
|
204
190
|
},
|
|
205
|
-
// chunk loader
|
|
191
|
+
// chunk loader — loads directly via scope, no global dispatch
|
|
206
192
|
l(url) {
|
|
207
193
|
const flatModules = Array.isArray(modules) ? modules : [];
|
|
208
194
|
const moduleInitIndex = flatModules.indexOf(moduleInit);
|
|
@@ -213,21 +199,22 @@ function createTurbopackContext(bundle, exports, moduleExports, modules, moduleI
|
|
|
213
199
|
const scriptSrc = script.getAttribute("data-turbopack-src") || "";
|
|
214
200
|
const nextIndex = scriptSrc.indexOf("/_next");
|
|
215
201
|
const baseUrl = nextIndex !== -1 ? scriptSrc.slice(0, nextIndex) : "";
|
|
216
|
-
const
|
|
217
|
-
return
|
|
202
|
+
const chunkUrl = `${baseUrl}/_next/${url}`;
|
|
203
|
+
return loadChunkWithScope(scope, formatRemoteId(scope, chunkUrl));
|
|
218
204
|
}
|
|
219
205
|
}
|
|
220
206
|
throw new Error(
|
|
221
207
|
`Failed to load Turbopack chunk "${url}" for module "${id}". Check the URL is correct.`
|
|
222
208
|
);
|
|
223
209
|
},
|
|
224
|
-
//
|
|
225
|
-
g:
|
|
210
|
+
// globalThis substitute shared across all modules in this scope
|
|
211
|
+
g: scope.moduleGlobal,
|
|
226
212
|
m: moduleExports,
|
|
227
213
|
e: exports
|
|
228
214
|
};
|
|
229
215
|
}
|
|
230
216
|
export {
|
|
231
|
-
handleTurbopackModule
|
|
217
|
+
handleTurbopackModule,
|
|
218
|
+
requireModule
|
|
232
219
|
};
|
|
233
220
|
//# sourceMappingURL=module.js.map
|