@modern-js/server 1.4.1 → 1.4.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 (145) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/js/modern/dev-tools/mock/index.js +1 -1
  3. package/dist/js/modern/dev-tools/socket-server.js +63 -46
  4. package/dist/js/modern/index.js +1 -1
  5. package/dist/js/modern/server/{dev-server/dev-server-split.js → dev-server-split.js} +0 -0
  6. package/dist/js/modern/server/{dev-server/dev-server.js → dev-server.js} +19 -14
  7. package/dist/js/modern/server/index.js +15 -138
  8. package/dist/js/modern/{libs/render/cache/type.js → types.js} +0 -0
  9. package/dist/js/node/dev-tools/mock/index.js +2 -2
  10. package/dist/js/node/dev-tools/socket-server.js +63 -47
  11. package/dist/js/node/index.js +2 -2
  12. package/dist/js/node/server/{dev-server/dev-server-split.js → dev-server-split.js} +0 -0
  13. package/dist/js/node/server/{dev-server/dev-server.js → dev-server.js} +22 -24
  14. package/dist/js/node/server/index.js +17 -152
  15. package/dist/js/node/{libs/render/cache/type.js → types.js} +0 -0
  16. package/dist/types/dev-tools/babel/register.d.ts +1 -1
  17. package/dist/types/dev-tools/dev-server-plugin.d.ts +1 -1
  18. package/dist/types/dev-tools/launch-editor/index.d.ts +1 -2
  19. package/dist/types/dev-tools/mock/getMockData.d.ts +1 -2
  20. package/dist/types/dev-tools/mock/index.d.ts +1 -2
  21. package/dist/types/dev-tools/socket-server.d.ts +5 -1
  22. package/dist/types/index.d.ts +4 -5
  23. package/dist/types/server/{dev-server/dev-server-split.d.ts → dev-server-split.d.ts} +5 -4
  24. package/dist/types/server/{dev-server/dev-server.d.ts → dev-server.d.ts} +4 -3
  25. package/dist/types/server/index.d.ts +4 -19
  26. package/dist/types/types.d.ts +28 -0
  27. package/modern.config.js +5 -1
  28. package/package.json +8 -39
  29. package/tests/dev.test.ts +17 -0
  30. package/tests/server.test.ts +10 -3
  31. package/dist/js/modern/constants.js +0 -26
  32. package/dist/js/modern/libs/context/context.js +0 -180
  33. package/dist/js/modern/libs/context/index.js +0 -3
  34. package/dist/js/modern/libs/hook-api/route.js +0 -39
  35. package/dist/js/modern/libs/hook-api/template.js +0 -61
  36. package/dist/js/modern/libs/metrics.js +0 -12
  37. package/dist/js/modern/libs/proxy.js +0 -59
  38. package/dist/js/modern/libs/render/cache/__tests__/cache.fun.test.js +0 -70
  39. package/dist/js/modern/libs/render/cache/__tests__/cache.test.js +0 -233
  40. package/dist/js/modern/libs/render/cache/__tests__/cacheable.js +0 -53
  41. package/dist/js/modern/libs/render/cache/__tests__/error-configuration.js +0 -35
  42. package/dist/js/modern/libs/render/cache/__tests__/matched-cache.js +0 -121
  43. package/dist/js/modern/libs/render/cache/index.js +0 -74
  44. package/dist/js/modern/libs/render/cache/page-caches/index.js +0 -9
  45. package/dist/js/modern/libs/render/cache/page-caches/lru.js +0 -35
  46. package/dist/js/modern/libs/render/cache/spr.js +0 -280
  47. package/dist/js/modern/libs/render/cache/util.js +0 -79
  48. package/dist/js/modern/libs/render/index.js +0 -65
  49. package/dist/js/modern/libs/render/modern/browser-list.js +0 -7
  50. package/dist/js/modern/libs/render/modern/index.js +0 -42
  51. package/dist/js/modern/libs/render/reader.js +0 -112
  52. package/dist/js/modern/libs/render/ssr.js +0 -58
  53. package/dist/js/modern/libs/render/static.js +0 -46
  54. package/dist/js/modern/libs/render/type.js +0 -7
  55. package/dist/js/modern/libs/route/index.js +0 -68
  56. package/dist/js/modern/libs/route/matcher.js +0 -94
  57. package/dist/js/modern/libs/route/route.js +0 -24
  58. package/dist/js/modern/libs/serve-file.js +0 -28
  59. package/dist/js/modern/server/dev-server/index.js +0 -2
  60. package/dist/js/modern/server/modern-server-split.js +0 -81
  61. package/dist/js/modern/server/modern-server.js +0 -584
  62. package/dist/js/modern/type.js +0 -1
  63. package/dist/js/modern/utils.js +0 -112
  64. package/dist/js/node/constants.js +0 -36
  65. package/dist/js/node/libs/context/context.js +0 -194
  66. package/dist/js/node/libs/context/index.js +0 -18
  67. package/dist/js/node/libs/hook-api/route.js +0 -48
  68. package/dist/js/node/libs/hook-api/template.js +0 -69
  69. package/dist/js/node/libs/metrics.js +0 -18
  70. package/dist/js/node/libs/proxy.js +0 -69
  71. package/dist/js/node/libs/render/cache/__tests__/cache.fun.test.js +0 -77
  72. package/dist/js/node/libs/render/cache/__tests__/cache.test.js +0 -238
  73. package/dist/js/node/libs/render/cache/__tests__/cacheable.js +0 -60
  74. package/dist/js/node/libs/render/cache/__tests__/error-configuration.js +0 -42
  75. package/dist/js/node/libs/render/cache/__tests__/matched-cache.js +0 -128
  76. package/dist/js/node/libs/render/cache/index.js +0 -86
  77. package/dist/js/node/libs/render/cache/page-caches/index.js +0 -17
  78. package/dist/js/node/libs/render/cache/page-caches/lru.js +0 -47
  79. package/dist/js/node/libs/render/cache/spr.js +0 -298
  80. package/dist/js/node/libs/render/cache/util.js +0 -105
  81. package/dist/js/node/libs/render/index.js +0 -91
  82. package/dist/js/node/libs/render/modern/browser-list.js +0 -14
  83. package/dist/js/node/libs/render/modern/index.js +0 -58
  84. package/dist/js/node/libs/render/reader.js +0 -139
  85. package/dist/js/node/libs/render/ssr.js +0 -76
  86. package/dist/js/node/libs/render/static.js +0 -62
  87. package/dist/js/node/libs/render/type.js +0 -14
  88. package/dist/js/node/libs/route/index.js +0 -83
  89. package/dist/js/node/libs/route/matcher.js +0 -108
  90. package/dist/js/node/libs/route/route.js +0 -33
  91. package/dist/js/node/libs/serve-file.js +0 -41
  92. package/dist/js/node/server/dev-server/index.js +0 -27
  93. package/dist/js/node/server/modern-server-split.js +0 -97
  94. package/dist/js/node/server/modern-server.js +0 -622
  95. package/dist/js/node/type.js +0 -5
  96. package/dist/js/node/utils.js +0 -143
  97. package/dist/types/constants.d.ts +0 -20
  98. package/dist/types/libs/context/context.d.ts +0 -61
  99. package/dist/types/libs/context/index.d.ts +0 -4
  100. package/dist/types/libs/hook-api/route.d.ts +0 -14
  101. package/dist/types/libs/hook-api/template.d.ts +0 -14
  102. package/dist/types/libs/metrics.d.ts +0 -3
  103. package/dist/types/libs/proxy.d.ts +0 -16
  104. package/dist/types/libs/render/cache/__tests__/cache.fun.test.d.ts +0 -1
  105. package/dist/types/libs/render/cache/__tests__/cache.test.d.ts +0 -1
  106. package/dist/types/libs/render/cache/__tests__/cacheable.d.ts +0 -62
  107. package/dist/types/libs/render/cache/__tests__/error-configuration.d.ts +0 -28
  108. package/dist/types/libs/render/cache/__tests__/matched-cache.d.ts +0 -124
  109. package/dist/types/libs/render/cache/index.d.ts +0 -6
  110. package/dist/types/libs/render/cache/page-caches/index.d.ts +0 -2
  111. package/dist/types/libs/render/cache/page-caches/lru.d.ts +0 -15
  112. package/dist/types/libs/render/cache/spr.d.ts +0 -24
  113. package/dist/types/libs/render/cache/type.d.ts +0 -48
  114. package/dist/types/libs/render/cache/util.d.ts +0 -17
  115. package/dist/types/libs/render/index.d.ts +0 -18
  116. package/dist/types/libs/render/modern/browser-list.d.ts +0 -1
  117. package/dist/types/libs/render/modern/index.d.ts +0 -3
  118. package/dist/types/libs/render/reader.d.ts +0 -18
  119. package/dist/types/libs/render/ssr.d.ts +0 -10
  120. package/dist/types/libs/render/static.d.ts +0 -3
  121. package/dist/types/libs/render/type.d.ts +0 -34
  122. package/dist/types/libs/route/index.d.ts +0 -15
  123. package/dist/types/libs/route/matcher.d.ts +0 -15
  124. package/dist/types/libs/route/route.d.ts +0 -14
  125. package/dist/types/libs/serve-file.d.ts +0 -8
  126. package/dist/types/server/dev-server/index.d.ts +0 -2
  127. package/dist/types/server/modern-server-split.d.ts +0 -26
  128. package/dist/types/server/modern-server.d.ts +0 -72
  129. package/dist/types/type.d.ts +0 -80
  130. package/dist/types/utils.d.ts +0 -19
  131. package/tests/context.test.ts +0 -52
  132. package/tests/fixtures/hosting-files/static/index.js +0 -1
  133. package/tests/fixtures/reader/index.ts +0 -3
  134. package/tests/fixtures/route-spec/dynamic.json +0 -13
  135. package/tests/fixtures/route-spec/index.json +0 -29
  136. package/tests/fixtures/ssr/bundle.js +0 -5
  137. package/tests/fixtures/static-dir/bar.html +0 -11
  138. package/tests/fixtures/static-dir/baz/index.html +0 -11
  139. package/tests/fixtures/static-dir/foo/index.html +0 -11
  140. package/tests/helper.ts +0 -8
  141. package/tests/hook.test.ts +0 -44
  142. package/tests/middleware.test.ts +0 -179
  143. package/tests/render.test.ts +0 -102
  144. package/tests/route.test.ts +0 -77
  145. package/tests/utils.test.ts +0 -106
@@ -15,29 +15,19 @@ var _utils = require("@modern-js/utils");
15
15
 
16
16
  var _webpackDevMiddleware = _interopRequireDefault(require("webpack-dev-middleware"));
17
17
 
18
- var _modernServer = require("../modern-server");
18
+ var _prodServer = require("@modern-js/prod-server");
19
19
 
20
- var _mock = require("../../dev-tools/mock");
20
+ var _mock = require("../dev-tools/mock");
21
21
 
22
- var _proxy = require("../../libs/proxy");
22
+ var _socketServer = _interopRequireDefault(require("../dev-tools/socket-server"));
23
23
 
24
- var _socketServer = _interopRequireDefault(require("../../dev-tools/socket-server"));
24
+ var _devServerPlugin = _interopRequireDefault(require("../dev-tools/dev-server-plugin"));
25
25
 
26
- var _devServerPlugin = _interopRequireDefault(require("../../dev-tools/dev-server-plugin"));
26
+ var _launchEditor = require("../dev-tools/launch-editor");
27
27
 
28
- var _launchEditor = require("../../dev-tools/launch-editor");
28
+ var _register = require("../dev-tools/babel/register");
29
29
 
30
- var _register = require("../../dev-tools/babel/register");
31
-
32
- var reader = _interopRequireWildcard(require("../../libs/render/reader"));
33
-
34
- var _watcher = _interopRequireDefault(require("../../dev-tools/watcher"));
35
-
36
- var _constants = require("../../constants");
37
-
38
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
39
-
40
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
30
+ var _watcher = _interopRequireDefault(require("../dev-tools/watcher"));
41
31
 
42
32
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
43
33
 
@@ -64,10 +54,9 @@ const DEFAULT_DEV_OPTIONS = {
64
54
  liveReload: true
65
55
  };
66
56
 
67
- class ModernDevServer extends _modernServer.ModernServer {
57
+ class ModernDevServer extends _prodServer.ModernServer {
68
58
  constructor(options) {
69
- super(options); // set webpack compiler
70
-
59
+ super(options);
71
60
  this.devProxyHandler = null;
72
61
  this.mockHandler = null;
73
62
  this.dev = void 0;
@@ -75,6 +64,8 @@ class ModernDevServer extends _modernServer.ModernServer {
75
64
  this.socketServer = void 0;
76
65
  this.watcher = void 0;
77
66
  this.devMiddleware = void 0;
67
+ this.workDir = this.pwd; // set webpack compiler
68
+
78
69
  this.compiler = options.compiler; // set dev server options, like webpack-dev-server
79
70
 
80
71
  this.dev = typeof options.dev === 'boolean' ? DEFAULT_DEV_OPTIONS : _objectSpread(_objectSpread({}, DEFAULT_DEV_OPTIONS), options.dev);
@@ -105,7 +96,7 @@ class ModernDevServer extends _modernServer.ModernServer {
105
96
  }
106
97
  }); // dev proxy handler, each proxy has own handler
107
98
 
108
- this.devProxyHandler = (0, _proxy.createProxyHandler)((_conf$tools = conf.tools) === null || _conf$tools === void 0 ? void 0 : (_conf$tools$devServer = _conf$tools.devServer) === null || _conf$tools$devServer === void 0 ? void 0 : _conf$tools$devServer.proxy);
99
+ this.devProxyHandler = (0, _prodServer.createProxyHandler)((_conf$tools = conf.tools) === null || _conf$tools === void 0 ? void 0 : (_conf$tools$devServer = _conf$tools.devServer) === null || _conf$tools$devServer === void 0 ? void 0 : _conf$tools$devServer.proxy);
109
100
 
110
101
  if (this.devProxyHandler) {
111
102
  this.devProxyHandler.forEach(handler => {
@@ -136,7 +127,7 @@ class ModernDevServer extends _modernServer.ModernServer {
136
127
  this.router.reset(this.filterRoutes(options.routes || this.presetRoutes || []));
137
128
  this.cleanSSRCache(); // reset static file
138
129
 
139
- reader.updateFile();
130
+ this.reader.updateFile();
140
131
  this.runner.reset();
141
132
  }
142
133
 
@@ -172,13 +163,16 @@ class ModernDevServer extends _modernServer.ModernServer {
172
163
  if (devHttpsOption) {
173
164
  const {
174
165
  genHttpsOptions
175
- } = require("../../dev-tools/https");
166
+ } = require("../dev-tools/https");
176
167
 
177
168
  const httpsOptions = await genHttpsOptions(devHttpsOption);
178
169
  return (0, _https.createServer)(httpsOptions, handler);
179
170
  } else {
180
171
  return (0, _http.createServer)(handler);
181
172
  }
173
+ }
174
+
175
+ warmupSSRBundle() {// empty
182
176
  } // set up plugin to each compiler
183
177
  // register hooks for each compilation, update socket stats if recompiled
184
178
  // start dev middleware
@@ -212,6 +206,10 @@ class ModernDevServer extends _modernServer.ModernServer {
212
206
  };
213
207
 
214
208
  const addHooks = compiler => {
209
+ if (compiler.name === 'server') {
210
+ return;
211
+ }
212
+
215
213
  const {
216
214
  compile,
217
215
  invalid,
@@ -274,7 +272,7 @@ class ModernDevServer extends _modernServer.ModernServer {
274
272
  } = this;
275
273
  const {
276
274
  mock
277
- } = _constants.AGGRED_DIR;
275
+ } = _prodServer.AGGRED_DIR;
278
276
  const defaultWatched = [`${mock}/**/*`, `${_utils.SERVER_DIR}/**/*`, `${_utils.API_DIR}/**`, `${_utils.SHARED_DIR}/**/*`];
279
277
  const defaultWatchedPaths = defaultWatched.map(p => _path.default.normalize(_path.default.join(pwd, p)));
280
278
 
@@ -3,168 +3,33 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.Server = void 0;
6
+ exports.DevServer = void 0;
7
7
 
8
- var _path = _interopRequireDefault(require("path"));
8
+ var _prodServer = require("@modern-js/prod-server");
9
9
 
10
- var _serverCore = require("@modern-js/server-core");
10
+ var _devServer = require("./dev-server");
11
11
 
12
- var _utils = require("@modern-js/utils");
12
+ var _devServerSplit = require("./dev-server-split");
13
13
 
14
- var _core = require("@modern-js/core");
15
-
16
- var _metrics = require("../libs/metrics");
17
-
18
- var _modernServer = require("./modern-server");
19
-
20
- var _modernServerSplit = require("./modern-server-split");
21
-
22
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
-
24
- 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; }
25
-
26
- 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; }
27
-
28
- 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; }
29
-
30
- class Server {
31
- constructor(options) {
32
- this.options = void 0;
33
- this.server = void 0;
34
- this.app = void 0;
35
- this.runner = void 0;
36
- this.options = options;
37
- }
38
-
39
- getRequestHandler() {
40
- return (req, res, next) => {
41
- const requestHandler = this.server.getRequestHandler();
42
- return requestHandler(req, res, next);
43
- };
14
+ const createDevServer = options => {
15
+ if (options.apiOnly) {
16
+ return new _devServerSplit.ModernAPIDevServer(options);
17
+ } else if (options.ssrOnly) {
18
+ return new _devServerSplit.ModernSSRDevServer(options);
19
+ } else {
20
+ return new _devServer.ModernDevServer(options);
44
21
  }
22
+ };
45
23
 
46
- ready(readyOptions = {}) {
47
- this.server.ready(readyOptions);
48
- }
49
-
50
- async init() {
51
- const {
52
- options
53
- } = this;
54
- options.logger = options.logger || _utils.logger;
55
- options.metrics = options.metrics || _metrics.metrics; // initialize server
24
+ class DevServer extends _prodServer.Server {
25
+ constructor(options) {
26
+ super(options);
56
27
 
57
28
  if (options.dev) {
58
- this.server = this.createDevServer();
59
- } else {
60
- this.server = this.createProdServer();
61
- } // check if https is configured when start dev server
62
-
63
-
64
- this.app = await this.server.createHTTPServer(this.getRequestHandler());
65
- this.runner = await this.createHookRunner(); // runner can only be used after server init
66
-
67
- await this.server.init(this.runner);
68
- return this;
69
- }
70
-
71
- listen(port = 8080, listener) {
72
- this.app.listen(process.env.PORT || port, () => {
73
- if (listener) {
74
- listener();
75
- }
76
-
77
- this.listener(this.app);
78
- });
79
- }
80
-
81
- listener(app) {
82
- this.server.onListening(app);
83
- }
84
-
85
- async close() {
86
- await this.server.close();
87
- await new Promise(resolve => this.app.close(() => {
88
- resolve();
89
- }));
90
- }
91
-
92
- createProdServer() {
93
- const {
94
- options
95
- } = this;
96
-
97
- if (options.apiOnly) {
98
- return new _modernServerSplit.ModernAPIServer(options);
99
- } else if (options.ssrOnly) {
100
- return new _modernServerSplit.ModernSSRServer(options);
101
- } else if (options.webOnly) {
102
- return new _modernServerSplit.ModernWebServer(options);
103
- } else {
104
- return new _modernServer.ModernServer(options);
29
+ this.serverImpl = createDevServer;
105
30
  }
106
31
  }
107
32
 
108
- createDevServer() {
109
- const {
110
- options
111
- } = this;
112
-
113
- const {
114
- ModernAPIDevServer,
115
- ModernSSRDevServer,
116
- ModernDevServer
117
- } = require("./dev-server");
118
-
119
- if (options.apiOnly) {
120
- return new ModernAPIDevServer(options);
121
- } else if (options.ssrOnly) {
122
- return new ModernSSRDevServer(options);
123
- } else {
124
- return new ModernDevServer(options);
125
- }
126
- }
127
-
128
- async createHookRunner() {
129
- var _options$plugins;
130
-
131
- const {
132
- options
133
- } = this;
134
-
135
- _serverCore.serverManager.clear();
136
-
137
- (_options$plugins = options.plugins) === null || _options$plugins === void 0 ? void 0 : _options$plugins.forEach(p => {
138
- _serverCore.serverManager.usePlugin((0, _utils.compatRequire)(p.pluginPath));
139
- });
140
- const appContext = await this.initAppContext();
141
-
142
- _serverCore.serverManager.run(() => {
143
- var _options$config$outpu;
144
-
145
- _serverCore.ConfigContext.set(this.options.config);
146
-
147
- _serverCore.AppContext.set(_objectSpread(_objectSpread({}, appContext), {}, {
148
- distDirectory: _path.default.join(options.pwd, ((_options$config$outpu = options.config.output) === null || _options$config$outpu === void 0 ? void 0 : _options$config$outpu.path) || 'dist')
149
- }));
150
- });
151
-
152
- return _serverCore.serverManager.init({});
153
- }
154
-
155
- async initAppContext() {
156
- var _this$options$plugins;
157
-
158
- const appDirectory = await (0, _core.initAppDir)();
159
- const loaded = await (0, _core.loadUserConfig)(appDirectory);
160
- const plugins = (_this$options$plugins = this.options.plugins) === null || _this$options$plugins === void 0 ? void 0 : _this$options$plugins.map(p => ({
161
- server: p,
162
- cli: undefined
163
- }));
164
- const appContext = (0, _core.initAppContext)(appDirectory, plugins || [], loaded.filePath);
165
- return appContext;
166
- }
167
-
168
33
  }
169
34
 
170
- exports.Server = Server;
35
+ exports.DevServer = DevServer;
@@ -1,2 +1,2 @@
1
- import { ModernServerOptions } from '../../type';
1
+ import { ModernServerOptions } from '@modern-js/prod-server';
2
2
  export declare const enableRegister: (projectRoot: string, config: ModernServerOptions['config']) => any;
@@ -1,5 +1,5 @@
1
1
  import Webpack from 'webpack';
2
- import { DevServerOptions } from '../type';
2
+ import { DevServerOptions } from '../types';
3
3
  export default class DevServerPlugin {
4
4
  private readonly options;
5
5
  constructor(options: DevServerOptions);
@@ -1,3 +1,2 @@
1
- import { ModernServerContext } from '../../libs/context';
2
- import { NextFunction } from '../../type';
1
+ import { ModernServerContext, NextFunction } from '@modern-js/types';
3
2
  export declare const createLaunchEditorHandler: () => (ctx: ModernServerContext, next: NextFunction) => void;
@@ -1,7 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  import { IncomingMessage, ServerResponse } from 'http';
3
- import { NextFunction } from '../../type';
4
- import { ModernServerContext } from '../../libs/context';
3
+ import { ModernServerContext, NextFunction } from '@modern-js/types';
5
4
  export declare type MockConfig = Record<string, {
6
5
  data: any;
7
6
  } | ((req: IncomingMessage, res: ServerResponse, next: NextFunction) => Promise<void>)>;
@@ -1,5 +1,4 @@
1
- import { NextFunction } from '../../type';
2
- import { ModernServerContext } from '../../libs/context';
1
+ import { ModernServerContext, NextFunction } from '@modern-js/types';
3
2
  export declare const createMockHandler: ({
4
3
  pwd
5
4
  }: {
@@ -1,18 +1,22 @@
1
1
  /// <reference types="node" />
2
2
  import { Server } from 'http';
3
+ import ws from 'ws';
3
4
  import type { Stats } from 'webpack';
4
- import { DevServerOptions } from '../type';
5
+ import { DevServerOptions } from '../types';
5
6
  export default class SocketServer {
6
7
  private wsServer;
7
8
  private readonly sockets;
8
9
  private readonly options;
9
10
  private app?;
10
11
  private stats?;
12
+ private timer;
11
13
  constructor(options: DevServerOptions);
12
14
  prepare(app: Server): void;
13
15
  updateStats(stats: Stats): void;
14
16
  sockWrite(type: string, data?: Record<string, any> | string | boolean): void;
17
+ singleWrite(socket: ws, type: string, data?: Record<string, any> | string | boolean): void;
15
18
  close(): void;
19
+ private onConnect;
16
20
  private getStats;
17
21
  private sendStats;
18
22
  private send;
@@ -1,9 +1,8 @@
1
- import { ModernServerOptions } from './type';
2
- import { Server } from './server';
3
- export type { SSRServerContext } from './libs/render/type';
1
+ import { DevServer as Server } from './server';
2
+ import { ModernDevServerOptions } from './types';
4
3
  export { Server };
5
- export type { ModernServerOptions };
4
+ export type { ModernDevServerOptions };
6
5
 
7
- declare const _default: (options: ModernServerOptions) => Promise<Server>;
6
+ declare const _default: (options: ModernDevServerOptions) => Promise<Server>;
8
7
 
9
8
  export default _default;
@@ -1,11 +1,12 @@
1
1
  import type { APIServerStartInput } from '@modern-js/server-core';
2
- import { mergeExtension } from '../../utils';
3
- import { ModernRouteInterface } from '../../libs/route';
4
- import { ApiServerMode } from '../../constants';
2
+ import { ServerRoute as ModernRouteInterface } from '@modern-js/types';
3
+ import { ApiServerMode } from '@modern-js/prod-server';
5
4
  import { ModernDevServer } from './dev-server';
6
5
  export declare class ModernSSRDevServer extends ModernDevServer {
7
6
  protected prepareAPIHandler(_m: ApiServerMode, _: APIServerStartInput['config']): any;
8
- protected prepareWebHandler(extension: ReturnType<typeof mergeExtension>): Promise<import("@modern-js/server-core").Adapter>;
7
+ protected prepareWebHandler(extension: {
8
+ middleware: any[];
9
+ }): Promise<import("@modern-js/server-core").Adapter>;
9
10
  protected filterRoutes(routes: ModernRouteInterface[]): ModernRouteInterface[];
10
11
  }
11
12
  export declare class ModernAPIDevServer extends ModernDevServer {
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  import http, { Server, IncomingMessage, ServerResponse } from 'http';
3
- import { ModernServer } from '../modern-server';
4
- import { ModernServerOptions, ServerHookRunner, ReadyOptions } from '../../type';
3
+ import { ServerHookRunner, ReadyOptions, ModernServer } from '@modern-js/prod-server';
4
+ import { ModernDevServerOptions } from '../types';
5
5
  export declare class ModernDevServer extends ModernServer {
6
6
  private devProxyHandler;
7
7
  private mockHandler;
@@ -10,12 +10,13 @@ export declare class ModernDevServer extends ModernServer {
10
10
  private socketServer;
11
11
  private watcher;
12
12
  private devMiddleware;
13
- constructor(options: ModernServerOptions);
13
+ constructor(options: ModernDevServerOptions);
14
14
  init(runner: ServerHookRunner): Promise<void>;
15
15
  ready(options?: ReadyOptions): void;
16
16
  onListening(app: Server): void;
17
17
  close(): Promise<void>;
18
18
  createHTTPServer(handler: (req: IncomingMessage, res: ServerResponse, next?: () => void) => void): Promise<http.Server | import("https").Server>;
19
+ protected warmupSSRBundle(): void;
19
20
  private setupCompiler;
20
21
  private setupDevServerPlugin;
21
22
  private setupHooks;
@@ -1,20 +1,5 @@
1
- /// <reference types="node" />
2
- import { IncomingMessage, ServerResponse, Server as httpServer } from 'http';
3
- import { ModernServerOptions, ReadyOptions } from '../type';
4
- export declare class Server {
5
- options: ModernServerOptions;
6
- private server;
7
- private app;
8
- private runner;
9
- constructor(options: ModernServerOptions);
10
- getRequestHandler(): (req: IncomingMessage, res: ServerResponse, next?: (() => void) | undefined) => void;
11
- ready(readyOptions?: ReadyOptions): void;
12
- init(): Promise<this>;
13
- listen(port: number | undefined, listener: any): void;
14
- listener(app: httpServer): void;
15
- close(): Promise<void>;
16
- private createProdServer;
17
- private createDevServer;
18
- private createHookRunner;
19
- private initAppContext;
1
+ import { Server } from '@modern-js/prod-server';
2
+ import { ModernDevServerOptions } from '../types';
3
+ export declare class DevServer extends Server {
4
+ constructor(options: ModernDevServerOptions);
20
5
  }
@@ -0,0 +1,28 @@
1
+ import { ModernServerOptions } from '@modern-js/prod-server';
2
+ import type Webpack from 'webpack';
3
+ export declare type DevServerOptions = {
4
+ client: {
5
+ port: string;
6
+ overlay: boolean;
7
+ logging: string;
8
+ path: string;
9
+ host: string;
10
+ progress?: boolean;
11
+ };
12
+ dev: {
13
+ writeToDisk: boolean | ((filename: string) => boolean);
14
+ };
15
+ watch: boolean;
16
+ hot: boolean | string;
17
+ liveReload: boolean;
18
+ https?: boolean | {
19
+ key: string;
20
+ cert: string;
21
+ };
22
+ [propName: string]: any;
23
+ };
24
+ export declare type ExtraOptions = {
25
+ dev?: boolean | Partial<DevServerOptions>;
26
+ compiler?: Webpack.MultiCompiler | Webpack.Compiler | null;
27
+ };
28
+ export declare type ModernDevServerOptions = ModernServerOptions & ExtraOptions;
package/modern.config.js CHANGED
@@ -1,2 +1,6 @@
1
1
  /** @type {import('@modern-js/module-tools').UserConfig} */
2
- module.exports = {};
2
+ module.exports = {
3
+ output: {
4
+ disableSourceMap: true,
5
+ },
6
+ };
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "modern",
12
12
  "modern.js"
13
13
  ],
14
- "version": "1.4.1",
14
+ "version": "1.4.4",
15
15
  "jsnext:source": "./src/index.ts",
16
16
  "types": "./dist/types/index.d.ts",
17
17
  "main": "./dist/js/node/index.js",
@@ -28,63 +28,32 @@
28
28
  }
29
29
  },
30
30
  "dependencies": {
31
- "@babel/core": "7.16.7",
32
- "@babel/compat-data": "^7.15.0",
33
- "@babel/preset-env": "^7.15.0",
34
- "@babel/preset-typescript": "^7.15.0",
31
+ "@modern-js/prod-server": "^1.0.1",
35
32
  "@babel/register": "^7.15.3",
36
- "@babel/runtime": "^7",
37
- "@modern-js/core": "^1.4.1",
38
- "@modern-js/hmr-client": "^1.2.1",
39
- "@modern-js/server-core": "^1.2.2",
33
+ "@modern-js/hmr-client": "^1.2.2",
40
34
  "@modern-js/server-utils": "^1.2.1",
41
- "@modern-js/bff-utils": "^1.2.2",
42
- "@modern-js/utils": "^1.3.1",
43
- "axios": "^0.24.0",
44
- "babel-plugin-module-resolver": "^4.1.0",
35
+ "@modern-js/utils": "^1.3.3",
45
36
  "chokidar": "^3.5.2",
46
- "compare-versions": "^3.6.0",
47
37
  "devcert": "^1.1.3",
48
- "fs-extra": "^10.0.0",
49
- "http-proxy-middleware": "^2.0.1",
50
- "ignore-styles": "^5.0.1",
51
38
  "launch-editor": "^2.2.1",
52
- "lru-cache": "^6.0.0",
53
- "mime-types": "^2.1.32",
54
39
  "minimatch": "^3.0.4",
55
- "parseurl": "^1.3.3",
56
40
  "path-to-regexp": "^6.2.0",
57
- "serialize-javascript": "^6.0.0",
58
- "serve-static": "^1.14.1",
59
41
  "tsconfig-paths": "^3.11.0",
60
- "ua-parser-js": "^0.7.28",
61
42
  "webpack-dev-middleware": "^5.0.0",
62
- "ws": "^8.2.0",
63
- "lodash.clone": "^4.5.0",
64
- "cookie": "^0.4.2"
43
+ "ws": "^8.2.0"
65
44
  },
66
45
  "devDependencies": {
46
+ "@modern-js/server-core": "^1.2.2",
47
+ "@modern-js/core": "^1.4.4",
67
48
  "@scripts/build": "0.0.0",
68
- "@modern-js/types": "^1.3.1",
49
+ "@modern-js/types": "^1.3.4",
69
50
  "@types/jest": "^26",
70
- "@types/lru-cache": "^5.1.1",
71
- "@types/mime-types": "^2.1.0",
72
51
  "@types/minimatch": "^3.0.5",
73
52
  "@types/node": "^14",
74
- "@types/parseurl": "^1.3.1",
75
- "@types/react": "^17",
76
- "@types/react-dom": "^17",
77
- "@types/serialize-javascript": "^5.0.1",
78
- "@types/serve-static": "^1.13.10",
79
- "@types/ua-parser-js": "^0.7.36",
80
53
  "@types/webpack-dev-middleware": "^5.0.2",
81
54
  "@types/ws": "^7.4.7",
82
- "@types/lodash.clone": "^4",
83
- "@types/cookie": "^0.4.1",
84
55
  "typescript": "^4",
85
56
  "webpack": "^5.54.0",
86
- "node-mocks-http": "^1.11.0",
87
- "portfinder": "^1.0.28",
88
57
  "jest": "^27",
89
58
  "@scripts/jest-config": "0.0.0",
90
59
  "websocket": "^1"
package/tests/dev.test.ts CHANGED
@@ -53,14 +53,31 @@ describe('test dev tools', () => {
53
53
 
54
54
  const socket = {
55
55
  state: 1,
56
+ readyState: 1,
57
+ data: '',
56
58
  close() {
57
59
  socket.state = 0;
60
+ },
61
+ send(data: string) {
62
+ socket.data = data;
63
+ },
64
+ on() {
58
65
  // empty
59
66
  },
60
67
  };
68
+
69
+ socketServer.onConnect(socket);
70
+
61
71
  socketServer.sockets = [socket];
72
+ socketServer.sockWrite('test');
73
+ expect(socket.data).toBe(JSON.stringify({ type: 'test' }));
74
+
75
+ socketServer.singleWrite(socket, 'single');
76
+ expect(socket.data).toBe(JSON.stringify({ type: 'single' }));
77
+
62
78
  socketServer.close();
63
79
  expect(socket.state).toBe(0);
80
+ app.close();
64
81
  });
65
82
 
66
83
  test('should dev server plugin work correctly', () => {