@modern-js/server 1.4.1 → 1.4.4-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/dist/js/modern/dev-tools/mock/index.js +1 -1
- package/dist/js/modern/dev-tools/socket-server.js +63 -46
- package/dist/js/modern/index.js +1 -1
- package/dist/js/modern/server/{dev-server/dev-server-split.js → dev-server-split.js} +0 -0
- package/dist/js/modern/server/{dev-server/dev-server.js → dev-server.js} +19 -14
- package/dist/js/modern/server/index.js +15 -138
- package/dist/js/modern/{libs/render/cache/type.js → types.js} +0 -0
- package/dist/js/node/dev-tools/mock/index.js +2 -2
- package/dist/js/node/dev-tools/socket-server.js +63 -47
- package/dist/js/node/index.js +2 -2
- package/dist/js/node/server/{dev-server/dev-server-split.js → dev-server-split.js} +0 -0
- package/dist/js/node/server/{dev-server/dev-server.js → dev-server.js} +22 -24
- package/dist/js/node/server/index.js +17 -152
- package/dist/js/node/{libs/render/cache/type.js → types.js} +0 -0
- package/dist/types/dev-tools/babel/register.d.ts +1 -2
- package/dist/types/dev-tools/dev-server-plugin.d.ts +1 -1
- package/dist/types/dev-tools/launch-editor/index.d.ts +1 -2
- package/dist/types/dev-tools/mock/getMockData.d.ts +1 -2
- package/dist/types/dev-tools/mock/index.d.ts +1 -2
- package/dist/types/dev-tools/socket-server.d.ts +5 -1
- package/dist/types/index.d.ts +4 -5
- package/dist/types/server/{dev-server/dev-server-split.d.ts → dev-server-split.d.ts} +6 -5
- package/dist/types/server/{dev-server/dev-server.d.ts → dev-server.d.ts} +4 -3
- package/dist/types/server/index.d.ts +4 -19
- package/dist/types/types.d.ts +28 -0
- package/modern.config.js +5 -1
- package/package.json +13 -42
- package/tests/dev.test.ts +17 -0
- package/tests/server.test.ts +10 -3
- package/dist/js/modern/constants.js +0 -26
- package/dist/js/modern/libs/context/context.js +0 -180
- package/dist/js/modern/libs/context/index.js +0 -3
- package/dist/js/modern/libs/hook-api/route.js +0 -39
- package/dist/js/modern/libs/hook-api/template.js +0 -61
- package/dist/js/modern/libs/metrics.js +0 -12
- package/dist/js/modern/libs/proxy.js +0 -59
- package/dist/js/modern/libs/render/cache/__tests__/cache.fun.test.js +0 -70
- package/dist/js/modern/libs/render/cache/__tests__/cache.test.js +0 -233
- package/dist/js/modern/libs/render/cache/__tests__/cacheable.js +0 -53
- package/dist/js/modern/libs/render/cache/__tests__/error-configuration.js +0 -35
- package/dist/js/modern/libs/render/cache/__tests__/matched-cache.js +0 -121
- package/dist/js/modern/libs/render/cache/index.js +0 -74
- package/dist/js/modern/libs/render/cache/page-caches/index.js +0 -9
- package/dist/js/modern/libs/render/cache/page-caches/lru.js +0 -35
- package/dist/js/modern/libs/render/cache/spr.js +0 -280
- package/dist/js/modern/libs/render/cache/util.js +0 -79
- package/dist/js/modern/libs/render/index.js +0 -65
- package/dist/js/modern/libs/render/modern/browser-list.js +0 -7
- package/dist/js/modern/libs/render/modern/index.js +0 -42
- package/dist/js/modern/libs/render/reader.js +0 -112
- package/dist/js/modern/libs/render/ssr.js +0 -58
- package/dist/js/modern/libs/render/static.js +0 -46
- package/dist/js/modern/libs/render/type.js +0 -7
- package/dist/js/modern/libs/route/index.js +0 -68
- package/dist/js/modern/libs/route/matcher.js +0 -94
- package/dist/js/modern/libs/route/route.js +0 -24
- package/dist/js/modern/libs/serve-file.js +0 -28
- package/dist/js/modern/server/dev-server/index.js +0 -2
- package/dist/js/modern/server/modern-server-split.js +0 -81
- package/dist/js/modern/server/modern-server.js +0 -584
- package/dist/js/modern/type.js +0 -1
- package/dist/js/modern/utils.js +0 -112
- package/dist/js/node/constants.js +0 -36
- package/dist/js/node/libs/context/context.js +0 -194
- package/dist/js/node/libs/context/index.js +0 -18
- package/dist/js/node/libs/hook-api/route.js +0 -48
- package/dist/js/node/libs/hook-api/template.js +0 -69
- package/dist/js/node/libs/metrics.js +0 -18
- package/dist/js/node/libs/proxy.js +0 -69
- package/dist/js/node/libs/render/cache/__tests__/cache.fun.test.js +0 -77
- package/dist/js/node/libs/render/cache/__tests__/cache.test.js +0 -238
- package/dist/js/node/libs/render/cache/__tests__/cacheable.js +0 -60
- package/dist/js/node/libs/render/cache/__tests__/error-configuration.js +0 -42
- package/dist/js/node/libs/render/cache/__tests__/matched-cache.js +0 -128
- package/dist/js/node/libs/render/cache/index.js +0 -86
- package/dist/js/node/libs/render/cache/page-caches/index.js +0 -17
- package/dist/js/node/libs/render/cache/page-caches/lru.js +0 -47
- package/dist/js/node/libs/render/cache/spr.js +0 -298
- package/dist/js/node/libs/render/cache/util.js +0 -105
- package/dist/js/node/libs/render/index.js +0 -91
- package/dist/js/node/libs/render/modern/browser-list.js +0 -14
- package/dist/js/node/libs/render/modern/index.js +0 -58
- package/dist/js/node/libs/render/reader.js +0 -139
- package/dist/js/node/libs/render/ssr.js +0 -76
- package/dist/js/node/libs/render/static.js +0 -62
- package/dist/js/node/libs/render/type.js +0 -14
- package/dist/js/node/libs/route/index.js +0 -83
- package/dist/js/node/libs/route/matcher.js +0 -108
- package/dist/js/node/libs/route/route.js +0 -33
- package/dist/js/node/libs/serve-file.js +0 -41
- package/dist/js/node/server/dev-server/index.js +0 -27
- package/dist/js/node/server/modern-server-split.js +0 -97
- package/dist/js/node/server/modern-server.js +0 -622
- package/dist/js/node/type.js +0 -5
- package/dist/js/node/utils.js +0 -143
- package/dist/types/constants.d.ts +0 -20
- package/dist/types/libs/context/context.d.ts +0 -61
- package/dist/types/libs/context/index.d.ts +0 -4
- package/dist/types/libs/hook-api/route.d.ts +0 -14
- package/dist/types/libs/hook-api/template.d.ts +0 -14
- package/dist/types/libs/metrics.d.ts +0 -3
- package/dist/types/libs/proxy.d.ts +0 -16
- package/dist/types/libs/render/cache/__tests__/cache.fun.test.d.ts +0 -1
- package/dist/types/libs/render/cache/__tests__/cache.test.d.ts +0 -1
- package/dist/types/libs/render/cache/__tests__/cacheable.d.ts +0 -62
- package/dist/types/libs/render/cache/__tests__/error-configuration.d.ts +0 -28
- package/dist/types/libs/render/cache/__tests__/matched-cache.d.ts +0 -124
- package/dist/types/libs/render/cache/index.d.ts +0 -6
- package/dist/types/libs/render/cache/page-caches/index.d.ts +0 -2
- package/dist/types/libs/render/cache/page-caches/lru.d.ts +0 -15
- package/dist/types/libs/render/cache/spr.d.ts +0 -24
- package/dist/types/libs/render/cache/type.d.ts +0 -48
- package/dist/types/libs/render/cache/util.d.ts +0 -17
- package/dist/types/libs/render/index.d.ts +0 -18
- package/dist/types/libs/render/modern/browser-list.d.ts +0 -1
- package/dist/types/libs/render/modern/index.d.ts +0 -3
- package/dist/types/libs/render/reader.d.ts +0 -18
- package/dist/types/libs/render/ssr.d.ts +0 -10
- package/dist/types/libs/render/static.d.ts +0 -3
- package/dist/types/libs/render/type.d.ts +0 -34
- package/dist/types/libs/route/index.d.ts +0 -15
- package/dist/types/libs/route/matcher.d.ts +0 -15
- package/dist/types/libs/route/route.d.ts +0 -14
- package/dist/types/libs/serve-file.d.ts +0 -8
- package/dist/types/server/dev-server/index.d.ts +0 -2
- package/dist/types/server/modern-server-split.d.ts +0 -26
- package/dist/types/server/modern-server.d.ts +0 -72
- package/dist/types/type.d.ts +0 -80
- package/dist/types/utils.d.ts +0 -19
- package/tests/context.test.ts +0 -52
- package/tests/fixtures/hosting-files/static/index.js +0 -1
- package/tests/fixtures/reader/index.ts +0 -3
- package/tests/fixtures/route-spec/dynamic.json +0 -13
- package/tests/fixtures/route-spec/index.json +0 -29
- package/tests/fixtures/ssr/bundle.js +0 -5
- package/tests/fixtures/static-dir/bar.html +0 -11
- package/tests/fixtures/static-dir/baz/index.html +0 -11
- package/tests/fixtures/static-dir/foo/index.html +0 -11
- package/tests/helper.ts +0 -8
- package/tests/hook.test.ts +0 -44
- package/tests/middleware.test.ts +0 -179
- package/tests/render.test.ts +0 -102
- package/tests/route.test.ts +0 -77
- 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
|
|
18
|
+
var _prodServer = require("@modern-js/prod-server");
|
|
19
19
|
|
|
20
|
-
var _mock = require("
|
|
20
|
+
var _mock = require("../dev-tools/mock");
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _socketServer = _interopRequireDefault(require("../dev-tools/socket-server"));
|
|
23
23
|
|
|
24
|
-
var
|
|
24
|
+
var _devServerPlugin = _interopRequireDefault(require("../dev-tools/dev-server-plugin"));
|
|
25
25
|
|
|
26
|
-
var
|
|
26
|
+
var _launchEditor = require("../dev-tools/launch-editor");
|
|
27
27
|
|
|
28
|
-
var
|
|
28
|
+
var _register = require("../dev-tools/babel/register");
|
|
29
29
|
|
|
30
|
-
var
|
|
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
|
|
57
|
+
class ModernDevServer extends _prodServer.ModernServer {
|
|
68
58
|
constructor(options) {
|
|
69
|
-
super(options);
|
|
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,
|
|
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("
|
|
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
|
-
} =
|
|
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.
|
|
6
|
+
exports.DevServer = void 0;
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _prodServer = require("@modern-js/prod-server");
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _devServer = require("./dev-server");
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _devServerSplit = require("./dev-server-split");
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
-
|
|
47
|
-
|
|
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.
|
|
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.
|
|
35
|
+
exports.DevServer = DevServer;
|
|
File without changes
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const enableRegister: (projectRoot: string, config: ModernServerOptions['config']) => any;
|
|
1
|
+
export declare const enableRegister: (projectRoot: string, config: NormalizedConfig) => any;
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import { ModernServerContext } from '
|
|
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 '
|
|
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,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 '../
|
|
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;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
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 {
|
|
4
|
+
export type { ModernDevServerOptions };
|
|
6
5
|
|
|
7
|
-
declare const _default: (options:
|
|
6
|
+
declare const _default: (options: ModernDevServerOptions) => Promise<Server>;
|
|
8
7
|
|
|
9
8
|
export default _default;
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import type { APIServerStartInput } from '@modern-js/server-core';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
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:
|
|
7
|
+
protected prepareWebHandler(extension: {
|
|
8
|
+
middleware: any[];
|
|
9
|
+
}): Promise<any>;
|
|
9
10
|
protected filterRoutes(routes: ModernRouteInterface[]): ModernRouteInterface[];
|
|
10
11
|
}
|
|
11
12
|
export declare class ModernAPIDevServer extends ModernDevServer {
|
|
12
|
-
protected prepareAPIHandler(mode: ApiServerMode, extension: APIServerStartInput['config']): Promise<
|
|
13
|
+
protected prepareAPIHandler(mode: ApiServerMode, extension: APIServerStartInput['config']): Promise<any>;
|
|
13
14
|
protected filterRoutes(routes: ModernRouteInterface[]): ModernRouteInterface[];
|
|
14
15
|
protected preServerInit(): Promise<void>;
|
|
15
16
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import http, { Server, IncomingMessage, ServerResponse } from 'http';
|
|
3
|
-
import { ModernServer } from '
|
|
4
|
-
import {
|
|
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:
|
|
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
|
-
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
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
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"modern",
|
|
12
12
|
"modern.js"
|
|
13
13
|
],
|
|
14
|
-
"version": "1.4.
|
|
14
|
+
"version": "1.4.4-beta.0",
|
|
15
15
|
"jsnext:source": "./src/index.ts",
|
|
16
16
|
"types": "./dist/types/index.d.ts",
|
|
17
17
|
"main": "./dist/js/node/index.js",
|
|
@@ -28,65 +28,35 @@
|
|
|
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",
|
|
35
31
|
"@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",
|
|
40
|
-
"@modern-js/server-utils": "^1.2.1",
|
|
41
32
|
"@modern-js/bff-utils": "^1.2.2",
|
|
42
|
-
"@modern-js/
|
|
43
|
-
"
|
|
44
|
-
"
|
|
33
|
+
"@modern-js/hmr-client": "^1.2.2",
|
|
34
|
+
"@modern-js/prod-server": "^1.0.0",
|
|
35
|
+
"@modern-js/server-utils": "^1.2.1",
|
|
36
|
+
"@modern-js/utils": "^1.3.2",
|
|
45
37
|
"chokidar": "^3.5.2",
|
|
46
|
-
"compare-versions": "^3.6.0",
|
|
47
38
|
"devcert": "^1.1.3",
|
|
48
|
-
"fs-extra": "^10.0.0",
|
|
49
|
-
"http-proxy-middleware": "^2.0.1",
|
|
50
|
-
"ignore-styles": "^5.0.1",
|
|
51
39
|
"launch-editor": "^2.2.1",
|
|
52
|
-
"lru-cache": "^6.0.0",
|
|
53
|
-
"mime-types": "^2.1.32",
|
|
54
40
|
"minimatch": "^3.0.4",
|
|
55
|
-
"parseurl": "^1.3.3",
|
|
56
41
|
"path-to-regexp": "^6.2.0",
|
|
57
|
-
"serialize-javascript": "^6.0.0",
|
|
58
|
-
"serve-static": "^1.14.1",
|
|
59
42
|
"tsconfig-paths": "^3.11.0",
|
|
60
|
-
"ua-parser-js": "^0.7.28",
|
|
61
43
|
"webpack-dev-middleware": "^5.0.0",
|
|
62
|
-
"ws": "^8.2.0"
|
|
63
|
-
"lodash.clone": "^4.5.0",
|
|
64
|
-
"cookie": "^0.4.2"
|
|
44
|
+
"ws": "^8.2.0"
|
|
65
45
|
},
|
|
66
46
|
"devDependencies": {
|
|
47
|
+
"@modern-js/core": "^1.4.3",
|
|
48
|
+
"@modern-js/server-core": "^1.2.2",
|
|
49
|
+
"@modern-js/types": "^1.3.3",
|
|
67
50
|
"@scripts/build": "0.0.0",
|
|
68
|
-
"@
|
|
51
|
+
"@scripts/jest-config": "0.0.0",
|
|
69
52
|
"@types/jest": "^26",
|
|
70
|
-
"@types/lru-cache": "^5.1.1",
|
|
71
|
-
"@types/mime-types": "^2.1.0",
|
|
72
53
|
"@types/minimatch": "^3.0.5",
|
|
73
54
|
"@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
55
|
"@types/webpack-dev-middleware": "^5.0.2",
|
|
81
56
|
"@types/ws": "^7.4.7",
|
|
82
|
-
"
|
|
83
|
-
"@types/cookie": "^0.4.1",
|
|
57
|
+
"jest": "^27",
|
|
84
58
|
"typescript": "^4",
|
|
85
59
|
"webpack": "^5.54.0",
|
|
86
|
-
"node-mocks-http": "^1.11.0",
|
|
87
|
-
"portfinder": "^1.0.28",
|
|
88
|
-
"jest": "^27",
|
|
89
|
-
"@scripts/jest-config": "0.0.0",
|
|
90
60
|
"websocket": "^1"
|
|
91
61
|
},
|
|
92
62
|
"peerDependencies": {
|
|
@@ -100,7 +70,8 @@
|
|
|
100
70
|
},
|
|
101
71
|
"publishConfig": {
|
|
102
72
|
"registry": "https://registry.npmjs.org/",
|
|
103
|
-
"access": "public"
|
|
73
|
+
"access": "public",
|
|
74
|
+
"types": "./dist/types/index.d.ts"
|
|
104
75
|
},
|
|
105
76
|
"scripts": {
|
|
106
77
|
"new": "modern new",
|
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', () => {
|