@modern-js/server 1.2.1-beta.1 → 1.2.2-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 +10 -0
- package/dist/js/modern/dev-tools/mock/index.js +1 -1
- package/dist/js/modern/dev-tools/watcher/index.js +3 -5
- package/dist/js/modern/libs/render/cache/index.js +1 -1
- package/dist/js/modern/libs/render/index.js +1 -1
- package/dist/js/modern/libs/render/modern/index.js +3 -1
- package/dist/js/modern/server/dev-server/dev-server.js +9 -3
- package/dist/js/modern/server/index.js +3 -3
- package/dist/js/modern/server/modern-server.js +3 -2
- package/dist/js/modern/utils.js +23 -0
- package/dist/js/node/dev-tools/mock/index.js +2 -2
- package/dist/js/node/dev-tools/watcher/index.js +3 -5
- package/dist/js/node/libs/render/cache/index.js +2 -2
- package/dist/js/node/libs/render/index.js +2 -2
- package/dist/js/node/libs/render/modern/index.js +3 -3
- package/dist/js/node/server/dev-server/dev-server.js +11 -3
- package/dist/js/node/server/index.js +4 -4
- package/dist/js/node/server/modern-server.js +4 -3
- package/dist/js/node/utils.js +28 -2
- package/dist/types/dev-tools/watcher/index.d.ts +2 -1
- package/dist/types/libs/metrics.d.ts +1 -1
- package/dist/types/libs/render/index.d.ts +1 -2
- package/dist/types/libs/render/ssr.d.ts +1 -2
- package/dist/types/server/dev-server/dev-server-split.d.ts +3 -3
- package/dist/types/server/dev-server/dev-server.d.ts +1 -1
- package/dist/types/server/index.d.ts +2 -2
- package/dist/types/server/modern-server-split.d.ts +4 -4
- package/dist/types/server/modern-server.d.ts +10 -7
- package/dist/types/utils.d.ts +10 -1
- package/dist.zip +0 -0
- package/jest.config.js +8 -0
- package/package.json +16 -10
- package/src/dev-tools/mock/index.ts +1 -1
- package/src/dev-tools/socket-server.ts +1 -1
- package/src/dev-tools/watcher/index.ts +9 -6
- package/src/libs/metrics.ts +1 -1
- package/src/libs/render/cache/index.ts +1 -1
- package/src/libs/render/index.ts +2 -3
- package/src/libs/render/modern/index.ts +2 -1
- package/src/libs/render/ssr.ts +1 -2
- package/src/server/dev-server/dev-server-split.ts +3 -3
- package/src/server/dev-server/dev-server.ts +44 -31
- package/src/server/index.ts +4 -4
- package/src/server/modern-server-split.ts +4 -4
- package/src/server/modern-server.ts +23 -14
- package/src/utils.ts +28 -0
- package/tests/dev.test.ts +39 -0
- package/tests/fixtures/pure/tsconfig.json +1 -1
- package/tests/middleware.test.ts +12 -11
- package/tests/server.test.ts +13 -1
- package/tests/tsconfig.json +1 -3
- package/tests/utils.test.ts +31 -0
- package/tsconfig.json +1 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# @modern-js/server
|
|
2
2
|
|
|
3
|
+
## 1.2.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- e51b1db3: feat: support custom sdk, interceptor, headers for bff request
|
|
8
|
+
- Updated dependencies [e51b1db3]
|
|
9
|
+
- Updated dependencies [b7fb82ec]
|
|
10
|
+
- @modern-js/server-plugin@1.1.4
|
|
11
|
+
- @modern-js/utils@1.1.6
|
|
12
|
+
|
|
3
13
|
## 1.2.0
|
|
4
14
|
|
|
5
15
|
### Minor Changes
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import { fs } from '@modern-js/utils';
|
|
3
3
|
import { match } from 'path-to-regexp';
|
|
4
|
-
import getMockData from "./getMockData";
|
|
5
4
|
import { AGGRED_DIR } from "../../constants";
|
|
5
|
+
import getMockData from "./getMockData";
|
|
6
6
|
|
|
7
7
|
const getMatched = (context, mockApiList) => {
|
|
8
8
|
const {
|
|
@@ -19,13 +19,11 @@ export default class Watcher {
|
|
|
19
19
|
this.watcher = void 0;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
listen(files, callback) {
|
|
22
|
+
listen(files, options, callback) {
|
|
23
23
|
const watched = files.filter(Boolean);
|
|
24
|
+
const filenames = watched.map(filename => filename.replace(/\\/g, '/'));
|
|
24
25
|
const cache = new StatsCache();
|
|
25
|
-
const watcher = chokidar.watch(
|
|
26
|
-
// 初始化的时候不触发 add、addDir 事件
|
|
27
|
-
ignoreInitial: true
|
|
28
|
-
});
|
|
26
|
+
const watcher = chokidar.watch(filenames, options);
|
|
29
27
|
watcher.on('ready', () => {
|
|
30
28
|
cache.add(getWatchedFiles(watcher));
|
|
31
29
|
});
|
|
@@ -4,9 +4,9 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
4
4
|
|
|
5
5
|
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
6
|
|
|
7
|
+
import { ERROR_DIGEST } from "../../../constants";
|
|
7
8
|
import { createCache } from "./spr";
|
|
8
9
|
import { namespaceHash, withCoalescedInvoke } from "./util";
|
|
9
|
-
import { ERROR_DIGEST } from "../../../constants";
|
|
10
10
|
export default ((renderFn, ctx) => {
|
|
11
11
|
const sprCache = createCache();
|
|
12
12
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
2
|
import { fs } from '@modern-js/utils';
|
|
3
3
|
import mime from 'mime-types';
|
|
4
|
+
import { ERROR_DIGEST } from "../../constants";
|
|
4
5
|
import { handleDirectory } from "./static";
|
|
5
6
|
import { readFile } from "./reader";
|
|
6
7
|
import * as ssr from "./ssr";
|
|
7
8
|
import { supportModern, getModernEntry } from "./modern";
|
|
8
|
-
import { ERROR_DIGEST } from "../../constants";
|
|
9
9
|
export const createRenderHandler = ({
|
|
10
10
|
distDir,
|
|
11
11
|
staticGenerate
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import Parser from 'ua-parser-js';
|
|
2
|
-
import nativeModules from '@babel/compat-data/native-modules';
|
|
3
2
|
import compareVersions from 'compare-versions';
|
|
4
3
|
import { NativeModuleNameMap } from "./browser-list";
|
|
4
|
+
|
|
5
|
+
const nativeModules = require('@babel/compat-data/native-modules');
|
|
6
|
+
|
|
5
7
|
export const supportModern = context => {
|
|
6
8
|
if (context.query.modern_es6) {
|
|
7
9
|
return true;
|
|
@@ -239,16 +239,22 @@ export class ModernDevServer extends ModernServer {
|
|
|
239
239
|
const {
|
|
240
240
|
mock
|
|
241
241
|
} = AGGRED_DIR;
|
|
242
|
-
const defaultWatched = [`${
|
|
242
|
+
const defaultWatched = [`${mock}/**/*`, `${SERVER_DIR}/**/*`, `${API_DIR}/**`, `${SHARED_DIR}/**/*`];
|
|
243
|
+
const defaultWatchedPaths = defaultWatched.map(p => path.normalize(path.join(pwd, p)));
|
|
244
|
+
const mockPath = path.normalize(path.join(pwd, mock));
|
|
243
245
|
const watcher = new Watcher();
|
|
244
246
|
watcher.createDepTree(); // 监听文件变动,如果有变动则给 client,也就是 start 启动的插件发消息
|
|
245
247
|
|
|
246
|
-
watcher.listen(
|
|
248
|
+
watcher.listen(defaultWatchedPaths, {
|
|
249
|
+
// 初始化的时候不触发 add、addDir 事件
|
|
250
|
+
ignoreInitial: true,
|
|
251
|
+
ignored: /api\/typings\/**/
|
|
252
|
+
}, filepath => {
|
|
247
253
|
watcher.updateDepTree();
|
|
248
254
|
watcher.cleanDepCache(filepath);
|
|
249
255
|
this.runner.reset();
|
|
250
256
|
|
|
251
|
-
if (filepath.startsWith(
|
|
257
|
+
if (filepath.startsWith(mockPath)) {
|
|
252
258
|
this.mockHandler = createMockHandler({
|
|
253
259
|
pwd
|
|
254
260
|
});
|
|
@@ -8,9 +8,9 @@ import path from 'path';
|
|
|
8
8
|
import { serverManager } from '@modern-js/server-plugin';
|
|
9
9
|
import { logger as defaultLogger } from '@modern-js/utils';
|
|
10
10
|
import { AppContext, initAppContext, initAppDir, loadUserConfig, ConfigContext } from '@modern-js/core';
|
|
11
|
+
import { metrics as defaultMetrics } from "../libs/metrics";
|
|
11
12
|
import { ModernServer } from "./modern-server";
|
|
12
13
|
import { ModernAPIServer, ModernSSRServer, ModernWebServer } from "./modern-server-split";
|
|
13
|
-
import { metrics as defaultMetrics } from "../libs/metrics";
|
|
14
14
|
export class Server {
|
|
15
15
|
constructor(options) {
|
|
16
16
|
this.options = void 0;
|
|
@@ -52,8 +52,8 @@ export class Server {
|
|
|
52
52
|
return this;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
listen(port, listener) {
|
|
56
|
-
this.app.listen(
|
|
55
|
+
listen(port = 8080, listener) {
|
|
56
|
+
this.app.listen(process.env.PORT || port, () => {
|
|
57
57
|
if (listener) {
|
|
58
58
|
listener();
|
|
59
59
|
}
|
|
@@ -15,13 +15,13 @@ import { createServer } from 'http';
|
|
|
15
15
|
import util from 'util';
|
|
16
16
|
import path from 'path';
|
|
17
17
|
import { fs, ROUTE_SPEC_FILE } from '@modern-js/utils';
|
|
18
|
-
import { createMiddlewareCollecter } from '@modern-js/server-utils';
|
|
19
18
|
import mime from 'mime-types';
|
|
20
19
|
import axios from 'axios';
|
|
20
|
+
import clone from 'lodash.clone';
|
|
21
21
|
import { RouteMatchManager } from "../libs/route";
|
|
22
22
|
import { createRenderHandler } from "../libs/render";
|
|
23
23
|
import { createStaticFileHandler } from "../libs/serve-file";
|
|
24
|
-
import { createErrorDocument, mergeExtension, noop } from "../utils";
|
|
24
|
+
import { createErrorDocument, createMiddlewareCollecter, mergeExtension, noop } from "../utils";
|
|
25
25
|
import * as reader from "../libs/render/reader";
|
|
26
26
|
import { createProxyHandler } from "../libs/proxy";
|
|
27
27
|
import { createContext } from "../libs/context";
|
|
@@ -273,6 +273,7 @@ export class ModernServer {
|
|
|
273
273
|
}
|
|
274
274
|
|
|
275
275
|
async emitRouteHook(eventName, input) {
|
|
276
|
+
input.context = clone(input.context);
|
|
276
277
|
return this.runner[eventName](input, {
|
|
277
278
|
onLast: noop
|
|
278
279
|
});
|
package/dist/js/modern/utils.js
CHANGED
|
@@ -47,4 +47,27 @@ export const createErrorDocument = (status, text) => {
|
|
|
47
47
|
</body>
|
|
48
48
|
</html>
|
|
49
49
|
`;
|
|
50
|
+
};
|
|
51
|
+
export const createMiddlewareCollecter = () => {
|
|
52
|
+
const webMiddlewares = [];
|
|
53
|
+
const apiMiddlewares = [];
|
|
54
|
+
|
|
55
|
+
const addWebMiddleware = input => {
|
|
56
|
+
webMiddlewares.push(input);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const addAPIMiddleware = input => {
|
|
60
|
+
apiMiddlewares.push(input);
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
const getMiddlewares = () => ({
|
|
64
|
+
web: webMiddlewares,
|
|
65
|
+
api: apiMiddlewares
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
return {
|
|
69
|
+
getMiddlewares,
|
|
70
|
+
addWebMiddleware,
|
|
71
|
+
addAPIMiddleware
|
|
72
|
+
};
|
|
50
73
|
};
|
|
@@ -11,10 +11,10 @@ var _utils = require("@modern-js/utils");
|
|
|
11
11
|
|
|
12
12
|
var _pathToRegexp = require("path-to-regexp");
|
|
13
13
|
|
|
14
|
-
var _getMockData = _interopRequireDefault(require("./getMockData"));
|
|
15
|
-
|
|
16
14
|
var _constants = require("../../constants");
|
|
17
15
|
|
|
16
|
+
var _getMockData = _interopRequireDefault(require("./getMockData"));
|
|
17
|
+
|
|
18
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
19
|
|
|
20
20
|
const getMatched = (context, mockApiList) => {
|
|
@@ -30,14 +30,12 @@ class Watcher {
|
|
|
30
30
|
this.watcher = void 0;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
listen(files, callback) {
|
|
33
|
+
listen(files, options, callback) {
|
|
34
34
|
const watched = files.filter(Boolean);
|
|
35
|
+
const filenames = watched.map(filename => filename.replace(/\\/g, '/'));
|
|
35
36
|
const cache = new _statsCache.StatsCache();
|
|
36
37
|
|
|
37
|
-
const watcher = _chokidar.default.watch(
|
|
38
|
-
// 初始化的时候不触发 add、addDir 事件
|
|
39
|
-
ignoreInitial: true
|
|
40
|
-
});
|
|
38
|
+
const watcher = _chokidar.default.watch(filenames, options);
|
|
41
39
|
|
|
42
40
|
watcher.on('ready', () => {
|
|
43
41
|
cache.add(getWatchedFiles(watcher));
|
|
@@ -5,12 +5,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
|
|
8
|
+
var _constants = require("../../../constants");
|
|
9
|
+
|
|
8
10
|
var _spr = require("./spr");
|
|
9
11
|
|
|
10
12
|
var _util = require("./util");
|
|
11
13
|
|
|
12
|
-
var _constants = require("../../../constants");
|
|
13
|
-
|
|
14
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
15
|
|
|
16
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; }
|
|
@@ -11,6 +11,8 @@ var _utils = require("@modern-js/utils");
|
|
|
11
11
|
|
|
12
12
|
var _mimeTypes = _interopRequireDefault(require("mime-types"));
|
|
13
13
|
|
|
14
|
+
var _constants = require("../../constants");
|
|
15
|
+
|
|
14
16
|
var _static = require("./static");
|
|
15
17
|
|
|
16
18
|
var _reader = require("./reader");
|
|
@@ -19,8 +21,6 @@ var ssr = _interopRequireWildcard(require("./ssr"));
|
|
|
19
21
|
|
|
20
22
|
var _modern = require("./modern");
|
|
21
23
|
|
|
22
|
-
var _constants = require("../../constants");
|
|
23
|
-
|
|
24
24
|
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); }
|
|
25
25
|
|
|
26
26
|
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; }
|
|
@@ -7,14 +7,14 @@ exports.supportModern = exports.getModernEntry = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _uaParserJs = _interopRequireDefault(require("ua-parser-js"));
|
|
9
9
|
|
|
10
|
-
var _nativeModules = _interopRequireDefault(require("@babel/compat-data/native-modules"));
|
|
11
|
-
|
|
12
10
|
var _compareVersions = _interopRequireDefault(require("compare-versions"));
|
|
13
11
|
|
|
14
12
|
var _browserList = require("./browser-list");
|
|
15
13
|
|
|
16
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
15
|
|
|
16
|
+
const nativeModules = require('@babel/compat-data/native-modules');
|
|
17
|
+
|
|
18
18
|
const supportModern = context => {
|
|
19
19
|
if (context.query.modern_es6) {
|
|
20
20
|
return true;
|
|
@@ -41,7 +41,7 @@ const supportModern = context => {
|
|
|
41
41
|
return false;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
const version =
|
|
44
|
+
const version = nativeModules['es6.module'][nativeUAName];
|
|
45
45
|
|
|
46
46
|
if (!version) {
|
|
47
47
|
return false;
|
|
@@ -268,16 +268,24 @@ class ModernDevServer extends _modernServer.ModernServer {
|
|
|
268
268
|
const {
|
|
269
269
|
mock
|
|
270
270
|
} = _constants.AGGRED_DIR;
|
|
271
|
-
const defaultWatched = [`${
|
|
271
|
+
const defaultWatched = [`${mock}/**/*`, `${_utils.SERVER_DIR}/**/*`, `${_utils.API_DIR}/**`, `${_utils.SHARED_DIR}/**/*`];
|
|
272
|
+
const defaultWatchedPaths = defaultWatched.map(p => _path.default.normalize(_path.default.join(pwd, p)));
|
|
273
|
+
|
|
274
|
+
const mockPath = _path.default.normalize(_path.default.join(pwd, mock));
|
|
275
|
+
|
|
272
276
|
const watcher = new _watcher.default();
|
|
273
277
|
watcher.createDepTree(); // 监听文件变动,如果有变动则给 client,也就是 start 启动的插件发消息
|
|
274
278
|
|
|
275
|
-
watcher.listen(
|
|
279
|
+
watcher.listen(defaultWatchedPaths, {
|
|
280
|
+
// 初始化的时候不触发 add、addDir 事件
|
|
281
|
+
ignoreInitial: true,
|
|
282
|
+
ignored: /api\/typings\/**/
|
|
283
|
+
}, filepath => {
|
|
276
284
|
watcher.updateDepTree();
|
|
277
285
|
watcher.cleanDepCache(filepath);
|
|
278
286
|
this.runner.reset();
|
|
279
287
|
|
|
280
|
-
if (filepath.startsWith(
|
|
288
|
+
if (filepath.startsWith(mockPath)) {
|
|
281
289
|
this.mockHandler = (0, _mock.createMockHandler)({
|
|
282
290
|
pwd
|
|
283
291
|
});
|
|
@@ -13,12 +13,12 @@ var _utils = require("@modern-js/utils");
|
|
|
13
13
|
|
|
14
14
|
var _core = require("@modern-js/core");
|
|
15
15
|
|
|
16
|
+
var _metrics = require("../libs/metrics");
|
|
17
|
+
|
|
16
18
|
var _modernServer = require("./modern-server");
|
|
17
19
|
|
|
18
20
|
var _modernServerSplit = require("./modern-server-split");
|
|
19
21
|
|
|
20
|
-
var _metrics = require("../libs/metrics");
|
|
21
|
-
|
|
22
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
23
23
|
|
|
24
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; }
|
|
@@ -68,8 +68,8 @@ class Server {
|
|
|
68
68
|
return this;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
listen(port, listener) {
|
|
72
|
-
this.app.listen(
|
|
71
|
+
listen(port = 8080, listener) {
|
|
72
|
+
this.app.listen(process.env.PORT || port, () => {
|
|
73
73
|
if (listener) {
|
|
74
74
|
listener();
|
|
75
75
|
}
|
|
@@ -13,12 +13,12 @@ var _path = _interopRequireDefault(require("path"));
|
|
|
13
13
|
|
|
14
14
|
var _utils = require("@modern-js/utils");
|
|
15
15
|
|
|
16
|
-
var _serverUtils = require("@modern-js/server-utils");
|
|
17
|
-
|
|
18
16
|
var _mimeTypes = _interopRequireDefault(require("mime-types"));
|
|
19
17
|
|
|
20
18
|
var _axios = _interopRequireDefault(require("axios"));
|
|
21
19
|
|
|
20
|
+
var _lodash = _interopRequireDefault(require("lodash.clone"));
|
|
21
|
+
|
|
22
22
|
var _route = require("../libs/route");
|
|
23
23
|
|
|
24
24
|
var _render = require("../libs/render");
|
|
@@ -232,7 +232,7 @@ class ModernServer {
|
|
|
232
232
|
runner
|
|
233
233
|
} = this; // server hook, gather plugin inject
|
|
234
234
|
|
|
235
|
-
const _createMiddlewareColl = (0,
|
|
235
|
+
const _createMiddlewareColl = (0, _utils2.createMiddlewareCollecter)(),
|
|
236
236
|
{
|
|
237
237
|
getMiddlewares
|
|
238
238
|
} = _createMiddlewareColl,
|
|
@@ -307,6 +307,7 @@ class ModernServer {
|
|
|
307
307
|
}
|
|
308
308
|
|
|
309
309
|
async emitRouteHook(eventName, input) {
|
|
310
|
+
input.context = (0, _lodash.default)(input.context);
|
|
310
311
|
return this.runner[eventName](input, {
|
|
311
312
|
onLast: _utils2.noop
|
|
312
313
|
});
|
package/dist/js/node/utils.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.toMessage = exports.noop = exports.mergeExtension = exports.createErrorDocument = void 0;
|
|
6
|
+
exports.toMessage = exports.noop = exports.mergeExtension = exports.createMiddlewareCollecter = exports.createErrorDocument = void 0;
|
|
7
7
|
|
|
8
8
|
const mergeExtension = users => {
|
|
9
9
|
const output = [];
|
|
@@ -65,4 +65,30 @@ const createErrorDocument = (status, text) => {
|
|
|
65
65
|
`;
|
|
66
66
|
};
|
|
67
67
|
|
|
68
|
-
exports.createErrorDocument = createErrorDocument;
|
|
68
|
+
exports.createErrorDocument = createErrorDocument;
|
|
69
|
+
|
|
70
|
+
const createMiddlewareCollecter = () => {
|
|
71
|
+
const webMiddlewares = [];
|
|
72
|
+
const apiMiddlewares = [];
|
|
73
|
+
|
|
74
|
+
const addWebMiddleware = input => {
|
|
75
|
+
webMiddlewares.push(input);
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
const addAPIMiddleware = input => {
|
|
79
|
+
apiMiddlewares.push(input);
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
const getMiddlewares = () => ({
|
|
83
|
+
web: webMiddlewares,
|
|
84
|
+
api: apiMiddlewares
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
return {
|
|
88
|
+
getMiddlewares,
|
|
89
|
+
addWebMiddleware,
|
|
90
|
+
addAPIMiddleware
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
exports.createMiddlewareCollecter = createMiddlewareCollecter;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { WatchOptions } from 'chokidar';
|
|
1
2
|
export default class Watcher {
|
|
2
3
|
private dependencyTree;
|
|
3
4
|
private watcher;
|
|
4
|
-
listen(files: string[], callback: (changed: string) => void): void;
|
|
5
|
+
listen(files: string[], options: WatchOptions, callback: (changed: string) => void): void;
|
|
5
6
|
createDepTree(): void;
|
|
6
7
|
updateDepTree(): void;
|
|
7
8
|
cleanDepCache(filepath: string): void;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { RenderResult } from '../../type';
|
|
1
|
+
import { RenderResult, ServerHookRunner } from '../../type';
|
|
2
2
|
import { ModernRoute } from '../route';
|
|
3
3
|
import { ModernServerContext } from '../context';
|
|
4
|
-
import { ServerHookRunner } from "../../type.d";
|
|
5
4
|
export declare const createRenderHandler: ({
|
|
6
5
|
distDir,
|
|
7
6
|
staticGenerate
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ModernServerContext } from '../context';
|
|
2
|
-
import { RenderResult } from '../../type';
|
|
3
|
-
import { ServerHookRunner } from "../../type.d";
|
|
2
|
+
import { RenderResult, ServerHookRunner } from '../../type';
|
|
4
3
|
export declare const render: (ctx: ModernServerContext, renderOptions: {
|
|
5
4
|
distDir: string;
|
|
6
5
|
bundle: string;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { APIServerStartInput } from '@modern-js/server-plugin';
|
|
2
|
+
import { mergeExtension } from '../../utils';
|
|
3
|
+
import { ModernRouteInterface } from '../../libs/route';
|
|
4
|
+
import { ApiServerMode } from '../../constants';
|
|
2
5
|
import { ModernDevServer } from './dev-server';
|
|
3
|
-
import { mergeExtension } from "../../utils.d";
|
|
4
|
-
import { ModernRouteInterface } from "../../libs/route";
|
|
5
|
-
import { ApiServerMode } from "../../constants.d";
|
|
6
6
|
export declare class ModernSSRDevServer extends ModernDevServer {
|
|
7
7
|
protected prepareAPIHandler(_m: ApiServerMode, _: APIServerStartInput['config']): any;
|
|
8
8
|
protected prepareWebHandler(extension: ReturnType<typeof mergeExtension>): Promise<import("@modern-js/server-plugin").Adapter>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import http, { Server, IncomingMessage, ServerResponse } from 'http';
|
|
3
3
|
import { ModernServer } from '../modern-server';
|
|
4
|
-
import { ModernServerOptions, ServerHookRunner, ReadyOptions } from
|
|
4
|
+
import { ModernServerOptions, ServerHookRunner, ReadyOptions } from '../../type';
|
|
5
5
|
export declare class ModernDevServer extends ModernServer {
|
|
6
6
|
private devProxyHandler;
|
|
7
7
|
private mockHandler;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { IncomingMessage, ServerResponse, Server as httpServer } from 'http';
|
|
3
|
-
import { ModernServerOptions, ReadyOptions } from
|
|
3
|
+
import { ModernServerOptions, ReadyOptions } from '../type';
|
|
4
4
|
export declare class Server {
|
|
5
5
|
options: ModernServerOptions;
|
|
6
6
|
private server;
|
|
@@ -10,7 +10,7 @@ export declare class Server {
|
|
|
10
10
|
getRequestHandler(): (req: IncomingMessage, res: ServerResponse, next?: (() => void) | undefined) => void;
|
|
11
11
|
ready(readyOptions?: ReadyOptions): void;
|
|
12
12
|
init(): Promise<this>;
|
|
13
|
-
listen(port: number, listener: any): void;
|
|
13
|
+
listen(port: number | undefined, listener: any): void;
|
|
14
14
|
listener(app: httpServer): void;
|
|
15
15
|
close(): Promise<void>;
|
|
16
16
|
private createProdServer;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { APIServerStartInput } from '@modern-js/server-plugin';
|
|
2
|
+
import { mergeExtension } from '../utils';
|
|
3
|
+
import { ModernRoute, ModernRouteInterface, RouteMatcher } from '../libs/route';
|
|
4
|
+
import { ApiServerMode } from '../constants';
|
|
5
|
+
import { ModernServerContext } from '../libs/context';
|
|
2
6
|
import { ModernServer } from './modern-server';
|
|
3
|
-
import { mergeExtension } from "../utils.d";
|
|
4
|
-
import { ModernRoute, ModernRouteInterface, RouteMatcher } from "../libs/route";
|
|
5
|
-
import { ApiServerMode } from "../constants.d";
|
|
6
|
-
import { ModernServerContext } from "../libs/context";
|
|
7
7
|
export declare class ModernSSRServer extends ModernServer {
|
|
8
8
|
protected warmupSSRBundle(): Promise<void>;
|
|
9
9
|
protected verifyMatch(context: ModernServerContext, matched: RouteMatcher): void;
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import { IncomingMessage, ServerResponse, Server } from 'http';
|
|
3
3
|
import { Adapter, APIServerStartInput } from '@modern-js/server-plugin';
|
|
4
4
|
import type { NormalizedConfig } from '@modern-js/core';
|
|
5
|
-
import { ModernServerOptions, NextFunction, ServerHookRunner, Metrics, Logger, ReadyOptions } from
|
|
6
|
-
import { RouteMatchManager, ModernRouteInterface, ModernRoute, RouteMatcher } from
|
|
7
|
-
import { mergeExtension } from
|
|
8
|
-
import { ModernServerContext } from
|
|
9
|
-
import { ApiServerMode } from
|
|
5
|
+
import { ModernServerOptions, NextFunction, ServerHookRunner, Metrics, Logger, ReadyOptions } from '../type';
|
|
6
|
+
import { RouteMatchManager, ModernRouteInterface, ModernRoute, RouteMatcher } from '../libs/route';
|
|
7
|
+
import { mergeExtension } from '../utils';
|
|
8
|
+
import { ModernServerContext } from '../libs/context';
|
|
9
|
+
import { ApiServerMode } from '../constants';
|
|
10
10
|
declare type ModernServerHandler = (context: ModernServerContext, next: NextFunction) => Promise<void> | void;
|
|
11
11
|
declare type ModernServerAsyncHandler = (context: ModernServerContext, next: NextFunction) => Promise<void>;
|
|
12
12
|
export declare class ModernServer {
|
|
@@ -53,11 +53,14 @@ export declare class ModernServer {
|
|
|
53
53
|
protected prepareWebHandler(extension: ReturnType<typeof mergeExtension>): Promise<Adapter>;
|
|
54
54
|
protected prepareAPIHandler(mode: ApiServerMode, extension: APIServerStartInput['config']): Promise<Adapter>;
|
|
55
55
|
protected filterRoutes(routes: ModernRouteInterface[]): ModernRouteInterface[];
|
|
56
|
-
protected emitRouteHook(eventName: 'beforeMatch' | 'afterMatch' | 'beforeRender' | 'afterRender', input:
|
|
56
|
+
protected emitRouteHook(eventName: 'beforeMatch' | 'afterMatch' | 'beforeRender' | 'afterRender', input: {
|
|
57
|
+
context: ModernServerContext;
|
|
58
|
+
[propsName: string]: any;
|
|
59
|
+
}): Promise<any>;
|
|
57
60
|
protected warmupSSRBundle(): void;
|
|
58
61
|
protected preServerInit(): Promise<void>;
|
|
59
62
|
protected handleAPI(context: ModernServerContext): Promise<void>;
|
|
60
|
-
protected handleWeb(context: ModernServerContext, route: ModernRoute): Promise<import("
|
|
63
|
+
protected handleWeb(context: ModernServerContext, route: ModernRoute): Promise<import("../type").RenderResult | null>;
|
|
61
64
|
protected verifyMatch(_c: ModernServerContext, _m: RouteMatcher): void;
|
|
62
65
|
private routeHandler;
|
|
63
66
|
private injectMicroFE;
|
package/dist/types/utils.d.ts
CHANGED
|
@@ -3,4 +3,13 @@ export declare const mergeExtension: (users: any[]) => {
|
|
|
3
3
|
};
|
|
4
4
|
export declare const toMessage: (dig: string, e: Error | string) => string;
|
|
5
5
|
export declare const noop: () => void;
|
|
6
|
-
export declare const createErrorDocument: (status: number, text: string) => string;
|
|
6
|
+
export declare const createErrorDocument: (status: number, text: string) => string;
|
|
7
|
+
export declare type CollectMiddlewaresResult = {
|
|
8
|
+
web: any[];
|
|
9
|
+
api: any[];
|
|
10
|
+
};
|
|
11
|
+
export declare const createMiddlewareCollecter: () => {
|
|
12
|
+
getMiddlewares: () => CollectMiddlewaresResult;
|
|
13
|
+
addWebMiddleware: (input: any) => void;
|
|
14
|
+
addAPIMiddleware: (input: any) => void;
|
|
15
|
+
};
|
package/dist.zip
ADDED
|
Binary file
|
package/jest.config.js
ADDED
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"modern",
|
|
12
12
|
"modern.js"
|
|
13
13
|
],
|
|
14
|
-
"version": "1.2.
|
|
14
|
+
"version": "1.2.2-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",
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"exports": {
|
|
21
21
|
".": {
|
|
22
22
|
"node": {
|
|
23
|
+
"jsnext:source": "./src/index.ts",
|
|
23
24
|
"import": "./dist/js/modern/index.js",
|
|
24
25
|
"require": "./dist/js/node/index.js"
|
|
25
26
|
},
|
|
@@ -35,10 +36,10 @@
|
|
|
35
36
|
"@babel/runtime": "^7",
|
|
36
37
|
"@modern-js/core": "^1.2.0",
|
|
37
38
|
"@modern-js/hmr-client": "^1.1.1",
|
|
38
|
-
"@modern-js/server-plugin": "^1.1.
|
|
39
|
+
"@modern-js/server-plugin": "^1.1.4",
|
|
39
40
|
"@modern-js/server-utils": "^1.1.2",
|
|
40
41
|
"@modern-js/bff-utils": "^1.1.1",
|
|
41
|
-
"@modern-js/utils": "^1.1.
|
|
42
|
+
"@modern-js/utils": "^1.1.6",
|
|
42
43
|
"axios": "^0.21.4",
|
|
43
44
|
"babel-plugin-module-resolver": "^4.1.0",
|
|
44
45
|
"chokidar": "^3.5.2",
|
|
@@ -58,12 +59,12 @@
|
|
|
58
59
|
"tsconfig-paths": "^3.11.0",
|
|
59
60
|
"ua-parser-js": "^0.7.28",
|
|
60
61
|
"webpack-dev-middleware": "^5.0.0",
|
|
61
|
-
"ws": "^8.2.0"
|
|
62
|
+
"ws": "^8.2.0",
|
|
63
|
+
"lodash.clone": "^4.5.0"
|
|
62
64
|
},
|
|
63
65
|
"devDependencies": {
|
|
64
|
-
"@
|
|
65
|
-
"@modern-js/
|
|
66
|
-
"@modern-js/types": "^1.1.4",
|
|
66
|
+
"@scripts/build": "0.0.0",
|
|
67
|
+
"@modern-js/types": "^1.1.5",
|
|
67
68
|
"@types/jest": "^26",
|
|
68
69
|
"@types/lru-cache": "^5.1.1",
|
|
69
70
|
"@types/mime-types": "^2.1.0",
|
|
@@ -77,10 +78,14 @@
|
|
|
77
78
|
"@types/ua-parser-js": "^0.7.36",
|
|
78
79
|
"@types/webpack-dev-middleware": "^5.0.2",
|
|
79
80
|
"@types/ws": "^7.4.7",
|
|
81
|
+
"@types/lodash.clone": "^4",
|
|
80
82
|
"typescript": "^4",
|
|
81
83
|
"webpack": "^5.54.0",
|
|
82
84
|
"node-mocks-http": "^1.11.0",
|
|
83
|
-
"portfinder": "^1.0.28"
|
|
85
|
+
"portfinder": "^1.0.28",
|
|
86
|
+
"jest": "^27",
|
|
87
|
+
"@scripts/jest-config": "0.0.0",
|
|
88
|
+
"websocket": "^1"
|
|
84
89
|
},
|
|
85
90
|
"peerDependencies": {
|
|
86
91
|
"webpack": "^5.54.0"
|
|
@@ -93,13 +98,14 @@
|
|
|
93
98
|
},
|
|
94
99
|
"publishConfig": {
|
|
95
100
|
"registry": "https://registry.npmjs.org/",
|
|
96
|
-
"access": "public"
|
|
101
|
+
"access": "public",
|
|
102
|
+
"types": "./dist/types/index.d.ts"
|
|
97
103
|
},
|
|
98
104
|
"scripts": {
|
|
99
105
|
"new": "modern new",
|
|
100
106
|
"build": "modern build",
|
|
101
107
|
"dev": "modern build --watch",
|
|
102
|
-
"test": "
|
|
108
|
+
"test": "jest --passWithNoTests"
|
|
103
109
|
},
|
|
104
110
|
"readme": "\n<p align=\"center\">\n <a href=\"https://modernjs.dev\" target=\"blank\"><img src=\"https://lf3-static.bytednsdoc.com/obj/eden-cn/ylaelkeh7nuhfnuhf/modernjs-cover.png\" width=\"300\" alt=\"Modern.js Logo\" /></a>\n</p>\n<p align=\"center\">\n现代 Web 工程体系\n <br/>\n <a href=\"https://modernjs.dev\" target=\"blank\">\n modernjs.dev\n </a>\n</p>\n<p align=\"center\">\n The meta-framework suite designed from scratch for frontend-focused modern web development\n</p>\n\n# Introduction\n\n> The doc site ([modernjs.dev](https://modernjs.dev)) and articles are only available in Chinese for now, we are planning to add English versions soon.\n\n- [Modern.js: Hello, World!](https://zhuanlan.zhihu.com/p/426707646)\n\n## Getting Started\n\n- [Quick Start](https://modernjs.dev/docs/start)\n- [Guides](https://modernjs.dev/docs/guides)\n- [API References](https://modernjs.dev/docs/apis)\n\n## Contributing\n\n- [Contributing Guide](https://github.com/modern-js-dev/modern.js/blob/main/CONTRIBUTING.md)\n"
|
|
105
111
|
}
|