@modern-js/server 2.15.0 → 2.16.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.
Files changed (51) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/constants.js +12 -28
  3. package/dist/cjs/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +14 -32
  4. package/dist/cjs/dev-tools/dev-middleware/hmr-client/index.js +24 -42
  5. package/dist/cjs/dev-tools/dev-middleware/index.js +45 -50
  6. package/dist/cjs/dev-tools/dev-middleware/socketServer.js +48 -46
  7. package/dist/cjs/dev-tools/https/index.js +21 -38
  8. package/dist/cjs/dev-tools/mock/getMockData.js +33 -33
  9. package/dist/cjs/dev-tools/mock/index.js +67 -47
  10. package/dist/cjs/dev-tools/register/index.js +59 -70
  11. package/dist/cjs/dev-tools/watcher/dependencyTree.js +52 -55
  12. package/dist/cjs/dev-tools/watcher/index.js +52 -53
  13. package/dist/cjs/dev-tools/watcher/statsCache.js +37 -47
  14. package/dist/cjs/index.js +16 -28
  15. package/dist/cjs/server/devServer.js +163 -109
  16. package/dist/cjs/server/index.js +11 -29
  17. package/dist/cjs/types.js +4 -15
  18. package/dist/esm/constants.js +19 -20
  19. package/dist/esm/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +43 -44
  20. package/dist/esm/dev-tools/dev-middleware/hmr-client/index.js +148 -157
  21. package/dist/esm/dev-tools/dev-middleware/index.js +307 -291
  22. package/dist/esm/dev-tools/dev-middleware/socketServer.js +216 -202
  23. package/dist/esm/dev-tools/https/index.js +189 -182
  24. package/dist/esm/dev-tools/mock/getMockData.js +297 -278
  25. package/dist/esm/dev-tools/mock/index.js +198 -192
  26. package/dist/esm/dev-tools/register/index.js +141 -141
  27. package/dist/esm/dev-tools/watcher/dependencyTree.js +153 -138
  28. package/dist/esm/dev-tools/watcher/index.js +187 -175
  29. package/dist/esm/dev-tools/watcher/statsCache.js +118 -116
  30. package/dist/esm/index.js +9 -8
  31. package/dist/esm/server/devServer.js +803 -722
  32. package/dist/esm/server/index.js +80 -76
  33. package/dist/esm/types.js +1 -1
  34. package/dist/esm-node/constants.js +4 -5
  35. package/dist/esm-node/dev-tools/dev-middleware/hmr-client/createSocketUrl.js +2 -11
  36. package/dist/esm-node/dev-tools/dev-middleware/hmr-client/index.js +125 -139
  37. package/dist/esm-node/dev-tools/dev-middleware/index.js +31 -17
  38. package/dist/esm-node/dev-tools/dev-middleware/socketServer.js +33 -12
  39. package/dist/esm-node/dev-tools/https/index.js +13 -15
  40. package/dist/esm-node/dev-tools/mock/getMockData.js +20 -12
  41. package/dist/esm-node/dev-tools/mock/index.js +7 -7
  42. package/dist/esm-node/dev-tools/register/index.js +38 -29
  43. package/dist/esm-node/dev-tools/watcher/dependencyTree.js +32 -21
  44. package/dist/esm-node/dev-tools/watcher/index.js +31 -18
  45. package/dist/esm-node/dev-tools/watcher/statsCache.js +18 -8
  46. package/dist/esm-node/index.js +2 -5
  47. package/dist/esm-node/server/devServer.js +87 -62
  48. package/dist/esm-node/server/index.js +1 -4
  49. package/dist/esm-node/types.js +1 -0
  50. package/dist/types/server/devServer.d.ts +1 -1
  51. package/package.json +13 -9
@@ -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
- API_DIR,
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
- unshift: (...handlers) => befores.unshift(...handlers),
59
- push: (...handlers) => afters.push(...handlers)
60
- },
61
- serverOptions
62
- );
48
+ handler({
49
+ unshift: (...handlers) => befores.unshift(...handlers),
50
+ push: (...handlers) => afters.push(...handlers)
51
+ }, serverOptions);
63
52
  });
64
- return { befores, afters };
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([...beforeHandlers, ...befores]);
64
+ this.addMiddlewareHandler([
65
+ ...beforeHandlers,
66
+ ...befores
67
+ ]);
73
68
  await this.applyDefaultMiddlewares(app);
74
69
  const afterHandlers = await this.setupAfterDevMiddleware();
75
- this.addMiddlewareHandler([...afters, ...afterHandlers]);
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 _a;
81
- await ((_a = this.watcher) == null ? void 0 : _a.close());
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({ pwd });
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({ all: false }).name !== "server") {
117
- this.onRepack({ routes: this.getRoutes() });
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
- typeof dev.historyApiFallback === "boolean" ? {} : dev.historyApiFallback
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
- 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({ pwd });
166
+ this.mockHandler = createMockHandler({
167
+ pwd
168
+ });
170
169
  } else {
171
170
  try {
172
171
  const success = this.runner.onApiChange([
173
- { filename: filepath, event }
172
+ {
173
+ filename: filepath,
174
+ event
175
+ }
174
176
  ]);
175
177
  if (success !== true) {
176
- super.onServerChange({ filepath });
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, { etag: true });
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 [...setupMids, ...pluginMids].flat();
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 [...pluginMids, ...setupMids].flat();
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 _a;
230
+ var _this_conf_server;
219
231
  const { pwd, distDir, appContext } = this;
220
232
  const { mock } = AGGRED_DIR;
221
- const apiDir = (appContext == null ? void 0 : appContext.apiDirectory) || API_DIR;
222
- const sharedDir = (appContext == null ? void 0 : appContext.sharedDirectory) || SHARED_DIR;
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((_a = this.conf.server) == null ? void 0 : _a.watchOptions);
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
- };
@@ -0,0 +1 @@
1
+ export {};
@@ -26,7 +26,7 @@ export declare class ModernDevServer extends ModernServer {
26
26
  }: {
27
27
  filepath: string;
28
28
  event: WatchEvent;
29
- }): void;
29
+ }): Promise<void>;
30
30
  protected createContext(req: IncomingMessage, res: ServerResponse): import("@modern-js/prod-server/src/libs/context").ModernServerContext;
31
31
  protected setupStaticMiddleware(_: string): (context: ModernServerContext, next: NextFunction) => Promise<void>;
32
32
  private setupBeforeDevMiddleware;
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": "web-infra-dev/modern.js",
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.15.0",
18
+ "version": "2.16.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.15.0",
45
- "@modern-js/server-utils": "2.15.0",
46
- "@modern-js/types": "2.15.0",
47
- "@modern-js/utils": "2.15.0"
48
+ "@modern-js/prod-server": "2.16.0",
49
+ "@modern-js/server-utils": "2.16.0",
50
+ "@modern-js/types": "2.16.0",
51
+ "@modern-js/utils": "2.16.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
- "@modern-js/server-core": "2.15.0",
63
- "@scripts/build": "2.15.0",
64
- "@scripts/jest-config": "2.15.0"
66
+ "@modern-js/server-core": "2.16.0",
67
+ "@scripts/build": "2.16.0",
68
+ "@scripts/jest-config": "2.16.0"
65
69
  },
66
70
  "peerDependencies": {
67
71
  "devcert": "^1.0.0",