@modern-js/builder 3.0.1 → 3.0.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/cjs/createBuilder.js +3 -8
- package/dist/cjs/plugins/environmentDefaults.js +4 -4
- package/dist/cjs/plugins/rscConfig.js +159 -0
- package/dist/cjs/{rsc/rsc-css-loader.js → shared/rsc/rsc-server-entry-loader.js} +6 -7
- package/dist/esm/createBuilder.mjs +3 -8
- package/dist/esm/plugins/environmentDefaults.mjs +4 -4
- package/dist/esm/plugins/rscConfig.mjs +112 -0
- package/dist/esm/shared/rsc/rsc-server-entry-loader.mjs +7 -0
- package/dist/esm-node/createBuilder.mjs +3 -8
- package/dist/esm-node/plugins/environmentDefaults.mjs +4 -4
- package/dist/esm-node/plugins/rscConfig.mjs +117 -0
- package/dist/esm-node/shared/rsc/rsc-server-entry-loader.mjs +8 -0
- package/dist/types/plugins/rscConfig.d.ts +18 -0
- package/dist/types/shared/rsc/rsc-server-entry-loader.d.ts +5 -0
- package/package.json +7 -7
- package/dist/cjs/rsc/common.js +0 -157
- package/dist/cjs/rsc/plugins/rsbuild-rsc-plugin.js +0 -169
- package/dist/cjs/rsc/plugins/rspack-rsc-client-plugin.js +0 -187
- package/dist/cjs/rsc/plugins/rspack-rsc-server-plugin.js +0 -245
- package/dist/cjs/rsc/rsc-client-loader.js +0 -71
- package/dist/cjs/rsc/rsc-server-loader.js +0 -102
- package/dist/cjs/rsc/rsc-ssr-loader.js +0 -60
- package/dist/esm/rsc/common.mjs +0 -87
- package/dist/esm/rsc/plugins/rsbuild-rsc-plugin.mjs +0 -124
- package/dist/esm/rsc/plugins/rspack-rsc-client-plugin.mjs +0 -143
- package/dist/esm/rsc/plugins/rspack-rsc-server-plugin.mjs +0 -211
- package/dist/esm/rsc/rsc-client-loader.mjs +0 -37
- package/dist/esm/rsc/rsc-css-loader.mjs +0 -8
- package/dist/esm/rsc/rsc-server-loader.mjs +0 -58
- package/dist/esm/rsc/rsc-ssr-loader.mjs +0 -26
- package/dist/esm-node/rsc/common.mjs +0 -88
- package/dist/esm-node/rsc/plugins/rsbuild-rsc-plugin.mjs +0 -126
- package/dist/esm-node/rsc/plugins/rspack-rsc-client-plugin.mjs +0 -144
- package/dist/esm-node/rsc/plugins/rspack-rsc-server-plugin.mjs +0 -212
- package/dist/esm-node/rsc/rsc-client-loader.mjs +0 -38
- package/dist/esm-node/rsc/rsc-css-loader.mjs +0 -9
- package/dist/esm-node/rsc/rsc-server-loader.mjs +0 -60
- package/dist/esm-node/rsc/rsc-ssr-loader.mjs +0 -27
- package/dist/types/rsc/common.d.ts +0 -22
- package/dist/types/rsc/plugins/rsbuild-rsc-plugin.d.ts +0 -7
- package/dist/types/rsc/plugins/rspack-rsc-client-plugin.d.ts +0 -14
- package/dist/types/rsc/plugins/rspack-rsc-server-plugin.d.ts +0 -32
- package/dist/types/rsc/rsc-client-loader.d.ts +0 -7
- package/dist/types/rsc/rsc-css-loader.d.ts +0 -2
- package/dist/types/rsc/rsc-server-loader.d.ts +0 -6
- package/dist/types/rsc/rsc-ssr-loader.d.ts +0 -6
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __webpack_require__ = {};
|
|
3
|
-
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
-
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: definition[key]
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
})();
|
|
11
|
-
(()=>{
|
|
12
|
-
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
-
})();
|
|
14
|
-
(()=>{
|
|
15
|
-
__webpack_require__.r = (exports1)=>{
|
|
16
|
-
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
-
value: 'Module'
|
|
18
|
-
});
|
|
19
|
-
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
-
value: true
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
|
-
})();
|
|
24
|
-
var __webpack_exports__ = {};
|
|
25
|
-
__webpack_require__.r(__webpack_exports__);
|
|
26
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
RscServerPlugin: ()=>RscServerPlugin
|
|
28
|
-
});
|
|
29
|
-
const external_common_js_namespaceObject = require("../common.js");
|
|
30
|
-
const rspack_rsc_server_plugin_resourcePath2Entries = new Map();
|
|
31
|
-
class RscServerPlugin {
|
|
32
|
-
isValidModule(module) {
|
|
33
|
-
return Boolean(module?.resource);
|
|
34
|
-
}
|
|
35
|
-
hasValidEntries(entries) {
|
|
36
|
-
return Boolean(entries && entries.length > 0);
|
|
37
|
-
}
|
|
38
|
-
getEntryNameFromIssuer(issuer) {
|
|
39
|
-
return issuer.resource ? this.entryPath2Name.get(issuer.resource) : void 0;
|
|
40
|
-
}
|
|
41
|
-
createEntryFromIssuer(issuer, entryName) {
|
|
42
|
-
return {
|
|
43
|
-
entryName,
|
|
44
|
-
entryPath: issuer.resource
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
buildModuleToEntriesMapping(compilation) {
|
|
48
|
-
this.moduleToEntries.clear();
|
|
49
|
-
for (const [entryName, entryDependency] of compilation.entries.entries()){
|
|
50
|
-
const entryModule = compilation.moduleGraph.getModule(entryDependency.dependencies[0]);
|
|
51
|
-
if (entryModule) this.traverseModulesFromEntry(entryModule, entryName, compilation.moduleGraph, new Set());
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
traverseModulesFromEntry(module, entryName, moduleGraph, visited) {
|
|
55
|
-
if (!module?.resource || visited.has(module.resource)) return;
|
|
56
|
-
visited.add(module.resource);
|
|
57
|
-
if (!this.moduleToEntries.has(module.resource)) this.moduleToEntries.set(module.resource, new Set());
|
|
58
|
-
this.moduleToEntries.get(module.resource).add(entryName);
|
|
59
|
-
for (const connection of moduleGraph.getOutgoingConnections(module))if (connection.module && 'resource' in connection.module) this.traverseModulesFromEntry(connection.module, entryName, moduleGraph, visited);
|
|
60
|
-
}
|
|
61
|
-
findModuleEntries(module, compilation, resourcePath2Entries, visited = new Set()) {
|
|
62
|
-
if (!this.isValidModule(module) || visited.has(module.resource)) return [];
|
|
63
|
-
visited.add(module.resource);
|
|
64
|
-
const currentEntries = resourcePath2Entries.get(module.resource);
|
|
65
|
-
if (this.hasValidEntries(currentEntries)) return currentEntries;
|
|
66
|
-
const entryNames = this.moduleToEntries.get(module.resource);
|
|
67
|
-
if (entryNames && entryNames.size > 0) {
|
|
68
|
-
const entries = [];
|
|
69
|
-
for (const entryName of entryNames){
|
|
70
|
-
const entryPath = this.getEntryPathByName(entryName, compilation);
|
|
71
|
-
if (entryPath) entries.push({
|
|
72
|
-
entryName,
|
|
73
|
-
entryPath
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
return entries;
|
|
77
|
-
}
|
|
78
|
-
const issuer = (0, external_common_js_namespaceObject.findRootIssuer)(compilation.moduleGraph, module);
|
|
79
|
-
if (!issuer) return [];
|
|
80
|
-
const issuerEntries = this.findModuleEntries(issuer, compilation, resourcePath2Entries, visited);
|
|
81
|
-
if (issuerEntries.length > 0) return issuerEntries;
|
|
82
|
-
const entryName = this.getEntryNameFromIssuer(issuer);
|
|
83
|
-
if (entryName) return [
|
|
84
|
-
this.createEntryFromIssuer(issuer, entryName)
|
|
85
|
-
];
|
|
86
|
-
return [];
|
|
87
|
-
}
|
|
88
|
-
getEntryPathByName(entryName, compilation) {
|
|
89
|
-
const entryDependency = compilation.entries.get(entryName);
|
|
90
|
-
if (entryDependency && entryDependency.dependencies.length > 0) {
|
|
91
|
-
const firstDep = entryDependency.dependencies[0];
|
|
92
|
-
if ('request' in firstDep && 'string' == typeof firstDep.request) return firstDep.request;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
apply(compiler) {
|
|
96
|
-
const { EntryPlugin, WebpackError, sources: { RawSource } } = compiler.rspack;
|
|
97
|
-
const includeModule = async (compilation, resource, resourceEntryNames, layer)=>{
|
|
98
|
-
const entries = Array.from(compilation.entries.entries());
|
|
99
|
-
if (0 === entries.length) return void compilation.errors.push(new WebpackError("Could not find an entry in the compilation."));
|
|
100
|
-
const includePromises = entries.filter(([entryName])=>resourceEntryNames?.includes(entryName)).map(([entryName])=>{
|
|
101
|
-
const dependency = EntryPlugin.createDependency(resource);
|
|
102
|
-
return new Promise((resolve, reject)=>{
|
|
103
|
-
compilation.addInclude(compiler.context, dependency, {
|
|
104
|
-
name: entryName,
|
|
105
|
-
layer
|
|
106
|
-
}, (error, module)=>{
|
|
107
|
-
if (error) {
|
|
108
|
-
compilation.errors.push(error);
|
|
109
|
-
return reject(error);
|
|
110
|
-
}
|
|
111
|
-
if (!module) {
|
|
112
|
-
const noModuleError = new WebpackError("Module not added");
|
|
113
|
-
noModuleError.file = resource;
|
|
114
|
-
compilation.errors.push(noModuleError);
|
|
115
|
-
return reject(noModuleError);
|
|
116
|
-
}
|
|
117
|
-
(0, external_common_js_namespaceObject.setRscBuildInfo)(module, {
|
|
118
|
-
__entryName: entryName
|
|
119
|
-
});
|
|
120
|
-
compilation.moduleGraph.getExportsInfo(module).setUsedInUnknownWay(entryName);
|
|
121
|
-
resolve();
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
});
|
|
125
|
-
await Promise.all(includePromises);
|
|
126
|
-
};
|
|
127
|
-
let needsAdditionalPass = false;
|
|
128
|
-
compiler.hooks.finishMake.tapPromise(RscServerPlugin.name, async (compilation)=>{
|
|
129
|
-
this.buildModuleToEntriesMapping(compilation);
|
|
130
|
-
const processModules = (modules)=>{
|
|
131
|
-
let hasChangeReference = false;
|
|
132
|
-
for (const module of modules){
|
|
133
|
-
if ('resource' in module && (0, external_common_js_namespaceObject.isCssModule)(module)) this.styles.add(module.resource);
|
|
134
|
-
const buildInfo = (0, external_common_js_namespaceObject.getRscBuildInfo)(module);
|
|
135
|
-
if (!buildInfo || !buildInfo.resourcePath) continue;
|
|
136
|
-
if (module.layer && 'server' === buildInfo.type) external_common_js_namespaceObject.sharedData.set(buildInfo?.resourcePath, buildInfo);
|
|
137
|
-
if (!module.layer && 'client' === buildInfo.type) external_common_js_namespaceObject.sharedData.set(buildInfo?.resourcePath, buildInfo);
|
|
138
|
-
const currentReference = buildInfo?.type === 'client' ? this.clientReferencesMap.get(buildInfo.resourcePath) : this.serverReferencesMap.get(buildInfo.resourcePath);
|
|
139
|
-
if (buildInfo?.type !== 'client' || currentReference) {
|
|
140
|
-
if (buildInfo?.type === 'server' && !currentReference) {
|
|
141
|
-
hasChangeReference = true;
|
|
142
|
-
this.serverReferencesMap.set(buildInfo.resourcePath, buildInfo.exportNames);
|
|
143
|
-
}
|
|
144
|
-
} else {
|
|
145
|
-
hasChangeReference = true;
|
|
146
|
-
this.clientReferencesMap.set(buildInfo.resourcePath, buildInfo.clientReferences);
|
|
147
|
-
}
|
|
148
|
-
const entries = this.findModuleEntries(module, compilation, rspack_rsc_server_plugin_resourcePath2Entries);
|
|
149
|
-
if (entries.length > 0) rspack_rsc_server_plugin_resourcePath2Entries.set(module.resource, entries);
|
|
150
|
-
}
|
|
151
|
-
return hasChangeReference;
|
|
152
|
-
};
|
|
153
|
-
this.serverManifest = {};
|
|
154
|
-
const clientReferences = [
|
|
155
|
-
...this.clientReferencesMap.keys()
|
|
156
|
-
];
|
|
157
|
-
const serverReferences = [
|
|
158
|
-
...this.serverReferencesMap.keys()
|
|
159
|
-
];
|
|
160
|
-
const referencesBefore = [
|
|
161
|
-
...clientReferences,
|
|
162
|
-
...serverReferences
|
|
163
|
-
];
|
|
164
|
-
let hasChangeReference = false;
|
|
165
|
-
await Promise.all([
|
|
166
|
-
...clientReferences.map(async (resource)=>{
|
|
167
|
-
try {
|
|
168
|
-
await includeModule(compilation, resource, rspack_rsc_server_plugin_resourcePath2Entries.get(resource)?.map((entry)=>entry.entryName) || []);
|
|
169
|
-
} catch (error) {
|
|
170
|
-
console.error(error);
|
|
171
|
-
hasChangeReference = true;
|
|
172
|
-
this.clientReferencesMap.delete(resource);
|
|
173
|
-
}
|
|
174
|
-
}),
|
|
175
|
-
...serverReferences.map(async (resource)=>{
|
|
176
|
-
try {
|
|
177
|
-
await includeModule(compilation, resource, rspack_rsc_server_plugin_resourcePath2Entries.get(resource)?.map((entry)=>entry.entryName) || [], external_common_js_namespaceObject.rspackRscLayerName);
|
|
178
|
-
} catch (error) {
|
|
179
|
-
console.error(error);
|
|
180
|
-
hasChangeReference = true;
|
|
181
|
-
this.serverReferencesMap.delete(resource);
|
|
182
|
-
}
|
|
183
|
-
})
|
|
184
|
-
]);
|
|
185
|
-
hasChangeReference = processModules(compilation.modules);
|
|
186
|
-
const referencesAfter = [
|
|
187
|
-
...this.clientReferencesMap.keys(),
|
|
188
|
-
...this.serverReferencesMap.keys()
|
|
189
|
-
];
|
|
190
|
-
if (referencesBefore.length !== referencesAfter.length || !referencesAfter.every((reference)=>referencesBefore.includes(reference)) && hasChangeReference) needsAdditionalPass = true;
|
|
191
|
-
});
|
|
192
|
-
compiler.hooks.done.tap(RscServerPlugin.name, ()=>{
|
|
193
|
-
external_common_js_namespaceObject.sharedData.set('serverReferencesMap', this.serverReferencesMap);
|
|
194
|
-
external_common_js_namespaceObject.sharedData.set('clientReferencesMap', this.clientReferencesMap);
|
|
195
|
-
external_common_js_namespaceObject.sharedData.set('styles', this.styles);
|
|
196
|
-
});
|
|
197
|
-
compiler.hooks.afterCompile.tap(RscServerPlugin.name, (compilation)=>{
|
|
198
|
-
for (const module of compilation.modules){
|
|
199
|
-
const resource = module.nameForCondition();
|
|
200
|
-
if (!resource) continue;
|
|
201
|
-
const moduleId = compilation.chunkGraph.getModuleId(module);
|
|
202
|
-
if (null !== moduleId) {
|
|
203
|
-
if (module.layer !== external_common_js_namespaceObject.rspackRscLayerName && this.clientReferencesMap.has(resource)) {
|
|
204
|
-
const clientReferences = this.clientReferencesMap.get(resource);
|
|
205
|
-
if (clientReferences) for (const clientReference of clientReferences)clientReference.ssrId = moduleId;
|
|
206
|
-
else compilation.errors.push(new WebpackError(`Could not find client references info in \`clientReferencesMap\` for ${resource}.`));
|
|
207
|
-
} else if (module.layer === external_common_js_namespaceObject.rspackRscLayerName && (0, external_common_js_namespaceObject.getRscBuildInfo)(module)?.type === 'server') {
|
|
208
|
-
const serverReferencesModuleInfo = (0, external_common_js_namespaceObject.getRscBuildInfo)(module);
|
|
209
|
-
if (serverReferencesModuleInfo) {
|
|
210
|
-
serverReferencesModuleInfo.moduleId = moduleId;
|
|
211
|
-
for (const exportName of serverReferencesModuleInfo.exportNames)this.serverManifest[`${moduleId}#${exportName}`] = {
|
|
212
|
-
id: moduleId,
|
|
213
|
-
chunks: [],
|
|
214
|
-
name: exportName
|
|
215
|
-
};
|
|
216
|
-
} else compilation.errors.push(new WebpackError(`Could not find server references module info in \`serverReferencesMap\` for ${resource}.`));
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
});
|
|
221
|
-
compiler.hooks.thisCompilation.tap(RscServerPlugin.name, (compilation)=>{
|
|
222
|
-
compilation.hooks.needAdditionalPass.tap(RscServerPlugin.name, ()=>!(needsAdditionalPass = !needsAdditionalPass));
|
|
223
|
-
compilation.hooks.processAssets.tap(RscServerPlugin.name, ()=>{
|
|
224
|
-
compilation.emitAsset(this.serverManifestFilename, new RawSource(JSON.stringify(this.serverManifest, null, 2), false));
|
|
225
|
-
});
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
constructor(options){
|
|
229
|
-
this.clientReferencesMap = new Map();
|
|
230
|
-
this.serverReferencesMap = new Map();
|
|
231
|
-
this.serverManifest = {};
|
|
232
|
-
this.entryPath2Name = new Map();
|
|
233
|
-
this.moduleToEntries = new Map();
|
|
234
|
-
this.styles = new Set();
|
|
235
|
-
this.serverManifestFilename = options?.serverManifestFilename || "react-server-manifest.json";
|
|
236
|
-
this.entryPath2Name = options?.entryPath2Name || new Map();
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
exports.RscServerPlugin = __webpack_exports__.RscServerPlugin;
|
|
240
|
-
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
241
|
-
"RscServerPlugin"
|
|
242
|
-
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
243
|
-
Object.defineProperty(exports, '__esModule', {
|
|
244
|
-
value: true
|
|
245
|
-
});
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __webpack_require__ = {};
|
|
3
|
-
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
-
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: definition[key]
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
})();
|
|
11
|
-
(()=>{
|
|
12
|
-
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
-
})();
|
|
14
|
-
(()=>{
|
|
15
|
-
__webpack_require__.r = (exports1)=>{
|
|
16
|
-
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
-
value: 'Module'
|
|
18
|
-
});
|
|
19
|
-
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
-
value: true
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
|
-
})();
|
|
24
|
-
var __webpack_exports__ = {};
|
|
25
|
-
__webpack_require__.r(__webpack_exports__);
|
|
26
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
default: ()=>rscClientLoader
|
|
28
|
-
});
|
|
29
|
-
const external_common_js_namespaceObject = require("./common.js");
|
|
30
|
-
async function rscClientLoader(source, sourceMap) {
|
|
31
|
-
this.cacheable(true);
|
|
32
|
-
const callback = this.async();
|
|
33
|
-
const ast = await (0, external_common_js_namespaceObject.parseSource)(source);
|
|
34
|
-
const hasUseServerDirective = await (0, external_common_js_namespaceObject.isServerModule)(ast);
|
|
35
|
-
if (!hasUseServerDirective) return void callback(null, source, sourceMap);
|
|
36
|
-
const { callServerImport = "@modern-js/runtime/rsc/client", registerImport = "@modern-js/runtime/rsc/client" } = this.getOptions();
|
|
37
|
-
const buildInfo = external_common_js_namespaceObject.sharedData.get(this.resourcePath);
|
|
38
|
-
const moduleInfo = buildInfo ? {
|
|
39
|
-
moduleId: buildInfo?.moduleId,
|
|
40
|
-
exportNames: buildInfo?.exportNames
|
|
41
|
-
} : null;
|
|
42
|
-
if (!moduleInfo) {
|
|
43
|
-
this.emitError(new Error(`Could not find server module info in \`serverReferencesMap\` for ${this.resourcePath}.`));
|
|
44
|
-
callback(null, '');
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
const { moduleId, exportNames } = moduleInfo;
|
|
48
|
-
if (!moduleId) {
|
|
49
|
-
this.emitError(new Error(`Could not find server module ID in \`serverReferencesMap\` for ${this.resourcePath}.`));
|
|
50
|
-
callback(null, '');
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
if (!exportNames) return void callback(null, '');
|
|
54
|
-
const importsCode = `
|
|
55
|
-
import { createServerReference } from "${registerImport}";
|
|
56
|
-
import { callServer } from "${callServerImport}";
|
|
57
|
-
`;
|
|
58
|
-
const exportsCode = exportNames.map((item)=>{
|
|
59
|
-
const name = item;
|
|
60
|
-
if ('default' === name) return `export default createServerReference("${moduleId}", callServer);`;
|
|
61
|
-
return `export var ${name} = createServerReference("${moduleId}#${name}", callServer);`;
|
|
62
|
-
}).join('\n');
|
|
63
|
-
callback(null, `${importsCode}\n${exportsCode}`);
|
|
64
|
-
}
|
|
65
|
-
exports["default"] = __webpack_exports__["default"];
|
|
66
|
-
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
67
|
-
"default"
|
|
68
|
-
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
69
|
-
Object.defineProperty(exports, '__esModule', {
|
|
70
|
-
value: true
|
|
71
|
-
});
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __webpack_require__ = {};
|
|
3
|
-
(()=>{
|
|
4
|
-
__webpack_require__.n = (module)=>{
|
|
5
|
-
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
|
|
6
|
-
__webpack_require__.d(getter, {
|
|
7
|
-
a: getter
|
|
8
|
-
});
|
|
9
|
-
return getter;
|
|
10
|
-
};
|
|
11
|
-
})();
|
|
12
|
-
(()=>{
|
|
13
|
-
__webpack_require__.d = (exports1, definition)=>{
|
|
14
|
-
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
15
|
-
enumerable: true,
|
|
16
|
-
get: definition[key]
|
|
17
|
-
});
|
|
18
|
-
};
|
|
19
|
-
})();
|
|
20
|
-
(()=>{
|
|
21
|
-
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
22
|
-
})();
|
|
23
|
-
(()=>{
|
|
24
|
-
__webpack_require__.r = (exports1)=>{
|
|
25
|
-
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
26
|
-
value: 'Module'
|
|
27
|
-
});
|
|
28
|
-
Object.defineProperty(exports1, '__esModule', {
|
|
29
|
-
value: true
|
|
30
|
-
});
|
|
31
|
-
};
|
|
32
|
-
})();
|
|
33
|
-
var __webpack_exports__ = {};
|
|
34
|
-
__webpack_require__.r(__webpack_exports__);
|
|
35
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
36
|
-
default: ()=>rscServerLoader
|
|
37
|
-
});
|
|
38
|
-
const external_path_namespaceObject = require("path");
|
|
39
|
-
var external_path_default = /*#__PURE__*/ __webpack_require__.n(external_path_namespaceObject);
|
|
40
|
-
const core_namespaceObject = require("@swc/core");
|
|
41
|
-
const external_common_js_namespaceObject = require("./common.js");
|
|
42
|
-
function extractMetadata(code) {
|
|
43
|
-
const metadataRegex = /\/\* @modern-js-rsc-metadata\n([\s\S]*?)\*\//;
|
|
44
|
-
const match = code.match(metadataRegex);
|
|
45
|
-
if (!match) return null;
|
|
46
|
-
try {
|
|
47
|
-
const metadata = JSON.parse(match[1]);
|
|
48
|
-
return metadata;
|
|
49
|
-
} catch (e) {
|
|
50
|
-
console.error('Failed to parse metadata:', e);
|
|
51
|
-
return null;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
async function rscServerLoader(source) {
|
|
55
|
-
this.cacheable(true);
|
|
56
|
-
const callback = this.async();
|
|
57
|
-
const { appDir, runtimePath = '@modern-js/runtime/rsc/server' } = this.getOptions();
|
|
58
|
-
const result = await (0, core_namespaceObject.transform)(source, {
|
|
59
|
-
filename: this.resourcePath,
|
|
60
|
-
jsc: {
|
|
61
|
-
target: 'es2020',
|
|
62
|
-
experimental: {
|
|
63
|
-
cacheRoot: external_path_default().resolve(appDir, 'node_modules/.swc'),
|
|
64
|
-
plugins: [
|
|
65
|
-
[
|
|
66
|
-
require.resolve('@modern-js/flight-server-transform-plugin'),
|
|
67
|
-
{
|
|
68
|
-
appDir: appDir,
|
|
69
|
-
runtimePath: runtimePath
|
|
70
|
-
}
|
|
71
|
-
]
|
|
72
|
-
]
|
|
73
|
-
}
|
|
74
|
-
},
|
|
75
|
-
isModule: true
|
|
76
|
-
});
|
|
77
|
-
const { code, map } = result;
|
|
78
|
-
const metadata = extractMetadata(code);
|
|
79
|
-
if (metadata?.directive && 'client' === metadata.directive) {
|
|
80
|
-
const { exportNames } = metadata;
|
|
81
|
-
if (exportNames.length > 0) (0, external_common_js_namespaceObject.setRscBuildInfo)(this._module, {
|
|
82
|
-
type: 'client',
|
|
83
|
-
resourcePath: this.resourcePath,
|
|
84
|
-
clientReferences: exportNames
|
|
85
|
-
});
|
|
86
|
-
} else if (metadata) {
|
|
87
|
-
const { exportNames } = metadata;
|
|
88
|
-
if (exportNames.length > 0) (0, external_common_js_namespaceObject.setRscBuildInfo)(this._module, {
|
|
89
|
-
type: 'server',
|
|
90
|
-
resourcePath: this.resourcePath,
|
|
91
|
-
exportNames: exportNames.map((item)=>item.exportName)
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
return callback(null, code, map);
|
|
95
|
-
}
|
|
96
|
-
exports["default"] = __webpack_exports__["default"];
|
|
97
|
-
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
98
|
-
"default"
|
|
99
|
-
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
100
|
-
Object.defineProperty(exports, '__esModule', {
|
|
101
|
-
value: true
|
|
102
|
-
});
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __webpack_require__ = {};
|
|
3
|
-
(()=>{
|
|
4
|
-
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
-
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: definition[key]
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
})();
|
|
11
|
-
(()=>{
|
|
12
|
-
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
-
})();
|
|
14
|
-
(()=>{
|
|
15
|
-
__webpack_require__.r = (exports1)=>{
|
|
16
|
-
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
-
value: 'Module'
|
|
18
|
-
});
|
|
19
|
-
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
-
value: true
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
|
-
})();
|
|
24
|
-
var __webpack_exports__ = {};
|
|
25
|
-
__webpack_require__.r(__webpack_exports__);
|
|
26
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
default: ()=>rscSsrLoader
|
|
28
|
-
});
|
|
29
|
-
const external_common_js_namespaceObject = require("./common.js");
|
|
30
|
-
async function rscSsrLoader(source, sourceMap) {
|
|
31
|
-
this.cacheable(true);
|
|
32
|
-
const callback = this.async();
|
|
33
|
-
const ast = await (0, external_common_js_namespaceObject.parseSource)(source);
|
|
34
|
-
const hasDeclareServerDirective = await (0, external_common_js_namespaceObject.isServerModule)(ast);
|
|
35
|
-
const resourcePath = this.resourcePath;
|
|
36
|
-
if (!hasDeclareServerDirective) return void callback(null, source, sourceMap);
|
|
37
|
-
const exportedNames = await (0, external_common_js_namespaceObject.getExportNames)(ast, true);
|
|
38
|
-
const importsCode = `
|
|
39
|
-
'use server';
|
|
40
|
-
`;
|
|
41
|
-
const exportsCode = exportedNames.map((name)=>{
|
|
42
|
-
if ('default' === name) return 'export default () => {throw new Error("Server actions must not be called during server-side rendering.")}';
|
|
43
|
-
return `export const ${name} = () => {
|
|
44
|
-
throw new Error("Server actions must not be called during server-side rendering.")
|
|
45
|
-
}`;
|
|
46
|
-
}).join('\n');
|
|
47
|
-
if (exportedNames.length > 0) (0, external_common_js_namespaceObject.setRscBuildInfo)(this._module, {
|
|
48
|
-
type: 'server',
|
|
49
|
-
resourcePath,
|
|
50
|
-
exportNames: exportedNames
|
|
51
|
-
});
|
|
52
|
-
callback(null, `${importsCode}\n${exportsCode}`, sourceMap);
|
|
53
|
-
}
|
|
54
|
-
exports["default"] = __webpack_exports__["default"];
|
|
55
|
-
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
56
|
-
"default"
|
|
57
|
-
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
58
|
-
Object.defineProperty(exports, '__esModule', {
|
|
59
|
-
value: true
|
|
60
|
-
});
|
package/dist/esm/rsc/common.mjs
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { logger } from "@modern-js/utils";
|
|
2
|
-
import { parse } from "@swc/core";
|
|
3
|
-
const rspackRscLayerName = "react-server";
|
|
4
|
-
const MODERN_RSC_INFO = 'modernRscInfo';
|
|
5
|
-
const sharedData = {
|
|
6
|
-
store: new Map(),
|
|
7
|
-
get (key) {
|
|
8
|
-
return this.store.get(key);
|
|
9
|
-
},
|
|
10
|
-
set (key, value) {
|
|
11
|
-
this.store.set(key, value);
|
|
12
|
-
},
|
|
13
|
-
clear () {
|
|
14
|
-
this.store.clear();
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
function setBuildInfo(mod, property) {
|
|
18
|
-
if (!mod.buildInfo) mod.buildInfo = {};
|
|
19
|
-
Object.assign(mod.buildInfo, property);
|
|
20
|
-
}
|
|
21
|
-
function setRscBuildInfo(mod, property) {
|
|
22
|
-
if (!mod.buildInfo) mod.buildInfo = {};
|
|
23
|
-
const rscBuildInfo = mod.buildInfo[MODERN_RSC_INFO] || {};
|
|
24
|
-
Object.assign(rscBuildInfo, property);
|
|
25
|
-
setBuildInfo(mod, {
|
|
26
|
-
[MODERN_RSC_INFO]: rscBuildInfo
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
function removeRscBuildInfo(mod) {
|
|
30
|
-
delete mod.buildInfo?.[MODERN_RSC_INFO];
|
|
31
|
-
}
|
|
32
|
-
function getRscBuildInfo(mod) {
|
|
33
|
-
return mod.buildInfo?.[MODERN_RSC_INFO];
|
|
34
|
-
}
|
|
35
|
-
function isCssModule(mod) {
|
|
36
|
-
if (!mod) return false;
|
|
37
|
-
return getRscBuildInfo(mod)?.isCssModule;
|
|
38
|
-
}
|
|
39
|
-
const parseSource = async (source)=>await parse(source, {
|
|
40
|
-
syntax: "typescript",
|
|
41
|
-
tsx: true,
|
|
42
|
-
dynamicImport: true
|
|
43
|
-
});
|
|
44
|
-
const getExportNames = async (ast, collectFuncOnly = false)=>{
|
|
45
|
-
const exportNames = [];
|
|
46
|
-
ast.body.forEach((node)=>{
|
|
47
|
-
if ('ExportNamedDeclaration' === node.type) {
|
|
48
|
-
const namedExport = node;
|
|
49
|
-
namedExport.specifiers.forEach((specifier)=>{
|
|
50
|
-
if ('ExportSpecifier' === specifier.type) exportNames.push(specifier.exported?.value || specifier.orig.value);
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
if ('ExportDeclaration' === node.type) {
|
|
54
|
-
if ('VariableDeclaration' === node.declaration.type) node.declaration.declarations.forEach((decl)=>{
|
|
55
|
-
if ('Identifier' === decl.id.type) if (collectFuncOnly) {
|
|
56
|
-
if (decl.init?.type === 'FunctionExpression' || decl.init?.type === 'ArrowFunctionExpression') exportNames.push(decl.id.value);
|
|
57
|
-
} else exportNames.push(decl.id.value);
|
|
58
|
-
});
|
|
59
|
-
if ('ClassDeclaration' === node.declaration.type || 'FunctionDeclaration' === node.declaration.type) {
|
|
60
|
-
if (node.declaration.identifier) exportNames.push(node.declaration.identifier.value);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
if ('ExportDefaultExpression' === node.type || 'ExportDefaultDeclaration' === node.type) exportNames.push('default');
|
|
64
|
-
});
|
|
65
|
-
return exportNames;
|
|
66
|
-
};
|
|
67
|
-
const checkDirective = async (ast, directive)=>{
|
|
68
|
-
try {
|
|
69
|
-
for(let i = 0; i < ast.body.length; i++){
|
|
70
|
-
const node = ast.body[i];
|
|
71
|
-
if ('ExpressionStatement' !== node.type) break;
|
|
72
|
-
if ('StringLiteral' === node.expression.type && node.expression.value === directive) return true;
|
|
73
|
-
}
|
|
74
|
-
} catch (e) {
|
|
75
|
-
logger.error(e);
|
|
76
|
-
}
|
|
77
|
-
return false;
|
|
78
|
-
};
|
|
79
|
-
const isServerModule = async (ast)=>checkDirective(ast, 'use server');
|
|
80
|
-
const isClientModule = async (ast)=>checkDirective(ast, 'use client');
|
|
81
|
-
function findRootIssuer(modulegraph, module) {
|
|
82
|
-
const currentModule = module;
|
|
83
|
-
const issuer = modulegraph.getIssuer(currentModule);
|
|
84
|
-
if (!issuer) return currentModule;
|
|
85
|
-
return findRootIssuer(modulegraph, issuer);
|
|
86
|
-
}
|
|
87
|
-
export { MODERN_RSC_INFO, findRootIssuer, getExportNames, getRscBuildInfo, isClientModule, isCssModule, isServerModule, parseSource, removeRscBuildInfo, rspackRscLayerName, setBuildInfo, setRscBuildInfo, sharedData };
|