@modern-js/server 2.0.0-beta.3 → 2.0.0-beta.4

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.
Files changed (62) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/dist/js/modern/constants.js +10 -9
  3. package/dist/js/modern/dev-tools/dev-middleware/dev-server-plugin.js +14 -20
  4. package/dist/js/modern/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +14 -19
  5. package/dist/js/modern/dev-tools/dev-middleware/hmr-client/index.js +134 -184
  6. package/dist/js/modern/dev-tools/dev-middleware/hmr-client/types.d.js +0 -0
  7. package/dist/js/modern/dev-tools/dev-middleware/index.js +65 -60
  8. package/dist/js/modern/dev-tools/dev-middleware/socket-server.js +33 -59
  9. package/dist/js/modern/dev-tools/https/global.d.js +0 -0
  10. package/dist/js/modern/dev-tools/https/index.js +28 -5
  11. package/dist/js/modern/dev-tools/mock/getMockData.js +71 -45
  12. package/dist/js/modern/dev-tools/mock/index.js +34 -15
  13. package/dist/js/modern/dev-tools/register/index.js +71 -54
  14. package/dist/js/modern/dev-tools/watcher/dependency-tree.js +25 -34
  15. package/dist/js/modern/dev-tools/watcher/index.js +51 -33
  16. package/dist/js/modern/dev-tools/watcher/stats-cache.js +13 -20
  17. package/dist/js/modern/index.js +7 -4
  18. package/dist/js/modern/server/dev-server.js +191 -215
  19. package/dist/js/modern/server/index.js +7 -4
  20. package/dist/js/node/constants.js +27 -14
  21. package/dist/js/node/dev-tools/dev-middleware/dev-server-plugin.js +36 -24
  22. package/dist/js/node/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +31 -24
  23. package/dist/js/node/dev-tools/dev-middleware/hmr-client/index.js +56 -98
  24. package/dist/js/node/dev-tools/dev-middleware/hmr-client/types.d.js +0 -0
  25. package/dist/js/node/dev-tools/dev-middleware/index.js +94 -72
  26. package/dist/js/node/dev-tools/dev-middleware/socket-server.js +57 -66
  27. package/dist/js/node/dev-tools/https/global.d.js +0 -0
  28. package/dist/js/node/dev-tools/https/index.js +52 -13
  29. package/dist/js/node/dev-tools/mock/getMockData.js +88 -51
  30. package/dist/js/node/dev-tools/mock/index.js +62 -28
  31. package/dist/js/node/dev-tools/register/index.js +98 -64
  32. package/dist/js/node/dev-tools/watcher/dependency-tree.js +50 -43
  33. package/dist/js/node/dev-tools/watcher/index.js +79 -47
  34. package/dist/js/node/dev-tools/watcher/stats-cache.js +40 -30
  35. package/dist/js/node/index.js +25 -15
  36. package/dist/js/node/server/dev-server.js +234 -237
  37. package/dist/js/node/server/index.js +26 -11
  38. package/dist/js/treeshaking/constants.js +21 -0
  39. package/dist/js/treeshaking/dev-tools/dev-middleware/dev-server-plugin.js +74 -0
  40. package/dist/js/treeshaking/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +51 -0
  41. package/dist/js/treeshaking/dev-tools/dev-middleware/hmr-client/index.js +157 -0
  42. package/dist/js/treeshaking/dev-tools/dev-middleware/hmr-client/types.d.js +1 -0
  43. package/dist/js/treeshaking/dev-tools/dev-middleware/index.js +363 -0
  44. package/dist/js/treeshaking/dev-tools/dev-middleware/socket-server.js +209 -0
  45. package/dist/js/treeshaking/dev-tools/https/global.d.js +1 -0
  46. package/dist/js/treeshaking/dev-tools/https/index.js +161 -0
  47. package/dist/js/treeshaking/dev-tools/mock/getMockData.js +327 -0
  48. package/dist/js/treeshaking/dev-tools/mock/index.js +191 -0
  49. package/dist/js/treeshaking/dev-tools/register/index.js +153 -0
  50. package/dist/js/treeshaking/dev-tools/watcher/dependency-tree.js +150 -0
  51. package/dist/js/treeshaking/dev-tools/watcher/index.js +200 -0
  52. package/dist/js/treeshaking/dev-tools/watcher/stats-cache.js +128 -0
  53. package/dist/js/treeshaking/index.js +9 -0
  54. package/dist/js/treeshaking/server/dev-server.js +800 -0
  55. package/dist/js/treeshaking/server/index.js +92 -0
  56. package/dist/js/treeshaking/types.js +1 -0
  57. package/dist/types/dev-tools/mock/getMockData.d.ts +2 -0
  58. package/dist/types/dev-tools/watcher/dependency-tree.d.ts +2 -0
  59. package/dist/types/dev-tools/watcher/index.d.ts +1 -1
  60. package/dist/types/index.d.ts +2 -0
  61. package/package.json +16 -13
  62. package/temp-fix-hmr.js +483 -0
@@ -1,32 +1,71 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
- import { createServer } from 'http';
5
- import path from 'path';
6
- import { createServer as createHttpsServer } from 'https';
7
- import { API_DIR, LOADER_ROUTES_DIR, SERVER_DIR, SHARED_DIR } from '@modern-js/utils';
8
- import { createProxyHandler, ModernServer, AGGRED_DIR } from '@modern-js/prod-server';
9
- import { LOADABLE_STATS_FILE } from '@modern-js/utils/constants';
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
8
+ var __reflectGet = Reflect.get;
9
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
+ var __spreadValues = (a, b) => {
11
+ for (var prop in b || (b = {}))
12
+ if (__hasOwnProp.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ if (__getOwnPropSymbols)
15
+ for (var prop of __getOwnPropSymbols(b)) {
16
+ if (__propIsEnum.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ }
19
+ return a;
20
+ };
21
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
22
+ var __superGet = (cls, obj, key) => __reflectGet(__getProtoOf(cls), key, obj);
23
+ var __async = (__this, __arguments, generator) => {
24
+ return new Promise((resolve, reject) => {
25
+ var fulfilled = (value) => {
26
+ try {
27
+ step(generator.next(value));
28
+ } catch (e) {
29
+ reject(e);
30
+ }
31
+ };
32
+ var rejected = (value) => {
33
+ try {
34
+ step(generator.throw(value));
35
+ } catch (e) {
36
+ reject(e);
37
+ }
38
+ };
39
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
40
+ step((generator = generator.apply(__this, __arguments)).next());
41
+ });
42
+ };
43
+ import { createServer } from "http";
44
+ import path from "path";
45
+ import { createServer as createHttpsServer } from "https";
46
+ import {
47
+ API_DIR,
48
+ LOADER_ROUTES_DIR,
49
+ SERVER_DIR,
50
+ SHARED_DIR
51
+ } from "@modern-js/utils";
52
+ import {
53
+ createProxyHandler,
54
+ ModernServer,
55
+ AGGRED_DIR
56
+ } from "@modern-js/prod-server";
57
+ import { LOADABLE_STATS_FILE } from "@modern-js/utils/constants";
10
58
  import { getDefaultDevOptions } from "../constants";
11
59
  import { createMockHandler } from "../dev-tools/mock";
12
60
  import { enableRegister } from "../dev-tools/register";
13
61
  import Watcher, { mergeWatchOptions } from "../dev-tools/watcher";
14
62
  import DevMiddleware from "../dev-tools/dev-middleware";
15
- export class ModernDevServer extends ModernServer {
63
+ class ModernDevServer extends ModernServer {
16
64
  constructor(options) {
17
65
  super(options);
18
-
19
- // dev server should work in pwd
20
- _defineProperty(this, "mockHandler", null);
21
- _defineProperty(this, "dev", void 0);
22
- _defineProperty(this, "devMiddleware", void 0);
23
- _defineProperty(this, "watcher", void 0);
66
+ this.mockHandler = null;
24
67
  this.workDir = this.pwd;
25
-
26
- // set dev server options, like webpack-dev-server
27
68
  this.dev = this.getDevOptions(options);
28
-
29
- // create dev middleware instance
30
69
  this.devMiddleware = new DevMiddleware({
31
70
  dev: this.dev,
32
71
  compiler: options.compiler,
@@ -35,19 +74,16 @@ export class ModernDevServer extends ModernServer {
35
74
  enableRegister(this.pwd, this.conf);
36
75
  }
37
76
  getDevOptions(options) {
38
- const devOptions = typeof options.dev === 'boolean' ? {} : options.dev;
77
+ const devOptions = typeof options.dev === "boolean" ? {} : options.dev;
39
78
  const defaultOptions = getDefaultDevOptions();
40
- return _objectSpread(_objectSpread(_objectSpread({}, defaultOptions), devOptions), {}, {
41
- client: _objectSpread(_objectSpread({}, defaultOptions.client), devOptions === null || devOptions === void 0 ? void 0 : devOptions.client)
79
+ return __spreadProps(__spreadValues(__spreadValues({}, defaultOptions), devOptions), {
80
+ client: __spreadValues(__spreadValues({}, defaultOptions.client), devOptions == null ? void 0 : devOptions.client)
42
81
  });
43
82
  }
44
83
  addMiddlewareHandler(handlers) {
45
- handlers.forEach(handler => {
84
+ handlers.forEach((handler) => {
46
85
  this.addHandler((ctx, next) => {
47
- const {
48
- req,
49
- res
50
- } = ctx;
86
+ const { req, res } = ctx;
51
87
  return handler(req, res, next);
52
88
  });
53
89
  });
@@ -59,186 +95,132 @@ export class ModernDevServer extends ModernServer {
59
95
  };
60
96
  const befores = [];
61
97
  const afters = [];
62
- setupMiddlewares.forEach(handler => {
63
- handler({
64
- unshift: (...handlers) => befores.unshift(...handlers),
65
- push: (...handlers) => afters.push(...handlers)
66
- }, serverOptions);
98
+ setupMiddlewares.forEach((handler) => {
99
+ handler(
100
+ {
101
+ unshift: (...handlers) => befores.unshift(...handlers),
102
+ push: (...handlers) => afters.push(...handlers)
103
+ },
104
+ serverOptions
105
+ );
67
106
  });
68
- return {
69
- befores,
70
- afters
71
- };
107
+ return { befores, afters };
72
108
  }
73
-
74
- // Complete the preparation of services
75
- async onInit(runner, app) {
76
- this.runner = runner;
77
- const {
78
- dev
79
- } = this;
80
-
81
- // Order: devServer.before => setupMiddlewares.unshift => internal middlewares => setupMiddlewares.push => devServer.after
82
- const {
83
- befores,
84
- afters
85
- } = this.applySetupMiddlewares();
86
-
87
- // before dev handler
88
- const beforeHandlers = await this.setupBeforeDevMiddleware();
89
- this.addMiddlewareHandler([...beforeHandlers, ...befores]);
90
- await this.applyDefaultMiddlewares(app);
91
-
92
- // after dev handler
93
- const afterHandlers = await this.setupAfterDevMiddleware();
94
- this.addMiddlewareHandler([...afters, ...afterHandlers]);
95
- await super.onInit(runner, app);
96
-
97
- // watch mock/ server/ api/ dir file change
98
- if (dev.watch) {
99
- this.startWatcher();
100
- app.on('close', async () => {
101
- var _this$watcher;
102
- await ((_this$watcher = this.watcher) === null || _this$watcher === void 0 ? void 0 : _this$watcher.close());
103
- });
104
- }
105
- }
106
- async applyDefaultMiddlewares(app) {
107
- const {
108
- pwd,
109
- dev,
110
- devMiddleware
111
- } = this;
112
- this.addHandler((ctx, next) => {
113
- // allow hmr request cross-domain, because the user may use global proxy
114
- ctx.res.setHeader('Access-Control-Allow-Origin', '*');
115
- if (ctx.path.includes('hot-update')) {
116
- ctx.res.setHeader('Access-Control-Allow-Credentials', 'false');
117
- }
118
-
119
- // 用户在 devServer 上配置的 headers 不会对 html 的请求生效,加入下面代码,使配置的 headers 对所有请求生效
120
- const confHeaders = dev.headers;
121
- if (confHeaders) {
122
- for (const [key, value] of Object.entries(confHeaders)) {
123
- ctx.res.setHeader(key, value);
124
- }
109
+ onInit(runner, app) {
110
+ return __async(this, null, function* () {
111
+ this.runner = runner;
112
+ const { dev } = this;
113
+ const { befores, afters } = this.applySetupMiddlewares();
114
+ const beforeHandlers = yield this.setupBeforeDevMiddleware();
115
+ this.addMiddlewareHandler([...beforeHandlers, ...befores]);
116
+ yield this.applyDefaultMiddlewares(app);
117
+ const afterHandlers = yield this.setupAfterDevMiddleware();
118
+ this.addMiddlewareHandler([...afters, ...afterHandlers]);
119
+ yield __superGet(ModernDevServer.prototype, this, "onInit").call(this, runner, app);
120
+ if (dev.watch) {
121
+ this.startWatcher();
122
+ app.on("close", () => __async(this, null, function* () {
123
+ var _a;
124
+ yield (_a = this.watcher) == null ? void 0 : _a.close();
125
+ }));
125
126
  }
126
- next();
127
127
  });
128
-
129
- // mock handler
130
- this.mockHandler = createMockHandler({
131
- pwd
132
- });
133
- this.addHandler((ctx, next) => {
134
- if (this.mockHandler) {
135
- this.mockHandler(ctx, next);
136
- } else {
128
+ }
129
+ applyDefaultMiddlewares(app) {
130
+ return __async(this, null, function* () {
131
+ const { pwd, dev, devMiddleware } = this;
132
+ this.addHandler((ctx, next) => {
133
+ ctx.res.setHeader("Access-Control-Allow-Origin", "*");
134
+ if (ctx.path.includes("hot-update")) {
135
+ ctx.res.setHeader("Access-Control-Allow-Credentials", "false");
136
+ }
137
+ const confHeaders = dev.headers;
138
+ if (confHeaders) {
139
+ for (const [key, value] of Object.entries(confHeaders)) {
140
+ ctx.res.setHeader(key, value);
141
+ }
142
+ }
137
143
  next();
138
- }
139
- });
140
-
141
- // dev proxy handler, each proxy has own handler
142
- const proxyHandlers = createProxyHandler(dev.proxy);
143
- if (proxyHandlers) {
144
- proxyHandlers.forEach(handler => {
145
- this.addHandler(handler);
146
144
  });
147
- }
148
-
149
- // do webpack build / plugin apply / socket server when pass compiler instance
150
- devMiddleware.init(app);
151
- devMiddleware.on('change', stats => {
152
- // Reset only when client compile done
153
- if (stats.toJson({
154
- all: false
155
- }).name === 'client') {
156
- this.onRepack({
157
- routes: this.getRoutes()
145
+ this.mockHandler = createMockHandler({ pwd });
146
+ this.addHandler((ctx, next) => {
147
+ if (this.mockHandler) {
148
+ this.mockHandler(ctx, next);
149
+ } else {
150
+ next();
151
+ }
152
+ });
153
+ const proxyHandlers = createProxyHandler(dev.proxy);
154
+ if (proxyHandlers) {
155
+ proxyHandlers.forEach((handler) => {
156
+ this.addHandler(handler);
158
157
  });
159
158
  }
160
- });
161
- this.addHandler((ctx, next) => {
162
- const {
163
- req,
164
- res
165
- } = ctx;
166
- if (devMiddleware.middleware) {
167
- devMiddleware.middleware(req, res, next);
168
- } else {
169
- next();
159
+ devMiddleware.init(app);
160
+ devMiddleware.on("change", (stats) => {
161
+ if (stats.toJson({ all: false }).name === "client") {
162
+ this.onRepack({ routes: this.getRoutes() });
163
+ }
164
+ });
165
+ this.addHandler((ctx, next) => {
166
+ const { req, res } = ctx;
167
+ if (devMiddleware.middleware) {
168
+ devMiddleware.middleware(req, res, next);
169
+ } else {
170
+ next();
171
+ }
172
+ });
173
+ if (dev.historyApiFallback) {
174
+ const { default: connectHistoryApiFallback } = yield import("connect-history-api-fallback");
175
+ const historyApiFallbackMiddleware = connectHistoryApiFallback(
176
+ typeof dev.historyApiFallback === "boolean" ? {} : dev.historyApiFallback
177
+ );
178
+ this.addHandler(
179
+ (ctx, next) => historyApiFallbackMiddleware(ctx.req, ctx.res, next)
180
+ );
170
181
  }
171
182
  });
172
- if (dev.historyApiFallback) {
173
- const {
174
- default: connectHistoryApiFallback
175
- } = await import('connect-history-api-fallback');
176
- const historyApiFallbackMiddleware = connectHistoryApiFallback(typeof dev.historyApiFallback === 'boolean' ? {} : dev.historyApiFallback);
177
- this.addHandler((ctx, next) => historyApiFallbackMiddleware(ctx.req, ctx.res, next));
178
- }
179
183
  }
180
184
  onRepack(options = {}) {
181
- // reset the routing management instance every times the service starts
182
185
  if (Array.isArray(options.routes)) {
183
186
  this.router.reset(this.filterRoutes(options.routes));
184
187
  }
185
-
186
- // clean ssr bundle cache
187
188
  this.cleanSSRCache();
188
-
189
- // reset static file
190
189
  this.reader.updateFile();
191
190
  super.onRepack(options);
192
191
  }
193
- async createHTTPServer(handler) {
194
- const {
195
- dev
196
- } = this;
197
- const devHttpsOption = typeof dev === 'object' && dev.https;
198
- if (devHttpsOption) {
199
- const {
200
- genHttpsOptions
201
- } = require("../dev-tools/https");
202
- const httpsOptions = await genHttpsOptions(devHttpsOption);
203
- return createHttpsServer(httpsOptions, handler);
204
- } else {
205
- return createServer(handler);
206
- }
192
+ createHTTPServer(handler) {
193
+ return __async(this, null, function* () {
194
+ const { dev } = this;
195
+ const devHttpsOption = typeof dev === "object" && dev.https;
196
+ if (devHttpsOption) {
197
+ const { genHttpsOptions } = require("../dev-tools/https");
198
+ const httpsOptions = yield genHttpsOptions(devHttpsOption);
199
+ return createHttpsServer(httpsOptions, handler);
200
+ } else {
201
+ return createServer(handler);
202
+ }
203
+ });
207
204
  }
208
205
  warmupSSRBundle() {
209
- // not warmup ssr bundle on development
210
206
  }
211
207
  onServerChange({
212
208
  filepath,
213
209
  event
214
210
  }) {
215
- const {
216
- pwd
217
- } = this;
218
- const {
219
- mock
220
- } = AGGRED_DIR;
211
+ const { pwd } = this;
212
+ const { mock } = AGGRED_DIR;
221
213
  const mockPath = path.normalize(path.join(pwd, mock));
222
214
  this.runner.reset();
223
215
  if (filepath.startsWith(mockPath)) {
224
- this.mockHandler = createMockHandler({
225
- pwd
226
- });
216
+ this.mockHandler = createMockHandler({ pwd });
227
217
  } else {
228
218
  try {
229
- const success = this.runner.onApiChange([{
230
- filename: filepath,
231
- event
232
- }]);
233
-
234
- // onApiChange 钩子被调用,且返回 true,则表示无需重新编译
235
- // onApiChange 的类型是 WaterFall,WaterFall 钩子的返回值类型目前有问题
236
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
237
- // @ts-expect-error
219
+ const success = this.runner.onApiChange([
220
+ { filename: filepath, event }
221
+ ]);
238
222
  if (success !== true) {
239
- super.onServerChange({
240
- filepath
241
- });
223
+ super.onServerChange({ filepath });
242
224
  }
243
225
  } catch (e) {
244
226
  this.logger.error(e);
@@ -246,36 +228,28 @@ export class ModernDevServer extends ModernServer {
246
228
  }
247
229
  }
248
230
  createContext(req, res) {
249
- return super.createContext(req, res, {
250
- etag: true
251
- });
231
+ return super.createContext(req, res, { etag: true });
252
232
  }
253
- async setupBeforeDevMiddleware() {
254
- const {
255
- runner,
256
- conf,
257
- dev
258
- } = this;
259
- const setupMids = dev.before || [];
260
- const pluginMids = await runner.beforeDevServer(conf);
261
- return [...setupMids, ...pluginMids].flat();
233
+ setupBeforeDevMiddleware() {
234
+ return __async(this, null, function* () {
235
+ const { runner, conf, dev } = this;
236
+ const setupMids = dev.before || [];
237
+ const pluginMids = yield runner.beforeDevServer(conf);
238
+ return [...setupMids, ...pluginMids].flat();
239
+ });
262
240
  }
263
- async setupAfterDevMiddleware() {
264
- const {
265
- runner,
266
- conf,
267
- dev
268
- } = this;
269
- const setupMids = dev.after || [];
270
- const pluginMids = await runner.afterDevServer(conf);
271
- return [...pluginMids, ...setupMids].flat();
241
+ setupAfterDevMiddleware() {
242
+ return __async(this, null, function* () {
243
+ const { runner, conf, dev } = this;
244
+ const setupMids = dev.after || [];
245
+ const pluginMids = yield runner.afterDevServer(conf);
246
+ return [...pluginMids, ...setupMids].flat();
247
+ });
272
248
  }
273
249
  cleanSSRCache() {
274
- const {
275
- distDir
276
- } = this;
250
+ const { distDir } = this;
277
251
  const bundles = this.router.getBundles();
278
- bundles.forEach(bundle => {
252
+ bundles.forEach((bundle) => {
279
253
  const filepath = path.join(distDir, bundle);
280
254
  if (require.cache[filepath]) {
281
255
  delete require.cache[filepath];
@@ -287,24 +261,23 @@ export class ModernDevServer extends ModernServer {
287
261
  }
288
262
  }
289
263
  startWatcher() {
290
- var _this$conf$server;
291
- const {
292
- pwd,
293
- distDir
294
- } = this;
295
- const {
296
- mock
297
- } = AGGRED_DIR;
298
- const defaultWatched = [`${mock}/**/*`, `${SERVER_DIR}/**/*`, `${API_DIR}/**`, `${SHARED_DIR}/**/*`, `${distDir}/${LOADER_ROUTES_DIR}/**`];
299
- const watchOptions = mergeWatchOptions((_this$conf$server = this.conf.server) === null || _this$conf$server === void 0 ? void 0 : _this$conf$server.watchOptions);
300
- const defaultWatchedPaths = defaultWatched.map(p => {
264
+ var _a;
265
+ const { pwd, distDir } = this;
266
+ const { mock } = AGGRED_DIR;
267
+ const defaultWatched = [
268
+ `${mock}/**/*`,
269
+ `${SERVER_DIR}/**/*`,
270
+ `${API_DIR}/**`,
271
+ `${SHARED_DIR}/**/*`,
272
+ `${distDir}/${LOADER_ROUTES_DIR}/**`
273
+ ];
274
+ const watchOptions = mergeWatchOptions((_a = this.conf.server) == null ? void 0 : _a.watchOptions);
275
+ const defaultWatchedPaths = defaultWatched.map((p) => {
301
276
  const finalPath = path.isAbsolute(p) ? p : path.join(pwd, p);
302
277
  return path.normalize(finalPath);
303
278
  });
304
279
  const watcher = new Watcher();
305
280
  watcher.createDepTree();
306
-
307
- // 监听文件变动,如果有变动则给 client,也就是 start 启动的插件发消息
308
281
  watcher.listen(defaultWatchedPaths, watchOptions, (filepath, event) => {
309
282
  watcher.updateDepTree();
310
283
  watcher.cleanDepCache(filepath);
@@ -315,4 +288,7 @@ export class ModernDevServer extends ModernServer {
315
288
  });
316
289
  this.watcher = watcher;
317
290
  }
318
- }
291
+ }
292
+ export {
293
+ ModernDevServer
294
+ };
@@ -1,13 +1,16 @@
1
- import { Server } from '@modern-js/prod-server';
1
+ import { Server } from "@modern-js/prod-server";
2
2
  import { ModernDevServer } from "./dev-server";
3
- const createDevServer = options => {
3
+ const createDevServer = (options) => {
4
4
  return new ModernDevServer(options);
5
5
  };
6
- export class DevServer extends Server {
6
+ class DevServer extends Server {
7
7
  constructor(options) {
8
8
  super(options);
9
9
  if (options.dev) {
10
10
  this.serverImpl = createDevServer;
11
11
  }
12
12
  }
13
- }
13
+ }
14
+ export {
15
+ DevServer
16
+ };
@@ -1,25 +1,38 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var stdin_exports = {};
19
+ __export(stdin_exports, {
20
+ getDefaultDevOptions: () => getDefaultDevOptions
5
21
  });
6
- exports.getDefaultDevOptions = void 0;
7
- var _utils = require("@modern-js/utils");
22
+ module.exports = __toCommonJS(stdin_exports);
23
+ var import_utils = require("@modern-js/utils");
8
24
  const getDefaultDevOptions = () => {
9
- const network = (0, _utils.getIpv4Interfaces)().find(item => !item.internal);
25
+ const network = (0, import_utils.getIpv4Interfaces)().find((item) => !item.internal);
10
26
  return {
11
27
  client: {
12
- port: '8080',
13
- path: _utils.HMR_SOCK_PATH,
14
- host: (network === null || network === void 0 ? void 0 : network.address) || 'localhost'
28
+ port: "8080",
29
+ path: import_utils.HMR_SOCK_PATH,
30
+ host: (network == null ? void 0 : network.address) || "localhost"
15
31
  },
16
32
  https: false,
17
- devMiddleware: {
18
- writeToDisk: true
19
- },
33
+ devMiddleware: { writeToDisk: true },
20
34
  watch: true,
21
35
  hot: true,
22
36
  liveReload: true
23
37
  };
24
38
  };
25
- exports.getDefaultDevOptions = getDefaultDevOptions;
@@ -1,45 +1,57 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
+ mod
22
+ ));
23
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
24
+ var stdin_exports = {};
25
+ __export(stdin_exports, {
26
+ default: () => DevServerPlugin
5
27
  });
6
- exports.default = void 0;
7
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
28
+ module.exports = __toCommonJS(stdin_exports);
8
29
  class DevServerPlugin {
9
30
  constructor(options) {
10
- _defineProperty(this, "options", void 0);
11
31
  this.options = options;
12
32
  }
13
33
  injectHMRClient(compiler) {
14
- const {
15
- client
16
- } = this.options;
17
- const host = client !== null && client !== void 0 && client.host ? `&host=${client.host}` : '';
18
- const path = client !== null && client !== void 0 && client.path ? `&path=${client.path}` : '';
19
- const port = client !== null && client !== void 0 && client.port ? `&port=${client.port}` : '';
34
+ const { client } = this.options;
35
+ const host = (client == null ? void 0 : client.host) ? `&host=${client.host}` : "";
36
+ const path = (client == null ? void 0 : client.path) ? `&path=${client.path}` : "";
37
+ const port = (client == null ? void 0 : client.port) ? `&port=${client.port}` : "";
20
38
  const clientEntry = `${require.resolve("./hmr-client")}?${host}${path}${port}`;
21
-
22
- // use a hook to add entries if available
23
39
  new compiler.webpack.EntryPlugin(compiler.context, clientEntry, {
24
- name: undefined
40
+ name: void 0
25
41
  }).apply(compiler);
26
42
  }
27
43
  apply(compiler) {
28
44
  if (this.options.hot || this.options.liveReload) {
29
45
  this.injectHMRClient(compiler);
30
46
  }
31
-
32
- // Todo remove, client must inject.
33
47
  const compilerOptions = compiler.options;
34
- const {
35
- HotModuleReplacementPlugin
36
- } = compiler.webpack;
48
+ const { HotModuleReplacementPlugin } = compiler.webpack;
37
49
  compilerOptions.plugins = compilerOptions.plugins || [];
38
- if (!compilerOptions.plugins.find(p => p.constructor === HotModuleReplacementPlugin)) {
39
- // apply the HMR plugin, if it didn't exist before.
50
+ if (!compilerOptions.plugins.find(
51
+ (p) => p.constructor === HotModuleReplacementPlugin
52
+ )) {
40
53
  const plugin = new HotModuleReplacementPlugin();
41
54
  plugin.apply(compiler);
42
55
  }
43
56
  }
44
57
  }
45
- exports.default = DevServerPlugin;