@modern-js/server 1.4.15 → 1.4.16

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 CHANGED
@@ -1,5 +1,37 @@
1
1
  # @modern-js/server
2
2
 
3
+ ## 1.4.16
4
+
5
+ ### Patch Changes
6
+
7
+ - f7cbc771: feat: prebundle webpack-dev-middleware
8
+ - cdc2df9c: fix(server): remove launch-editor
9
+ - b39b399e: lock devcert version
10
+ - 430d417e: optimize server side hot reload
11
+ - 437367c6: fix(server): hmr not working when using proxy
12
+ - Updated dependencies [5f7fccf0]
13
+ - Updated dependencies [02b0a22e]
14
+ - Updated dependencies [da65bf12]
15
+ - Updated dependencies [8854c600]
16
+ - Updated dependencies [d57e7622]
17
+ - Updated dependencies [f7cbc771]
18
+ - Updated dependencies [6451a098]
19
+ - Updated dependencies [f5c48c3f]
20
+ - Updated dependencies [430d417e]
21
+ - Updated dependencies [658b4dd5]
22
+ - Updated dependencies [d5a2cfd8]
23
+ - Updated dependencies [45d5643a]
24
+ - Updated dependencies [0d161fa8]
25
+ - Updated dependencies [437367c6]
26
+ - Updated dependencies [280eebf9]
27
+ - Updated dependencies [2ba8d62f]
28
+ - Updated dependencies [7394df61]
29
+ - @modern-js/webpack@1.9.0
30
+ - @modern-js/bff-utils@1.2.8
31
+ - @modern-js/utils@1.7.6
32
+ - @modern-js/prod-server@1.1.6
33
+ - @modern-js/server-utils@1.2.9
34
+
3
35
  ## 1.4.15
4
36
 
5
37
  ### Patch Changes
@@ -1,17 +1,20 @@
1
- import { HMR_SOCK_PATH } from '@modern-js/utils';
2
- export const DEFAULT_DEV_OPTIONS = {
3
- client: {
4
- port: '8080',
5
- overlay: false,
6
- logging: 'none',
7
- path: HMR_SOCK_PATH,
8
- host: 'localhost'
9
- },
10
- https: false,
11
- devMiddleware: {
12
- writeToDisk: true
13
- },
14
- watch: true,
15
- hot: true,
16
- liveReload: true
1
+ import { getIpv4Interfaces, HMR_SOCK_PATH } from '@modern-js/utils';
2
+ export const getDefaultDevOptions = () => {
3
+ const network = getIpv4Interfaces().find(item => !item.internal);
4
+ return {
5
+ client: {
6
+ port: '8080',
7
+ overlay: false,
8
+ logging: 'none',
9
+ path: HMR_SOCK_PATH,
10
+ host: (network === null || network === void 0 ? void 0 : network.address) || 'localhost'
11
+ },
12
+ https: false,
13
+ devMiddleware: {
14
+ writeToDisk: true
15
+ },
16
+ watch: true,
17
+ hot: true,
18
+ liveReload: true
19
+ };
17
20
  };
@@ -1,11 +1,6 @@
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
-
3
- 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; }
4
-
5
1
  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; }
6
2
 
7
3
  import Webpack from 'webpack';
8
- import { DEFAULT_DEV_OPTIONS } from "../constants";
9
4
  const {
10
5
  EntryPlugin
11
6
  } = Webpack;
@@ -18,14 +13,11 @@ export default class DevServerPlugin {
18
13
 
19
14
  apply(compiler) {
20
15
  const {
21
- options
22
- } = this;
23
-
24
- const client = _objectSpread(_objectSpread({}, DEFAULT_DEV_OPTIONS.client), options.client);
25
-
26
- const host = `&host=${client.host}`;
27
- const path = `&path=${client.path}`;
28
- const port = `&port=${client.port}`;
16
+ client
17
+ } = this.options;
18
+ const host = client.host ? `&host=${client.host}` : '';
19
+ const path = client.path ? `&path=${client.path}` : '';
20
+ const port = client.port ? `&port=${client.port}` : '';
29
21
  const clientEntry = `${require.resolve('@modern-js/hmr-client')}?${host}${path}${port}`;
30
22
  const additionalEntries = [clientEntry]; // use a hook to add entries if available
31
23
 
@@ -8,13 +8,12 @@ import { createServer } from 'http';
8
8
  import path from 'path';
9
9
  import { createServer as createHttpsServer } from 'https';
10
10
  import { API_DIR, SERVER_DIR, SHARED_DIR } from '@modern-js/utils';
11
- import webpackDevMiddleware from 'webpack-dev-middleware';
11
+ import webpackDevMiddleware from '@modern-js/webpack/webpack-dev-middleware';
12
12
  import { createProxyHandler, ModernServer, AGGRED_DIR } from '@modern-js/prod-server';
13
- import { DEFAULT_DEV_OPTIONS } from "../constants";
13
+ import { getDefaultDevOptions } from "../constants";
14
14
  import { createMockHandler } from "../dev-tools/mock";
15
15
  import SocketServer from "../dev-tools/socket-server";
16
16
  import DevServerPlugin from "../dev-tools/dev-server-plugin";
17
- import { createLaunchEditorHandler } from "../dev-tools/launch-editor";
18
17
  import { enableRegister } from "../dev-tools/babel/register";
19
18
  import Watcher from "../dev-tools/watcher";
20
19
  export class ModernDevServer extends ModernServer {
@@ -37,8 +36,16 @@ export class ModernDevServer extends ModernServer {
37
36
 
38
37
  this.compiler = options.compiler; // set dev server options, like webpack-dev-server
39
38
 
40
- this.dev = _objectSpread(_objectSpread({}, DEFAULT_DEV_OPTIONS), typeof options.dev === 'boolean' ? {} : options.dev);
39
+ this.dev = this.getDevOptions(options);
41
40
  enableRegister(this.pwd, this.conf);
41
+ }
42
+
43
+ getDevOptions(options) {
44
+ const devOptions = typeof options.dev === 'boolean' ? {} : options.dev;
45
+ const defaultOptions = getDefaultDevOptions();
46
+ return _objectSpread(_objectSpread(_objectSpread({}, defaultOptions), devOptions), {}, {
47
+ client: _objectSpread(_objectSpread({}, defaultOptions.client), devOptions === null || devOptions === void 0 ? void 0 : devOptions.client)
48
+ });
42
49
  } // Complete the preparation of services
43
50
 
44
51
 
@@ -86,9 +93,7 @@ export class ModernDevServer extends ModernServer {
86
93
 
87
94
  if (compiler) {
88
95
  // init socket server
89
- this.socketServer = new SocketServer(dev); // open file in editor.
90
-
91
- this.addHandler(createLaunchEditorHandler()); // setup compiler in server, also add dev-middleware to handler static file in memory
96
+ this.socketServer = new SocketServer(dev); // setup compiler in server, also add dev-middleware to handler static file in memory
92
97
 
93
98
  const devMiddlewareHandler = this.setupCompiler(compiler);
94
99
  this.addHandler(devMiddlewareHandler);
@@ -138,9 +143,7 @@ export class ModernDevServer extends ModernServer {
138
143
 
139
144
  this.cleanSSRCache(); // reset static file
140
145
 
141
- this.reader.updateFile(); // emit reset hook
142
-
143
- this.runner.reset();
146
+ this.reader.updateFile();
144
147
  super.onRepack(options);
145
148
  }
146
149
 
@@ -3,24 +3,28 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.DEFAULT_DEV_OPTIONS = void 0;
6
+ exports.getDefaultDevOptions = void 0;
7
7
 
8
8
  var _utils = require("@modern-js/utils");
9
9
 
10
- const DEFAULT_DEV_OPTIONS = {
11
- client: {
12
- port: '8080',
13
- overlay: false,
14
- logging: 'none',
15
- path: _utils.HMR_SOCK_PATH,
16
- host: 'localhost'
17
- },
18
- https: false,
19
- devMiddleware: {
20
- writeToDisk: true
21
- },
22
- watch: true,
23
- hot: true,
24
- liveReload: true
10
+ const getDefaultDevOptions = () => {
11
+ const network = (0, _utils.getIpv4Interfaces)().find(item => !item.internal);
12
+ return {
13
+ client: {
14
+ port: '8080',
15
+ overlay: false,
16
+ logging: 'none',
17
+ path: _utils.HMR_SOCK_PATH,
18
+ host: (network === null || network === void 0 ? void 0 : network.address) || 'localhost'
19
+ },
20
+ https: false,
21
+ devMiddleware: {
22
+ writeToDisk: true
23
+ },
24
+ watch: true,
25
+ hot: true,
26
+ liveReload: true
27
+ };
25
28
  };
26
- exports.DEFAULT_DEV_OPTIONS = DEFAULT_DEV_OPTIONS;
29
+
30
+ exports.getDefaultDevOptions = getDefaultDevOptions;
@@ -7,14 +7,8 @@ exports.default = void 0;
7
7
 
8
8
  var _webpack = _interopRequireDefault(require("webpack"));
9
9
 
10
- var _constants = require("../constants");
11
-
12
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
11
 
14
- 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; }
15
-
16
- 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; }
17
-
18
12
  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; }
19
13
 
20
14
  const {
@@ -30,14 +24,11 @@ class DevServerPlugin {
30
24
 
31
25
  apply(compiler) {
32
26
  const {
33
- options
34
- } = this;
35
-
36
- const client = _objectSpread(_objectSpread({}, _constants.DEFAULT_DEV_OPTIONS.client), options.client);
37
-
38
- const host = `&host=${client.host}`;
39
- const path = `&path=${client.path}`;
40
- const port = `&port=${client.port}`;
27
+ client
28
+ } = this.options;
29
+ const host = client.host ? `&host=${client.host}` : '';
30
+ const path = client.path ? `&path=${client.path}` : '';
31
+ const port = client.port ? `&port=${client.port}` : '';
41
32
  const clientEntry = `${require.resolve('@modern-js/hmr-client')}?${host}${path}${port}`;
42
33
  const additionalEntries = [clientEntry]; // use a hook to add entries if available
43
34
 
@@ -13,7 +13,7 @@ var _https = require("https");
13
13
 
14
14
  var _utils = require("@modern-js/utils");
15
15
 
16
- var _webpackDevMiddleware = _interopRequireDefault(require("webpack-dev-middleware"));
16
+ var _webpackDevMiddleware = _interopRequireDefault(require("@modern-js/webpack/webpack-dev-middleware"));
17
17
 
18
18
  var _prodServer = require("@modern-js/prod-server");
19
19
 
@@ -25,8 +25,6 @@ var _socketServer = _interopRequireDefault(require("../dev-tools/socket-server")
25
25
 
26
26
  var _devServerPlugin = _interopRequireDefault(require("../dev-tools/dev-server-plugin"));
27
27
 
28
- var _launchEditor = require("../dev-tools/launch-editor");
29
-
30
28
  var _register = require("../dev-tools/babel/register");
31
29
 
32
30
  var _watcher = _interopRequireDefault(require("../dev-tools/watcher"));
@@ -59,8 +57,16 @@ class ModernDevServer extends _prodServer.ModernServer {
59
57
 
60
58
  this.compiler = options.compiler; // set dev server options, like webpack-dev-server
61
59
 
62
- this.dev = _objectSpread(_objectSpread({}, _constants.DEFAULT_DEV_OPTIONS), typeof options.dev === 'boolean' ? {} : options.dev);
60
+ this.dev = this.getDevOptions(options);
63
61
  (0, _register.enableRegister)(this.pwd, this.conf);
62
+ }
63
+
64
+ getDevOptions(options) {
65
+ const devOptions = typeof options.dev === 'boolean' ? {} : options.dev;
66
+ const defaultOptions = (0, _constants.getDefaultDevOptions)();
67
+ return _objectSpread(_objectSpread(_objectSpread({}, defaultOptions), devOptions), {}, {
68
+ client: _objectSpread(_objectSpread({}, defaultOptions.client), devOptions === null || devOptions === void 0 ? void 0 : devOptions.client)
69
+ });
64
70
  } // Complete the preparation of services
65
71
 
66
72
 
@@ -108,9 +114,7 @@ class ModernDevServer extends _prodServer.ModernServer {
108
114
 
109
115
  if (compiler) {
110
116
  // init socket server
111
- this.socketServer = new _socketServer.default(dev); // open file in editor.
112
-
113
- this.addHandler((0, _launchEditor.createLaunchEditorHandler)()); // setup compiler in server, also add dev-middleware to handler static file in memory
117
+ this.socketServer = new _socketServer.default(dev); // setup compiler in server, also add dev-middleware to handler static file in memory
114
118
 
115
119
  const devMiddlewareHandler = this.setupCompiler(compiler);
116
120
  this.addHandler(devMiddlewareHandler);
@@ -160,9 +164,7 @@ class ModernDevServer extends _prodServer.ModernServer {
160
164
 
161
165
  this.cleanSSRCache(); // reset static file
162
166
 
163
- this.reader.updateFile(); // emit reset hook
164
-
165
- this.runner.reset();
167
+ this.reader.updateFile();
166
168
  super.onRepack(options);
167
169
  }
168
170
 
@@ -1,2 +1,2 @@
1
1
  import { DevServerOptions } from './types';
2
- export declare const DEFAULT_DEV_OPTIONS: DevServerOptions;
2
+ export declare const getDefaultDevOptions: () => DevServerOptions;
@@ -10,6 +10,7 @@ export declare class ModernDevServer extends ModernServer {
10
10
  private watcher;
11
11
  private devMiddleware;
12
12
  constructor(options: ModernDevServerOptions);
13
+ private getDevOptions;
13
14
  onInit(runner: ServerHookRunner): Promise<void>;
14
15
  onClose(): Promise<void>;
15
16
  onRepack(options?: BuildOptions): void;
@@ -2,11 +2,11 @@ import { ModernServerOptions } from '@modern-js/prod-server';
2
2
  import type Webpack from 'webpack';
3
3
  export declare type DevServerOptions = {
4
4
  client: {
5
- port: string;
6
- overlay: boolean;
7
- logging: string;
8
- path: string;
9
- host: string;
5
+ path?: string;
6
+ port?: string;
7
+ host?: string;
8
+ logging?: string;
9
+ overlay?: boolean;
10
10
  progress?: boolean;
11
11
  };
12
12
  devMiddleware: {
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "modern",
12
12
  "modern.js"
13
13
  ],
14
- "version": "1.4.15",
14
+ "version": "1.4.16",
15
15
  "jsnext:source": "./src/index.ts",
16
16
  "types": "./dist/types/index.d.ts",
17
17
  "main": "./dist/js/node/index.js",
@@ -30,37 +30,32 @@
30
30
  "dependencies": {
31
31
  "@babel/core": "^7.17.0",
32
32
  "@babel/register": "^7.15.3",
33
- "@modern-js/bff-utils": "^1.2.6",
33
+ "@modern-js/bff-utils": "^1.2.8",
34
34
  "@modern-js/hmr-client": "^1.2.7",
35
- "@modern-js/prod-server": "^1.1.5",
36
- "@modern-js/server-utils": "^1.2.6",
37
- "@modern-js/utils": "^1.7.4",
38
- "devcert": "^1.1.3",
39
- "launch-editor": "^2.2.1",
35
+ "@modern-js/prod-server": "^1.1.6",
36
+ "@modern-js/server-utils": "^1.2.9",
37
+ "@modern-js/webpack": "^1.9.0",
38
+ "@modern-js/utils": "^1.7.6",
39
+ "devcert": "1.2.0",
40
40
  "minimatch": "^3.0.4",
41
41
  "path-to-regexp": "^6.2.0",
42
- "webpack-dev-middleware": "^5.0.0",
43
42
  "ws": "^8.2.0"
44
43
  },
45
44
  "devDependencies": {
46
- "@modern-js/core": "1.10.3",
45
+ "@modern-js/core": "1.11.1",
47
46
  "@modern-js/server-core": "1.3.5",
48
- "@modern-js/types": "1.5.3",
47
+ "@modern-js/types": "1.5.4",
49
48
  "@scripts/build": "0.0.0",
50
49
  "@scripts/jest-config": "0.0.0",
51
50
  "@types/jest": "^27",
52
51
  "@types/minimatch": "^3.0.5",
53
52
  "@types/node": "^14",
54
- "@types/webpack-dev-middleware": "^5.0.2",
55
53
  "@types/ws": "^7.4.7",
56
54
  "jest": "^27",
57
55
  "typescript": "^4",
58
56
  "webpack": "^5.71.0",
59
57
  "websocket": "^1"
60
58
  },
61
- "peerDependencies": {
62
- "webpack": "^5.54.0"
63
- },
64
59
  "sideEffects": false,
65
60
  "modernConfig": {
66
61
  "output": {
@@ -1,25 +0,0 @@
1
- import { LAUNCH_EDITOR_ENDPOINT, logger } from '@modern-js/utils';
2
- export const createLaunchEditorHandler = // eslint-disable-next-line consistent-return
3
- () => (ctx, next) => {
4
- if (ctx.url.startsWith(LAUNCH_EDITOR_ENDPOINT)) {
5
- const {
6
- filename,
7
- line = 1,
8
- column = 1
9
- } = ctx.query;
10
-
11
- if (!filename) {
12
- ctx.status = 500;
13
- ctx.res.end(`launch-editor-middleware: required query param "filename" is missing.`);
14
- } else {
15
- require('launch-editor')(`${filename}:${line}:${column}`, 'code', (file, errorMessage) => {
16
- logger.error(`Launch ${file} in editor failed.\n${errorMessage}`);
17
- });
18
-
19
- ctx.status = 200;
20
- ctx.res.end();
21
- }
22
- } else {
23
- return next();
24
- }
25
- };
@@ -1,35 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.createLaunchEditorHandler = void 0;
7
-
8
- var _utils = require("@modern-js/utils");
9
-
10
- const createLaunchEditorHandler = // eslint-disable-next-line consistent-return
11
- () => (ctx, next) => {
12
- if (ctx.url.startsWith(_utils.LAUNCH_EDITOR_ENDPOINT)) {
13
- const {
14
- filename,
15
- line = 1,
16
- column = 1
17
- } = ctx.query;
18
-
19
- if (!filename) {
20
- ctx.status = 500;
21
- ctx.res.end(`launch-editor-middleware: required query param "filename" is missing.`);
22
- } else {
23
- require('launch-editor')(`${filename}:${line}:${column}`, 'code', (file, errorMessage) => {
24
- _utils.logger.error(`Launch ${file} in editor failed.\n${errorMessage}`);
25
- });
26
-
27
- ctx.status = 200;
28
- ctx.res.end();
29
- }
30
- } else {
31
- return next();
32
- }
33
- };
34
-
35
- exports.createLaunchEditorHandler = createLaunchEditorHandler;
@@ -1,2 +0,0 @@
1
- import { ModernServerContext, NextFunction } from '@modern-js/types';
2
- export declare const createLaunchEditorHandler: () => (ctx: ModernServerContext, next: NextFunction) => void;