@modern-js/server 2.15.1-alpha.0 → 2.17.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/CHANGELOG.md +25 -0
- package/dist/cjs/constants.js +12 -28
- package/dist/cjs/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +14 -32
- package/dist/cjs/dev-tools/dev-middleware/hmr-client/index.js +24 -42
- package/dist/cjs/dev-tools/dev-middleware/index.js +45 -50
- package/dist/cjs/dev-tools/dev-middleware/socketServer.js +48 -46
- package/dist/cjs/dev-tools/https/index.js +21 -38
- package/dist/cjs/dev-tools/mock/getMockData.js +33 -33
- package/dist/cjs/dev-tools/mock/index.js +67 -47
- package/dist/cjs/dev-tools/register/index.js +59 -70
- package/dist/cjs/dev-tools/watcher/dependencyTree.js +52 -55
- package/dist/cjs/dev-tools/watcher/index.js +52 -53
- package/dist/cjs/dev-tools/watcher/statsCache.js +37 -47
- package/dist/cjs/index.js +16 -28
- package/dist/cjs/server/devServer.js +163 -109
- package/dist/cjs/server/index.js +11 -29
- package/dist/cjs/types.js +4 -15
- package/dist/esm/constants.js +19 -20
- package/dist/esm/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +43 -44
- package/dist/esm/dev-tools/dev-middleware/hmr-client/index.js +148 -157
- package/dist/esm/dev-tools/dev-middleware/index.js +307 -291
- package/dist/esm/dev-tools/dev-middleware/socketServer.js +216 -202
- package/dist/esm/dev-tools/https/index.js +189 -182
- package/dist/esm/dev-tools/mock/getMockData.js +297 -278
- package/dist/esm/dev-tools/mock/index.js +198 -192
- package/dist/esm/dev-tools/register/index.js +141 -141
- package/dist/esm/dev-tools/watcher/dependencyTree.js +153 -138
- package/dist/esm/dev-tools/watcher/index.js +187 -175
- package/dist/esm/dev-tools/watcher/statsCache.js +118 -116
- package/dist/esm/index.js +9 -8
- package/dist/esm/server/devServer.js +803 -766
- package/dist/esm/server/index.js +80 -76
- package/dist/esm/types.js +1 -1
- package/dist/esm-node/constants.js +4 -5
- package/dist/esm-node/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +2 -11
- package/dist/esm-node/dev-tools/dev-middleware/hmr-client/index.js +125 -139
- package/dist/esm-node/dev-tools/dev-middleware/index.js +31 -17
- package/dist/esm-node/dev-tools/dev-middleware/socketServer.js +33 -12
- package/dist/esm-node/dev-tools/https/index.js +13 -15
- package/dist/esm-node/dev-tools/mock/getMockData.js +20 -12
- package/dist/esm-node/dev-tools/mock/index.js +7 -7
- package/dist/esm-node/dev-tools/register/index.js +38 -29
- package/dist/esm-node/dev-tools/watcher/dependencyTree.js +32 -21
- package/dist/esm-node/dev-tools/watcher/index.js +31 -18
- package/dist/esm-node/dev-tools/watcher/statsCache.js +18 -8
- package/dist/esm-node/index.js +2 -5
- package/dist/esm-node/server/devServer.js +87 -62
- package/dist/esm-node/server/index.js +1 -4
- package/dist/esm-node/types.js +1 -0
- package/package.json +13 -9
- package/dist/js/modern/constants.js +0 -19
- package/dist/js/modern/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +0 -41
- package/dist/js/modern/dev-tools/dev-middleware/hmr-client/index.js +0 -143
- package/dist/js/modern/dev-tools/dev-middleware/index.js +0 -94
- package/dist/js/modern/dev-tools/dev-middleware/socket-server.js +0 -132
- package/dist/js/modern/dev-tools/https/index.js +0 -49
- package/dist/js/modern/dev-tools/mock/getMockData.js +0 -114
- package/dist/js/modern/dev-tools/mock/index.js +0 -54
- package/dist/js/modern/dev-tools/register/index.js +0 -111
- package/dist/js/modern/dev-tools/watcher/dependency-tree.js +0 -59
- package/dist/js/modern/dev-tools/watcher/index.js +0 -106
- package/dist/js/modern/dev-tools/watcher/stats-cache.js +0 -58
- package/dist/js/modern/index.js +0 -12
- package/dist/js/modern/server/dev-server.js +0 -293
- package/dist/js/modern/server/index.js +0 -16
- package/dist/js/modern/types.js +0 -0
- package/dist/js/node/constants.js +0 -42
- package/dist/js/node/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +0 -65
- package/dist/js/node/dev-tools/dev-middleware/hmr-client/index.js +0 -152
- package/dist/js/node/dev-tools/dev-middleware/index.js +0 -119
- package/dist/js/node/dev-tools/dev-middleware/socket-server.js +0 -159
- package/dist/js/node/dev-tools/https/index.js +0 -72
- package/dist/js/node/dev-tools/mock/getMockData.js +0 -135
- package/dist/js/node/dev-tools/mock/index.js +0 -83
- package/dist/js/node/dev-tools/register/index.js +0 -138
- package/dist/js/node/dev-tools/watcher/dependency-tree.js +0 -89
- package/dist/js/node/dev-tools/watcher/index.js +0 -135
- package/dist/js/node/dev-tools/watcher/stats-cache.js +0 -87
- package/dist/js/node/index.js +0 -35
- package/dist/js/node/server/dev-server.js +0 -310
- package/dist/js/node/server/index.js +0 -39
- package/dist/js/node/types.js +0 -15
- package/dist/js/treeshaking/constants.js +0 -21
- package/dist/js/treeshaking/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +0 -51
- package/dist/js/treeshaking/dev-tools/dev-middleware/hmr-client/index.js +0 -157
- package/dist/js/treeshaking/dev-tools/dev-middleware/index.js +0 -322
- package/dist/js/treeshaking/dev-tools/dev-middleware/socket-server.js +0 -209
- package/dist/js/treeshaking/dev-tools/https/index.js +0 -193
- package/dist/js/treeshaking/dev-tools/mock/getMockData.js +0 -327
- package/dist/js/treeshaking/dev-tools/mock/index.js +0 -191
- package/dist/js/treeshaking/dev-tools/register/index.js +0 -153
- package/dist/js/treeshaking/dev-tools/watcher/dependency-tree.js +0 -150
- package/dist/js/treeshaking/dev-tools/watcher/index.js +0 -200
- package/dist/js/treeshaking/dev-tools/watcher/stats-cache.js +0 -128
- package/dist/js/treeshaking/index.js +0 -9
- package/dist/js/treeshaking/server/dev-server.js +0 -799
- package/dist/js/treeshaking/server/index.js +0 -92
- package/dist/js/treeshaking/types.js +0 -1
|
@@ -1,17 +1,21 @@
|
|
|
1
|
+
function _define_property(obj, key, value) {
|
|
2
|
+
if (key in obj) {
|
|
3
|
+
Object.defineProperty(obj, key, {
|
|
4
|
+
value,
|
|
5
|
+
enumerable: true,
|
|
6
|
+
configurable: true,
|
|
7
|
+
writable: true
|
|
8
|
+
});
|
|
9
|
+
} else {
|
|
10
|
+
obj[key] = value;
|
|
11
|
+
}
|
|
12
|
+
return obj;
|
|
13
|
+
}
|
|
1
14
|
import { createServer } from "http";
|
|
2
15
|
import path from "path";
|
|
3
16
|
import { createServer as createHttpsServer } from "https";
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
SERVER_BUNDLE_DIRECTORY,
|
|
7
|
-
SERVER_DIR,
|
|
8
|
-
SHARED_DIR
|
|
9
|
-
} from "@modern-js/utils";
|
|
10
|
-
import {
|
|
11
|
-
createProxyHandler,
|
|
12
|
-
ModernServer,
|
|
13
|
-
AGGRED_DIR
|
|
14
|
-
} from "@modern-js/prod-server";
|
|
17
|
+
import { API_DIR, SERVER_BUNDLE_DIRECTORY, SERVER_DIR, SHARED_DIR } from "@modern-js/utils";
|
|
18
|
+
import { createProxyHandler, ModernServer, AGGRED_DIR } from "@modern-js/prod-server";
|
|
15
19
|
import { LOADABLE_STATS_FILE } from "@modern-js/utils/constants";
|
|
16
20
|
import { merge as deepMerge } from "@modern-js/utils/lodash";
|
|
17
21
|
import { getDefaultDevOptions } from "../constants";
|
|
@@ -19,19 +23,7 @@ import { createMockHandler } from "../dev-tools/mock";
|
|
|
19
23
|
import { enableRegister } from "../dev-tools/register";
|
|
20
24
|
import Watcher, { mergeWatchOptions } from "../dev-tools/watcher";
|
|
21
25
|
import DevMiddleware from "../dev-tools/dev-middleware";
|
|
22
|
-
class ModernDevServer extends ModernServer {
|
|
23
|
-
constructor(options) {
|
|
24
|
-
super(options);
|
|
25
|
-
this.mockHandler = null;
|
|
26
|
-
this.appContext = options.appContext;
|
|
27
|
-
this.workDir = this.pwd;
|
|
28
|
-
this.dev = this.getDevOptions(options);
|
|
29
|
-
this.devMiddleware = new DevMiddleware({
|
|
30
|
-
dev: this.dev,
|
|
31
|
-
devMiddleware: options.devMiddleware
|
|
32
|
-
});
|
|
33
|
-
enableRegister(this.pwd, this.conf);
|
|
34
|
-
}
|
|
26
|
+
export class ModernDevServer extends ModernServer {
|
|
35
27
|
getDevOptions(options) {
|
|
36
28
|
const devOptions = typeof options.dev === "boolean" ? {} : options.dev;
|
|
37
29
|
const defaultOptions = getDefaultDevOptions();
|
|
@@ -53,15 +45,15 @@ class ModernDevServer extends ModernServer {
|
|
|
53
45
|
const befores = [];
|
|
54
46
|
const afters = [];
|
|
55
47
|
setupMiddlewares.forEach((handler) => {
|
|
56
|
-
handler(
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
},
|
|
61
|
-
serverOptions
|
|
62
|
-
);
|
|
48
|
+
handler({
|
|
49
|
+
unshift: (...handlers) => befores.unshift(...handlers),
|
|
50
|
+
push: (...handlers) => afters.push(...handlers)
|
|
51
|
+
}, serverOptions);
|
|
63
52
|
});
|
|
64
|
-
return {
|
|
53
|
+
return {
|
|
54
|
+
befores,
|
|
55
|
+
afters
|
|
56
|
+
};
|
|
65
57
|
}
|
|
66
58
|
// Complete the preparation of services
|
|
67
59
|
async onInit(runner, app) {
|
|
@@ -69,16 +61,22 @@ class ModernDevServer extends ModernServer {
|
|
|
69
61
|
const { dev } = this;
|
|
70
62
|
const { befores, afters } = this.applySetupMiddlewares();
|
|
71
63
|
const beforeHandlers = await this.setupBeforeDevMiddleware();
|
|
72
|
-
this.addMiddlewareHandler([
|
|
64
|
+
this.addMiddlewareHandler([
|
|
65
|
+
...beforeHandlers,
|
|
66
|
+
...befores
|
|
67
|
+
]);
|
|
73
68
|
await this.applyDefaultMiddlewares(app);
|
|
74
69
|
const afterHandlers = await this.setupAfterDevMiddleware();
|
|
75
|
-
this.addMiddlewareHandler([
|
|
70
|
+
this.addMiddlewareHandler([
|
|
71
|
+
...afters,
|
|
72
|
+
...afterHandlers
|
|
73
|
+
]);
|
|
76
74
|
await super.onInit(runner, app);
|
|
77
75
|
if (dev.watch) {
|
|
78
76
|
this.startWatcher();
|
|
79
77
|
app.on("close", async () => {
|
|
80
|
-
var
|
|
81
|
-
await ((
|
|
78
|
+
var _this_watcher;
|
|
79
|
+
await ((_this_watcher = this.watcher) === null || _this_watcher === void 0 ? void 0 : _this_watcher.close());
|
|
82
80
|
});
|
|
83
81
|
}
|
|
84
82
|
}
|
|
@@ -97,7 +95,9 @@ class ModernDevServer extends ModernServer {
|
|
|
97
95
|
}
|
|
98
96
|
next();
|
|
99
97
|
});
|
|
100
|
-
this.mockHandler = createMockHandler({
|
|
98
|
+
this.mockHandler = createMockHandler({
|
|
99
|
+
pwd
|
|
100
|
+
});
|
|
101
101
|
this.addHandler((ctx, next) => {
|
|
102
102
|
if (this.mockHandler) {
|
|
103
103
|
this.mockHandler(ctx, next);
|
|
@@ -113,8 +113,12 @@ class ModernDevServer extends ModernServer {
|
|
|
113
113
|
}
|
|
114
114
|
devMiddleware.init(app);
|
|
115
115
|
devMiddleware.on("change", (stats) => {
|
|
116
|
-
if (stats.toJson({
|
|
117
|
-
|
|
116
|
+
if (stats.toJson({
|
|
117
|
+
all: false
|
|
118
|
+
}).name !== "server") {
|
|
119
|
+
this.onRepack({
|
|
120
|
+
routes: this.getRoutes()
|
|
121
|
+
});
|
|
118
122
|
}
|
|
119
123
|
});
|
|
120
124
|
this.addHandler((ctx, next) => {
|
|
@@ -127,12 +131,8 @@ class ModernDevServer extends ModernServer {
|
|
|
127
131
|
});
|
|
128
132
|
if (dev.historyApiFallback) {
|
|
129
133
|
const { default: connectHistoryApiFallback } = await import("connect-history-api-fallback");
|
|
130
|
-
const historyApiFallbackMiddleware = connectHistoryApiFallback(
|
|
131
|
-
|
|
132
|
-
);
|
|
133
|
-
this.addHandler(
|
|
134
|
-
(ctx, next) => historyApiFallbackMiddleware(ctx.req, ctx.res, next)
|
|
135
|
-
);
|
|
134
|
+
const historyApiFallbackMiddleware = connectHistoryApiFallback(typeof dev.historyApiFallback === "boolean" ? {} : dev.historyApiFallback);
|
|
135
|
+
this.addHandler((ctx, next) => historyApiFallbackMiddleware(ctx.req, ctx.res, next));
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
138
|
onRepack(options = {}) {
|
|
@@ -157,23 +157,27 @@ class ModernDevServer extends ModernServer {
|
|
|
157
157
|
}
|
|
158
158
|
warmupSSRBundle() {
|
|
159
159
|
}
|
|
160
|
-
async onServerChange({
|
|
161
|
-
filepath,
|
|
162
|
-
event
|
|
163
|
-
}) {
|
|
160
|
+
async onServerChange({ filepath, event }) {
|
|
164
161
|
const { pwd } = this;
|
|
165
162
|
const { mock } = AGGRED_DIR;
|
|
166
163
|
const mockPath = path.normalize(path.join(pwd, mock));
|
|
167
164
|
this.runner.reset();
|
|
168
165
|
if (filepath.startsWith(mockPath)) {
|
|
169
|
-
this.mockHandler = createMockHandler({
|
|
166
|
+
this.mockHandler = createMockHandler({
|
|
167
|
+
pwd
|
|
168
|
+
});
|
|
170
169
|
} else {
|
|
171
170
|
try {
|
|
172
171
|
const success = this.runner.onApiChange([
|
|
173
|
-
{
|
|
172
|
+
{
|
|
173
|
+
filename: filepath,
|
|
174
|
+
event
|
|
175
|
+
}
|
|
174
176
|
]);
|
|
175
177
|
if (success !== true) {
|
|
176
|
-
await super.onServerChange({
|
|
178
|
+
await super.onServerChange({
|
|
179
|
+
filepath
|
|
180
|
+
});
|
|
177
181
|
}
|
|
178
182
|
} catch (e) {
|
|
179
183
|
this.logger.error(e);
|
|
@@ -181,7 +185,9 @@ class ModernDevServer extends ModernServer {
|
|
|
181
185
|
}
|
|
182
186
|
}
|
|
183
187
|
createContext(req, res) {
|
|
184
|
-
return super.createContext(req, res, {
|
|
188
|
+
return super.createContext(req, res, {
|
|
189
|
+
etag: true
|
|
190
|
+
});
|
|
185
191
|
}
|
|
186
192
|
setupStaticMiddleware(_) {
|
|
187
193
|
return async (context, next) => {
|
|
@@ -192,13 +198,19 @@ class ModernDevServer extends ModernServer {
|
|
|
192
198
|
const { runner, conf, dev } = this;
|
|
193
199
|
const setupMids = dev.before || [];
|
|
194
200
|
const pluginMids = await runner.beforeDevServer(conf);
|
|
195
|
-
return [
|
|
201
|
+
return [
|
|
202
|
+
...setupMids,
|
|
203
|
+
...pluginMids
|
|
204
|
+
].flat();
|
|
196
205
|
}
|
|
197
206
|
async setupAfterDevMiddleware() {
|
|
198
207
|
const { runner, conf, dev } = this;
|
|
199
208
|
const setupMids = dev.after || [];
|
|
200
209
|
const pluginMids = await runner.afterDevServer(conf);
|
|
201
|
-
return [
|
|
210
|
+
return [
|
|
211
|
+
...pluginMids,
|
|
212
|
+
...setupMids
|
|
213
|
+
].flat();
|
|
202
214
|
}
|
|
203
215
|
cleanSSRCache() {
|
|
204
216
|
const { distDir } = this;
|
|
@@ -215,11 +227,11 @@ class ModernDevServer extends ModernServer {
|
|
|
215
227
|
}
|
|
216
228
|
}
|
|
217
229
|
startWatcher() {
|
|
218
|
-
var
|
|
230
|
+
var _this_conf_server;
|
|
219
231
|
const { pwd, distDir, appContext } = this;
|
|
220
232
|
const { mock } = AGGRED_DIR;
|
|
221
|
-
const apiDir = (appContext
|
|
222
|
-
const sharedDir = (appContext
|
|
233
|
+
const apiDir = (appContext === null || appContext === void 0 ? void 0 : appContext.apiDirectory) || API_DIR;
|
|
234
|
+
const sharedDir = (appContext === null || appContext === void 0 ? void 0 : appContext.sharedDirectory) || SHARED_DIR;
|
|
223
235
|
const defaultWatched = [
|
|
224
236
|
`${mock}/**/*`,
|
|
225
237
|
`${SERVER_DIR}/**/*`,
|
|
@@ -227,7 +239,7 @@ class ModernDevServer extends ModernServer {
|
|
|
227
239
|
`${sharedDir}/**/*`,
|
|
228
240
|
`${distDir}/${SERVER_BUNDLE_DIRECTORY}/*-server-loaders.js`
|
|
229
241
|
];
|
|
230
|
-
const watchOptions = mergeWatchOptions((
|
|
242
|
+
const watchOptions = mergeWatchOptions((_this_conf_server = this.conf.server) === null || _this_conf_server === void 0 ? void 0 : _this_conf_server.watchOptions);
|
|
231
243
|
const defaultWatchedPaths = defaultWatched.map((p) => {
|
|
232
244
|
const finalPath = path.isAbsolute(p) ? p : path.join(pwd, p);
|
|
233
245
|
return path.normalize(finalPath);
|
|
@@ -248,7 +260,20 @@ class ModernDevServer extends ModernServer {
|
|
|
248
260
|
});
|
|
249
261
|
this.watcher = watcher;
|
|
250
262
|
}
|
|
263
|
+
constructor(options) {
|
|
264
|
+
super(options);
|
|
265
|
+
_define_property(this, "mockHandler", null);
|
|
266
|
+
_define_property(this, "dev", void 0);
|
|
267
|
+
_define_property(this, "appContext", void 0);
|
|
268
|
+
_define_property(this, "devMiddleware", void 0);
|
|
269
|
+
_define_property(this, "watcher", void 0);
|
|
270
|
+
this.appContext = options.appContext;
|
|
271
|
+
this.workDir = this.pwd;
|
|
272
|
+
this.dev = this.getDevOptions(options);
|
|
273
|
+
this.devMiddleware = new DevMiddleware({
|
|
274
|
+
dev: this.dev,
|
|
275
|
+
devMiddleware: options.devMiddleware
|
|
276
|
+
});
|
|
277
|
+
enableRegister(this.pwd, this.conf);
|
|
278
|
+
}
|
|
251
279
|
}
|
|
252
|
-
export {
|
|
253
|
-
ModernDevServer
|
|
254
|
-
};
|
|
@@ -3,7 +3,7 @@ import { ModernDevServer } from "./devServer";
|
|
|
3
3
|
const createDevServer = (options) => {
|
|
4
4
|
return new ModernDevServer(options);
|
|
5
5
|
};
|
|
6
|
-
class DevServer extends Server {
|
|
6
|
+
export class DevServer extends Server {
|
|
7
7
|
constructor(options) {
|
|
8
8
|
super(options);
|
|
9
9
|
if (options.dev) {
|
|
@@ -11,6 +11,3 @@ class DevServer extends Server {
|
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
-
export {
|
|
15
|
-
DevServer
|
|
16
|
-
};
|
package/dist/esm-node/types.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
CHANGED
|
@@ -3,7 +3,11 @@
|
|
|
3
3
|
"description": "A Progressive React Framework for modern web development.",
|
|
4
4
|
"homepage": "https://modernjs.dev",
|
|
5
5
|
"bugs": "https://github.com/web-infra-dev/modern.js/issues",
|
|
6
|
-
"repository":
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/web-infra-dev/modern.js",
|
|
9
|
+
"directory": "packages/server/server"
|
|
10
|
+
},
|
|
7
11
|
"license": "MIT",
|
|
8
12
|
"keywords": [
|
|
9
13
|
"react",
|
|
@@ -11,7 +15,7 @@
|
|
|
11
15
|
"modern",
|
|
12
16
|
"modern.js"
|
|
13
17
|
],
|
|
14
|
-
"version": "2.
|
|
18
|
+
"version": "2.17.0",
|
|
15
19
|
"jsnext:source": "./src/index.ts",
|
|
16
20
|
"types": "./dist/types/index.d.ts",
|
|
17
21
|
"main": "./dist/cjs/index.js",
|
|
@@ -41,10 +45,10 @@
|
|
|
41
45
|
"minimatch": "^3.0.4",
|
|
42
46
|
"path-to-regexp": "^6.2.0",
|
|
43
47
|
"ws": "^8.2.0",
|
|
44
|
-
"@modern-js/prod-server": "2.
|
|
45
|
-
"@modern-js/
|
|
46
|
-
"@modern-js/
|
|
47
|
-
"@modern-js/
|
|
48
|
+
"@modern-js/prod-server": "2.17.0",
|
|
49
|
+
"@modern-js/server-utils": "2.17.0",
|
|
50
|
+
"@modern-js/types": "2.17.0",
|
|
51
|
+
"@modern-js/utils": "2.17.0"
|
|
48
52
|
},
|
|
49
53
|
"devDependencies": {
|
|
50
54
|
"@types/connect-history-api-fallback": "^1.3.5",
|
|
@@ -59,9 +63,9 @@
|
|
|
59
63
|
"typescript": "^4",
|
|
60
64
|
"webpack": "^5.76.2",
|
|
61
65
|
"websocket": "^1",
|
|
62
|
-
"@
|
|
63
|
-
"@
|
|
64
|
-
"@scripts/
|
|
66
|
+
"@modern-js/server-core": "2.17.0",
|
|
67
|
+
"@scripts/jest-config": "2.17.0",
|
|
68
|
+
"@scripts/build": "2.17.0"
|
|
65
69
|
},
|
|
66
70
|
"peerDependencies": {
|
|
67
71
|
"devcert": "^1.0.0",
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { getIpv4Interfaces, HMR_SOCK_PATH } from "@modern-js/utils";
|
|
2
|
-
const getDefaultDevOptions = () => {
|
|
3
|
-
const network = getIpv4Interfaces().find((item) => !item.internal);
|
|
4
|
-
return {
|
|
5
|
-
client: {
|
|
6
|
-
port: "8080",
|
|
7
|
-
path: HMR_SOCK_PATH,
|
|
8
|
-
host: (network == null ? void 0 : network.address) || "localhost"
|
|
9
|
-
},
|
|
10
|
-
https: false,
|
|
11
|
-
devMiddleware: { writeToDisk: true },
|
|
12
|
-
watch: true,
|
|
13
|
-
hot: true,
|
|
14
|
-
liveReload: true
|
|
15
|
-
};
|
|
16
|
-
};
|
|
17
|
-
export {
|
|
18
|
-
getDefaultDevOptions
|
|
19
|
-
};
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { HMR_SOCK_PATH } from "@modern-js/utils/constants";
|
|
2
|
-
function createSocketUrl(resourceQuery) {
|
|
3
|
-
const searchParams = resourceQuery.substr(1).split("&");
|
|
4
|
-
const options = {};
|
|
5
|
-
for (const pair of searchParams) {
|
|
6
|
-
const ary = pair.split("=");
|
|
7
|
-
options[ary[0]] = decodeURIComponent(ary[1]);
|
|
8
|
-
}
|
|
9
|
-
const currentLocation = self.location;
|
|
10
|
-
return getSocketUrl(options, currentLocation);
|
|
11
|
-
}
|
|
12
|
-
function formatURL({
|
|
13
|
-
port,
|
|
14
|
-
protocol,
|
|
15
|
-
hostname,
|
|
16
|
-
pathname
|
|
17
|
-
}) {
|
|
18
|
-
if (window.URL) {
|
|
19
|
-
const url = new URL("http://localhost");
|
|
20
|
-
url.port = port;
|
|
21
|
-
url.hostname = hostname;
|
|
22
|
-
url.protocol = protocol;
|
|
23
|
-
url.pathname = pathname;
|
|
24
|
-
return url.toString();
|
|
25
|
-
}
|
|
26
|
-
const colon = protocol.indexOf(":") === -1 ? ":" : "";
|
|
27
|
-
return `${protocol}${colon}//${hostname}:${port}${pathname}`;
|
|
28
|
-
}
|
|
29
|
-
function getSocketUrl(urlParts, location) {
|
|
30
|
-
const { host, port, path, protocol } = urlParts;
|
|
31
|
-
return formatURL({
|
|
32
|
-
protocol: protocol || (location.protocol === "https:" ? "wss" : "ws"),
|
|
33
|
-
hostname: host || location.hostname,
|
|
34
|
-
port: port || location.port,
|
|
35
|
-
pathname: path || HMR_SOCK_PATH
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
export {
|
|
39
|
-
createSocketUrl,
|
|
40
|
-
formatURL
|
|
41
|
-
};
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
2
|
-
var __commonJS = (cb, mod) => function __require() {
|
|
3
|
-
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
4
|
-
};
|
|
5
|
-
import stripAnsi from "@modern-js/utils/strip-ansi";
|
|
6
|
-
import { formatWebpackMessages } from "@modern-js/utils/format";
|
|
7
|
-
import { createSocketUrl } from "./createSocketUrl";
|
|
8
|
-
var require_hmr_client = __commonJS({
|
|
9
|
-
"src/dev-tools/dev-middleware/hmr-client/index.ts"(exports, module) {
|
|
10
|
-
const hadRuntimeError = false;
|
|
11
|
-
const socketUrl = createSocketUrl(__resourceQuery);
|
|
12
|
-
const connection = new WebSocket(socketUrl);
|
|
13
|
-
connection.onclose = function() {
|
|
14
|
-
if (typeof console !== "undefined" && typeof console.info === "function") {
|
|
15
|
-
console.info(
|
|
16
|
-
"The development server has disconnected.\nRefresh the page if necessary."
|
|
17
|
-
);
|
|
18
|
-
}
|
|
19
|
-
};
|
|
20
|
-
let isFirstCompilation = true;
|
|
21
|
-
let mostRecentCompilationHash = null;
|
|
22
|
-
let hasCompileErrors = false;
|
|
23
|
-
function clearOutdatedErrors() {
|
|
24
|
-
if (typeof console !== "undefined" && typeof console.clear === "function") {
|
|
25
|
-
if (hasCompileErrors) {
|
|
26
|
-
console.clear();
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
function handleSuccess() {
|
|
31
|
-
clearOutdatedErrors();
|
|
32
|
-
const isHotUpdate = !isFirstCompilation;
|
|
33
|
-
isFirstCompilation = false;
|
|
34
|
-
hasCompileErrors = false;
|
|
35
|
-
if (isHotUpdate) {
|
|
36
|
-
tryApplyUpdates();
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
function handleWarnings(warnings) {
|
|
40
|
-
clearOutdatedErrors();
|
|
41
|
-
const isHotUpdate = !isFirstCompilation;
|
|
42
|
-
isFirstCompilation = false;
|
|
43
|
-
hasCompileErrors = false;
|
|
44
|
-
function printWarnings() {
|
|
45
|
-
const formatted = formatWebpackMessages({
|
|
46
|
-
warnings,
|
|
47
|
-
errors: []
|
|
48
|
-
});
|
|
49
|
-
if (typeof console !== "undefined" && typeof console.warn === "function") {
|
|
50
|
-
for (let i = 0; i < formatted.warnings.length; i++) {
|
|
51
|
-
if (i === 5) {
|
|
52
|
-
console.warn(
|
|
53
|
-
"There were more warnings in other files.\nYou can find a complete log in the terminal."
|
|
54
|
-
);
|
|
55
|
-
break;
|
|
56
|
-
}
|
|
57
|
-
console.warn(stripAnsi(formatted.warnings[i]));
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
printWarnings();
|
|
62
|
-
if (isHotUpdate) {
|
|
63
|
-
tryApplyUpdates();
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
function handleErrors(errors) {
|
|
67
|
-
clearOutdatedErrors();
|
|
68
|
-
isFirstCompilation = false;
|
|
69
|
-
hasCompileErrors = true;
|
|
70
|
-
const formatted = formatWebpackMessages({
|
|
71
|
-
errors,
|
|
72
|
-
warnings: []
|
|
73
|
-
});
|
|
74
|
-
if (typeof console !== "undefined" && typeof console.error === "function") {
|
|
75
|
-
for (const error of formatted.errors) {
|
|
76
|
-
console.error(stripAnsi(error));
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
function handleAvailableHash(hash) {
|
|
81
|
-
mostRecentCompilationHash = hash;
|
|
82
|
-
}
|
|
83
|
-
connection.onmessage = function(e) {
|
|
84
|
-
const message = JSON.parse(e.data);
|
|
85
|
-
switch (message.type) {
|
|
86
|
-
case "hash":
|
|
87
|
-
handleAvailableHash(message.data);
|
|
88
|
-
break;
|
|
89
|
-
case "still-ok":
|
|
90
|
-
case "ok":
|
|
91
|
-
handleSuccess();
|
|
92
|
-
break;
|
|
93
|
-
case "content-changed":
|
|
94
|
-
window.location.reload();
|
|
95
|
-
break;
|
|
96
|
-
case "warnings":
|
|
97
|
-
handleWarnings(message.data);
|
|
98
|
-
break;
|
|
99
|
-
case "errors":
|
|
100
|
-
handleErrors(message.data);
|
|
101
|
-
break;
|
|
102
|
-
default:
|
|
103
|
-
}
|
|
104
|
-
};
|
|
105
|
-
function isUpdateAvailable() {
|
|
106
|
-
return mostRecentCompilationHash !== __webpack_hash__;
|
|
107
|
-
}
|
|
108
|
-
function canApplyUpdates() {
|
|
109
|
-
return module.hot.status() === "idle";
|
|
110
|
-
}
|
|
111
|
-
function tryApplyUpdates() {
|
|
112
|
-
if (!module.hot) {
|
|
113
|
-
window.location.reload();
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
if (!isUpdateAvailable() || !canApplyUpdates()) {
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
function handleApplyUpdates(err, updatedModules) {
|
|
120
|
-
const wantsForcedReload = err || !updatedModules || hadRuntimeError;
|
|
121
|
-
if (wantsForcedReload) {
|
|
122
|
-
window.location.reload();
|
|
123
|
-
return;
|
|
124
|
-
}
|
|
125
|
-
if (isUpdateAvailable()) {
|
|
126
|
-
tryApplyUpdates();
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
const result = module.hot.check(true, handleApplyUpdates);
|
|
130
|
-
if (result == null ? void 0 : result.then) {
|
|
131
|
-
result.then(
|
|
132
|
-
(updatedModules) => {
|
|
133
|
-
handleApplyUpdates(null, updatedModules);
|
|
134
|
-
},
|
|
135
|
-
(err) => {
|
|
136
|
-
handleApplyUpdates(err, null);
|
|
137
|
-
}
|
|
138
|
-
);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
export default require_hmr_client();
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
3
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
4
|
-
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
5
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
6
|
-
var __spreadValues = (a, b) => {
|
|
7
|
-
for (var prop in b || (b = {}))
|
|
8
|
-
if (__hasOwnProp.call(b, prop))
|
|
9
|
-
__defNormalProp(a, prop, b[prop]);
|
|
10
|
-
if (__getOwnPropSymbols)
|
|
11
|
-
for (var prop of __getOwnPropSymbols(b)) {
|
|
12
|
-
if (__propIsEnum.call(b, prop))
|
|
13
|
-
__defNormalProp(a, prop, b[prop]);
|
|
14
|
-
}
|
|
15
|
-
return a;
|
|
16
|
-
};
|
|
17
|
-
var __async = (__this, __arguments, generator) => {
|
|
18
|
-
return new Promise((resolve, reject) => {
|
|
19
|
-
var fulfilled = (value) => {
|
|
20
|
-
try {
|
|
21
|
-
step(generator.next(value));
|
|
22
|
-
} catch (e) {
|
|
23
|
-
reject(e);
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
var rejected = (value) => {
|
|
27
|
-
try {
|
|
28
|
-
step(generator.throw(value));
|
|
29
|
-
} catch (e) {
|
|
30
|
-
reject(e);
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
34
|
-
step((generator = generator.apply(__this, __arguments)).next());
|
|
35
|
-
});
|
|
36
|
-
};
|
|
37
|
-
import { EventEmitter } from "events";
|
|
38
|
-
import SocketServer from "./socket-server";
|
|
39
|
-
const noop = () => {
|
|
40
|
-
};
|
|
41
|
-
function getHMRClientPath(client) {
|
|
42
|
-
const protocol = (client == null ? void 0 : client.protocol) ? `&protocol=${client.protocol}` : "";
|
|
43
|
-
const host = (client == null ? void 0 : client.host) ? `&host=${client.host}` : "";
|
|
44
|
-
const path = (client == null ? void 0 : client.path) ? `&path=${client.path}` : "";
|
|
45
|
-
const port = (client == null ? void 0 : client.port) ? `&port=${client.port}` : "";
|
|
46
|
-
const clientEntry = `${require.resolve("./hmr-client")}?${host}${path}${port}${protocol}`;
|
|
47
|
-
return clientEntry;
|
|
48
|
-
}
|
|
49
|
-
class DevMiddleware extends EventEmitter {
|
|
50
|
-
constructor({ dev, devMiddleware }) {
|
|
51
|
-
super();
|
|
52
|
-
this.devOptions = dev;
|
|
53
|
-
this.socketServer = new SocketServer(dev);
|
|
54
|
-
if (devMiddleware) {
|
|
55
|
-
this.middleware = this.setupDevMiddleware(devMiddleware);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
init(app) {
|
|
59
|
-
app.on("listening", () => {
|
|
60
|
-
this.socketServer.prepare(app);
|
|
61
|
-
});
|
|
62
|
-
app.on("close", () => __async(this, null, function* () {
|
|
63
|
-
var _a;
|
|
64
|
-
(_a = this.middleware) == null ? void 0 : _a.close(noop);
|
|
65
|
-
this.socketServer.close();
|
|
66
|
-
}));
|
|
67
|
-
}
|
|
68
|
-
sockWrite(type, data) {
|
|
69
|
-
this.socketServer.sockWrite(type, data);
|
|
70
|
-
}
|
|
71
|
-
setupDevMiddleware(devMiddleware) {
|
|
72
|
-
const { devOptions } = this;
|
|
73
|
-
const callbacks = {
|
|
74
|
-
onInvalid: () => {
|
|
75
|
-
this.socketServer.sockWrite("invalid");
|
|
76
|
-
},
|
|
77
|
-
onDone: (stats) => {
|
|
78
|
-
this.socketServer.updateStats(stats);
|
|
79
|
-
this.emit("change", stats);
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
const enableHMR = this.devOptions.hot || this.devOptions.liveReload;
|
|
83
|
-
const middleware = devMiddleware(__spreadValues({
|
|
84
|
-
headers: devOptions.headers,
|
|
85
|
-
stats: false,
|
|
86
|
-
callbacks,
|
|
87
|
-
hmrClientPath: enableHMR ? getHMRClientPath(devOptions.client) : void 0
|
|
88
|
-
}, devOptions.devMiddleware));
|
|
89
|
-
return middleware;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
export {
|
|
93
|
-
DevMiddleware as default
|
|
94
|
-
};
|