@modern-js/server 2.42.1 → 2.43.0
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/dev-tools/dev-middleware/index.js +2 -3
- package/dist/cjs/dev-tools/dev-middleware/socketServer.js +2 -3
- package/dist/cjs/dev-tools/watcher/index.js +2 -3
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/server/devServer.js +96 -144
- package/dist/cjs/server/devServerOld.js +352 -0
- package/dist/cjs/server/index.js +14 -3
- package/dist/esm/dev-tools/dev-middleware/index.js +1 -2
- package/dist/esm/dev-tools/dev-middleware/socketServer.js +1 -2
- package/dist/esm/dev-tools/watcher/index.js +1 -2
- package/dist/esm/index.js +2 -1
- package/dist/esm/server/devServer.js +195 -268
- package/dist/esm/server/devServerOld.js +579 -0
- package/dist/esm/server/index.js +21 -2
- package/dist/esm-node/dev-tools/dev-middleware/index.js +2 -3
- package/dist/esm-node/dev-tools/dev-middleware/socketServer.js +2 -3
- package/dist/esm-node/dev-tools/watcher/index.js +2 -3
- package/dist/esm-node/index.js +2 -1
- package/dist/esm-node/server/devServer.js +97 -145
- package/dist/esm-node/server/devServerOld.js +318 -0
- package/dist/esm-node/server/index.js +12 -2
- package/dist/types/dev-tools/dev-middleware/index.d.ts +2 -0
- package/dist/types/dev-tools/dev-middleware/socketServer.d.ts +2 -0
- package/dist/types/dev-tools/https/index.d.ts +1 -0
- package/dist/types/dev-tools/mock/getMockData.d.ts +2 -0
- package/dist/types/index.d.ts +4 -4
- package/dist/types/server/devServer.d.ts +10 -8
- package/dist/types/server/devServerOld.d.ts +37 -0
- package/dist/types/server/index.d.ts +4 -1
- package/dist/types/types.d.ts +10 -0
- package/package.json +12 -10
|
@@ -44,8 +44,7 @@ function getHMRClientPath(client) {
|
|
|
44
44
|
const clientEntry = `${require.resolve("@modern-js/server/hmr-client")}?${host}${path}${port}${protocol}`;
|
|
45
45
|
return clientEntry;
|
|
46
46
|
}
|
|
47
|
-
|
|
48
|
-
DevMiddleware = class DevMiddleware2 extends import_events.EventEmitter {
|
|
47
|
+
class DevMiddleware extends import_events.EventEmitter {
|
|
49
48
|
init(app) {
|
|
50
49
|
app.on("listening", () => {
|
|
51
50
|
this.socketServer.prepare(app);
|
|
@@ -92,4 +91,4 @@ DevMiddleware = class DevMiddleware2 extends import_events.EventEmitter {
|
|
|
92
91
|
this.middleware = this.setupDevMiddleware(devMiddleware);
|
|
93
92
|
}
|
|
94
93
|
}
|
|
95
|
-
}
|
|
94
|
+
}
|
|
@@ -34,8 +34,7 @@ module.exports = __toCommonJS(socketServer_exports);
|
|
|
34
34
|
var import_define_property = require("@swc/helpers/_/_define_property");
|
|
35
35
|
var import_ws = __toESM(require("ws"));
|
|
36
36
|
var import_utils = require("@modern-js/utils");
|
|
37
|
-
|
|
38
|
-
SocketServer = class SocketServer2 {
|
|
37
|
+
class SocketServer {
|
|
39
38
|
// create socket, install socket handler, bind socket event
|
|
40
39
|
prepare(app) {
|
|
41
40
|
var _this_options_client;
|
|
@@ -176,4 +175,4 @@ SocketServer = class SocketServer2 {
|
|
|
176
175
|
(0, import_define_property._)(this, "timer", null);
|
|
177
176
|
this.options = options;
|
|
178
177
|
}
|
|
179
|
-
}
|
|
178
|
+
}
|
|
@@ -76,8 +76,7 @@ const mergeWatchOptions = (options) => {
|
|
|
76
76
|
};
|
|
77
77
|
return finalWatchOptions;
|
|
78
78
|
};
|
|
79
|
-
|
|
80
|
-
Watcher = class Watcher2 {
|
|
79
|
+
class Watcher {
|
|
81
80
|
listen(files, options, callback) {
|
|
82
81
|
const watched = files.filter(Boolean);
|
|
83
82
|
const filenames = watched.map((filename) => filename.replace(/\\/g, "/"));
|
|
@@ -130,7 +129,7 @@ Watcher = class Watcher2 {
|
|
|
130
129
|
(0, import_define_property._)(this, "dependencyTree", null);
|
|
131
130
|
(0, import_define_property._)(this, "watcher", void 0);
|
|
132
131
|
}
|
|
133
|
-
}
|
|
132
|
+
}
|
|
134
133
|
// Annotate the CommonJS export names for ESM import in node:
|
|
135
134
|
0 && (module.exports = {
|
|
136
135
|
defaultWatchOptions,
|
package/dist/cjs/index.js
CHANGED
|
@@ -19,6 +19,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var src_exports = {};
|
|
20
20
|
__export(src_exports, {
|
|
21
21
|
Server: () => import_server.DevServer,
|
|
22
|
+
ServerForRsbuild: () => import_server.DevServerForRsbuild,
|
|
22
23
|
default: () => src_default
|
|
23
24
|
});
|
|
24
25
|
module.exports = __toCommonJS(src_exports);
|
|
@@ -32,5 +33,6 @@ var src_default = (options) => {
|
|
|
32
33
|
};
|
|
33
34
|
// Annotate the CommonJS export names for ESM import in node:
|
|
34
35
|
0 && (module.exports = {
|
|
35
|
-
Server
|
|
36
|
+
Server,
|
|
37
|
+
ServerForRsbuild
|
|
36
38
|
});
|
|
@@ -38,15 +38,40 @@ var import_https = require("https");
|
|
|
38
38
|
var import_utils = require("@modern-js/utils");
|
|
39
39
|
var import_prod_server = require("@modern-js/prod-server");
|
|
40
40
|
var import_lodash = require("@modern-js/utils/lodash");
|
|
41
|
+
var import_fileReader = require("@modern-js/runtime-utils/fileReader");
|
|
41
42
|
var import_constants = require("../constants");
|
|
42
43
|
var import_mock = require("../dev-tools/mock");
|
|
43
44
|
var import_register = require("../dev-tools/register");
|
|
44
45
|
var import_watcher = __toESM(require("../dev-tools/watcher"));
|
|
45
|
-
var import_dev_middleware = __toESM(require("../dev-tools/dev-middleware"));
|
|
46
46
|
var import_workerSSRRender = require("./workerSSRRender");
|
|
47
|
+
const transformToRsbuildServerOptions = (dev) => {
|
|
48
|
+
var _dev_devMiddleware, _dev_before, _dev_after;
|
|
49
|
+
const rsbuildOptions = {
|
|
50
|
+
hmr: Boolean(dev.hot),
|
|
51
|
+
client: dev.client,
|
|
52
|
+
writeToDisk: (_dev_devMiddleware = dev.devMiddleware) === null || _dev_devMiddleware === void 0 ? void 0 : _dev_devMiddleware.writeToDisk,
|
|
53
|
+
compress: dev.compress,
|
|
54
|
+
headers: dev.headers,
|
|
55
|
+
historyApiFallback: dev.historyApiFallback,
|
|
56
|
+
proxy: dev.proxy,
|
|
57
|
+
publicDir: false
|
|
58
|
+
};
|
|
59
|
+
if (((_dev_before = dev.before) === null || _dev_before === void 0 ? void 0 : _dev_before.length) || ((_dev_after = dev.after) === null || _dev_after === void 0 ? void 0 : _dev_after.length)) {
|
|
60
|
+
rsbuildOptions.setupMiddlewares = [
|
|
61
|
+
...dev.setupMiddlewares || [],
|
|
62
|
+
(middlewares) => {
|
|
63
|
+
middlewares.unshift(...dev.before || []);
|
|
64
|
+
middlewares.push(...dev.after || []);
|
|
65
|
+
}
|
|
66
|
+
];
|
|
67
|
+
} else if (dev.setupMiddlewares) {
|
|
68
|
+
rsbuildOptions.setupMiddlewares = dev.setupMiddlewares;
|
|
69
|
+
}
|
|
70
|
+
return rsbuildOptions;
|
|
71
|
+
};
|
|
47
72
|
class ModernDevServer extends import_prod_server.ModernServer {
|
|
48
73
|
getDevOptions(options) {
|
|
49
|
-
const devOptions =
|
|
74
|
+
const devOptions = options.dev;
|
|
50
75
|
const defaultOptions = (0, import_constants.getDefaultDevOptions)();
|
|
51
76
|
return (0, import_lodash.merge)(defaultOptions, devOptions);
|
|
52
77
|
}
|
|
@@ -58,40 +83,39 @@ class ModernDevServer extends import_prod_server.ModernServer {
|
|
|
58
83
|
});
|
|
59
84
|
});
|
|
60
85
|
}
|
|
61
|
-
applySetupMiddlewares() {
|
|
62
|
-
const setupMiddlewares = this.dev.setupMiddlewares || [];
|
|
63
|
-
const serverOptions = {
|
|
64
|
-
sockWrite: (type, data) => this.devMiddleware.sockWrite(type, data)
|
|
65
|
-
};
|
|
66
|
-
const befores = [];
|
|
67
|
-
const afters = [];
|
|
68
|
-
setupMiddlewares.forEach((handler) => {
|
|
69
|
-
handler({
|
|
70
|
-
unshift: (...handlers) => befores.unshift(...handlers),
|
|
71
|
-
push: (...handlers) => afters.push(...handlers)
|
|
72
|
-
}, serverOptions);
|
|
73
|
-
});
|
|
74
|
-
return {
|
|
75
|
-
befores,
|
|
76
|
-
afters
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
86
|
// Complete the preparation of services
|
|
80
87
|
async onInit(runner, app) {
|
|
81
88
|
this.runner = runner;
|
|
82
|
-
const { dev } = this;
|
|
83
|
-
const
|
|
84
|
-
const
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
89
|
+
const { dev, conf } = this;
|
|
90
|
+
const isUseStreamingSSR = (routes) => routes === null || routes === void 0 ? void 0 : routes.some((r) => r.isStream === true);
|
|
91
|
+
const isUseSSRPreload = () => {
|
|
92
|
+
const { server: { ssr, ssrByEntries } } = conf;
|
|
93
|
+
const checkUsePreload = (ssr2) => typeof ssr2 === "object" && Boolean(ssr2.preload);
|
|
94
|
+
return checkUsePreload(ssr) || Object.values(ssrByEntries || {}).some((ssr2) => checkUsePreload(ssr2));
|
|
95
|
+
};
|
|
96
|
+
const { middlewares: rsbuildMiddlewares, close, onUpgrade } = (
|
|
97
|
+
// https://github.com/web-infra-dev/rsbuild/blob/32fbb85e22158d5c4655505ce75e3452ce22dbb1/packages/shared/src/types/server.ts#L112
|
|
98
|
+
await this.getMiddlewares({
|
|
99
|
+
...transformToRsbuildServerOptions(this.dev),
|
|
100
|
+
compress: !isUseStreamingSSR(this.getRoutes()) && !isUseSSRPreload() && dev.compress,
|
|
101
|
+
htmlFallback: false,
|
|
102
|
+
publicDir: false
|
|
103
|
+
})
|
|
104
|
+
);
|
|
105
|
+
app.on("upgrade", onUpgrade);
|
|
106
|
+
this.rsbuild.onDevCompileDone(({ stats }) => {
|
|
107
|
+
if (stats.toJson({
|
|
108
|
+
all: false
|
|
109
|
+
}).name !== "server") {
|
|
110
|
+
this.onRepack({
|
|
111
|
+
routes: this.getRoutes()
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
await this.applyDefaultMiddlewares();
|
|
116
|
+
this.addMiddlewareHandler(rsbuildMiddlewares);
|
|
117
|
+
this.closeCb.push(close);
|
|
118
|
+
this.initFileReader();
|
|
95
119
|
await super.onInit(runner, app);
|
|
96
120
|
if (dev.watch) {
|
|
97
121
|
this.startWatcher();
|
|
@@ -101,6 +125,36 @@ class ModernDevServer extends import_prod_server.ModernServer {
|
|
|
101
125
|
});
|
|
102
126
|
}
|
|
103
127
|
}
|
|
128
|
+
initFileReader() {
|
|
129
|
+
var _this_dev_devMiddleware, _this_dev;
|
|
130
|
+
let isInit = false;
|
|
131
|
+
if (((_this_dev = this.dev) === null || _this_dev === void 0 ? void 0 : (_this_dev_devMiddleware = _this_dev.devMiddleware) === null || _this_dev_devMiddleware === void 0 ? void 0 : _this_dev_devMiddleware.writeToDisk) === false) {
|
|
132
|
+
this.addHandler((ctx, next) => {
|
|
133
|
+
var _ctx_res_locals;
|
|
134
|
+
if (isInit) {
|
|
135
|
+
return next();
|
|
136
|
+
}
|
|
137
|
+
isInit = true;
|
|
138
|
+
if (!((_ctx_res_locals = ctx.res.locals) === null || _ctx_res_locals === void 0 ? void 0 : _ctx_res_locals.webpack)) {
|
|
139
|
+
import_fileReader.fileReader.reset();
|
|
140
|
+
return next();
|
|
141
|
+
}
|
|
142
|
+
const { devMiddleware: webpackDevMid } = ctx.res.locals.webpack;
|
|
143
|
+
const { outputFileSystem } = webpackDevMid;
|
|
144
|
+
if (outputFileSystem) {
|
|
145
|
+
import_fileReader.fileReader.reset(outputFileSystem);
|
|
146
|
+
} else {
|
|
147
|
+
import_fileReader.fileReader.reset();
|
|
148
|
+
}
|
|
149
|
+
return next();
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
async close() {
|
|
154
|
+
for (const cb of this.closeCb) {
|
|
155
|
+
await cb();
|
|
156
|
+
}
|
|
157
|
+
}
|
|
104
158
|
// override the ModernServer renderHandler logic
|
|
105
159
|
getRenderHandler() {
|
|
106
160
|
if (this.useWorkerSSR) {
|
|
@@ -120,36 +174,8 @@ class ModernDevServer extends import_prod_server.ModernServer {
|
|
|
120
174
|
}
|
|
121
175
|
return super.getRenderHandler();
|
|
122
176
|
}
|
|
123
|
-
async applyDefaultMiddlewares(
|
|
124
|
-
const { pwd
|
|
125
|
-
const isUseStreamingSSR = (routes) => routes === null || routes === void 0 ? void 0 : routes.some((r) => r.isStream === true);
|
|
126
|
-
const isUseSSRPreload = () => {
|
|
127
|
-
const { server: { ssr, ssrByEntries } } = conf;
|
|
128
|
-
const checkUsePreload = (ssr2) => typeof ssr2 === "object" && Boolean(ssr2.preload);
|
|
129
|
-
return checkUsePreload(ssr) || Object.values(ssrByEntries || {}).some((ssr2) => checkUsePreload(ssr2));
|
|
130
|
-
};
|
|
131
|
-
if (!isUseStreamingSSR(this.getRoutes()) && !isUseSSRPreload() && dev.compress) {
|
|
132
|
-
const { default: compression } = await Promise.resolve().then(() => __toESM(require("http-compression")));
|
|
133
|
-
this.addHandler((ctx, next) => {
|
|
134
|
-
compression({
|
|
135
|
-
gzip: true,
|
|
136
|
-
brotli: false
|
|
137
|
-
})(ctx.req, ctx.res, next);
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
this.addHandler((ctx, next) => {
|
|
141
|
-
ctx.res.setHeader("Access-Control-Allow-Origin", "*");
|
|
142
|
-
if (ctx.path.includes("hot-update")) {
|
|
143
|
-
ctx.res.setHeader("Access-Control-Allow-Credentials", "false");
|
|
144
|
-
}
|
|
145
|
-
const confHeaders = dev.headers;
|
|
146
|
-
if (confHeaders) {
|
|
147
|
-
for (const [key, value] of Object.entries(confHeaders)) {
|
|
148
|
-
ctx.res.setHeader(key, value);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
next();
|
|
152
|
-
});
|
|
177
|
+
async applyDefaultMiddlewares() {
|
|
178
|
+
const { pwd } = this;
|
|
153
179
|
this.mockHandler = (0, import_mock.createMockHandler)({
|
|
154
180
|
pwd
|
|
155
181
|
});
|
|
@@ -160,43 +186,13 @@ class ModernDevServer extends import_prod_server.ModernServer {
|
|
|
160
186
|
next();
|
|
161
187
|
}
|
|
162
188
|
});
|
|
163
|
-
if (dev.proxy) {
|
|
164
|
-
const { handlers, handleUpgrade } = (0, import_prod_server.createProxyHandler)(dev.proxy);
|
|
165
|
-
app && handleUpgrade(app);
|
|
166
|
-
handlers.forEach((handler) => {
|
|
167
|
-
this.addHandler(handler);
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
devMiddleware.init(app);
|
|
171
|
-
devMiddleware.on("change", (stats) => {
|
|
172
|
-
if (stats.toJson({
|
|
173
|
-
all: false
|
|
174
|
-
}).name !== "server") {
|
|
175
|
-
this.onRepack({
|
|
176
|
-
routes: this.getRoutes()
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
});
|
|
180
|
-
this.addHandler((ctx, next) => {
|
|
181
|
-
const { req, res } = ctx;
|
|
182
|
-
if (devMiddleware.middleware) {
|
|
183
|
-
devMiddleware.middleware(req, res, next);
|
|
184
|
-
} else {
|
|
185
|
-
next();
|
|
186
|
-
}
|
|
187
|
-
});
|
|
188
|
-
if (dev.historyApiFallback) {
|
|
189
|
-
const { default: connectHistoryApiFallback } = await Promise.resolve().then(() => __toESM(require("connect-history-api-fallback")));
|
|
190
|
-
const historyApiFallbackMiddleware = connectHistoryApiFallback(typeof dev.historyApiFallback === "boolean" ? {} : dev.historyApiFallback);
|
|
191
|
-
this.addHandler((ctx, next) => historyApiFallbackMiddleware(ctx.req, ctx.res, next));
|
|
192
|
-
}
|
|
193
189
|
}
|
|
194
190
|
onRepack(options = {}) {
|
|
195
191
|
if (Array.isArray(options.routes)) {
|
|
196
192
|
this.router.reset(this.filterRoutes(options.routes));
|
|
197
193
|
}
|
|
198
194
|
this.cleanSSRCache();
|
|
199
|
-
|
|
195
|
+
import_fileReader.fileReader.reset();
|
|
200
196
|
this.runner.repack();
|
|
201
197
|
super.onRepack(options);
|
|
202
198
|
}
|
|
@@ -213,32 +209,6 @@ class ModernDevServer extends import_prod_server.ModernServer {
|
|
|
213
209
|
}
|
|
214
210
|
warmupSSRBundle() {
|
|
215
211
|
}
|
|
216
|
-
initReader() {
|
|
217
|
-
var _this_dev_devMiddleware, _this_dev;
|
|
218
|
-
let isInit = false;
|
|
219
|
-
if (this.devMiddleware && ((_this_dev = this.dev) === null || _this_dev === void 0 ? void 0 : (_this_dev_devMiddleware = _this_dev.devMiddleware) === null || _this_dev_devMiddleware === void 0 ? void 0 : _this_dev_devMiddleware.writeToDisk) === false) {
|
|
220
|
-
this.addHandler((ctx, next) => {
|
|
221
|
-
if (isInit) {
|
|
222
|
-
return next();
|
|
223
|
-
}
|
|
224
|
-
isInit = true;
|
|
225
|
-
if (!ctx.res.locals.webpack) {
|
|
226
|
-
this.reader.init();
|
|
227
|
-
return next();
|
|
228
|
-
}
|
|
229
|
-
const { devMiddleware: webpackDevMid } = ctx.res.locals.webpack;
|
|
230
|
-
const { outputFileSystem } = webpackDevMid;
|
|
231
|
-
if (outputFileSystem) {
|
|
232
|
-
this.reader.init(outputFileSystem);
|
|
233
|
-
} else {
|
|
234
|
-
this.reader.init();
|
|
235
|
-
}
|
|
236
|
-
return next();
|
|
237
|
-
});
|
|
238
|
-
} else {
|
|
239
|
-
super.initReader();
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
212
|
async onServerChange({ filepath, event }) {
|
|
243
213
|
const { pwd } = this;
|
|
244
214
|
const { mock } = import_prod_server.AGGRED_DIR;
|
|
@@ -273,28 +243,10 @@ class ModernDevServer extends import_prod_server.ModernServer {
|
|
|
273
243
|
});
|
|
274
244
|
}
|
|
275
245
|
setupStaticMiddleware(_) {
|
|
276
|
-
return async (
|
|
246
|
+
return async (_context, next) => {
|
|
277
247
|
return next();
|
|
278
248
|
};
|
|
279
249
|
}
|
|
280
|
-
async setupBeforeDevMiddleware() {
|
|
281
|
-
const { runner, conf, dev } = this;
|
|
282
|
-
const setupMids = dev.before || [];
|
|
283
|
-
const pluginMids = await runner.beforeDevServer(conf);
|
|
284
|
-
return [
|
|
285
|
-
...setupMids,
|
|
286
|
-
...pluginMids
|
|
287
|
-
].flat();
|
|
288
|
-
}
|
|
289
|
-
async setupAfterDevMiddleware() {
|
|
290
|
-
const { runner, conf, dev } = this;
|
|
291
|
-
const setupMids = dev.after || [];
|
|
292
|
-
const pluginMids = await runner.afterDevServer(conf);
|
|
293
|
-
return [
|
|
294
|
-
...pluginMids,
|
|
295
|
-
...setupMids
|
|
296
|
-
].flat();
|
|
297
|
-
}
|
|
298
250
|
cleanSSRCache() {
|
|
299
251
|
const { distDir } = this;
|
|
300
252
|
const bundles = this.router.getBundles();
|
|
@@ -350,16 +302,16 @@ class ModernDevServer extends import_prod_server.ModernServer {
|
|
|
350
302
|
(0, import_define_property._)(this, "dev", void 0);
|
|
351
303
|
(0, import_define_property._)(this, "useWorkerSSR", void 0);
|
|
352
304
|
(0, import_define_property._)(this, "appContext", void 0);
|
|
353
|
-
(0, import_define_property._)(this, "
|
|
305
|
+
(0, import_define_property._)(this, "getMiddlewares", void 0);
|
|
306
|
+
(0, import_define_property._)(this, "rsbuild", void 0);
|
|
354
307
|
(0, import_define_property._)(this, "watcher", void 0);
|
|
308
|
+
(0, import_define_property._)(this, "closeCb", []);
|
|
355
309
|
this.appContext = options.appContext;
|
|
356
310
|
this.workDir = this.pwd;
|
|
357
311
|
this.useWorkerSSR = Boolean(options.useWorkerSSR);
|
|
358
312
|
this.dev = this.getDevOptions(options);
|
|
359
|
-
this.
|
|
360
|
-
|
|
361
|
-
devMiddleware: options.devMiddleware
|
|
362
|
-
});
|
|
313
|
+
this.getMiddlewares = options.getMiddlewares;
|
|
314
|
+
this.rsbuild = options.rsbuild;
|
|
363
315
|
(0, import_register.enableRegister)(this.pwd, this.conf);
|
|
364
316
|
}
|
|
365
317
|
}
|