@modern-js/server 1.4.4 → 1.4.7-canary.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 +14 -0
- package/dist/js/modern/constants.js +17 -0
- package/dist/js/modern/dev-tools/mock/index.js +2 -6
- package/dist/js/modern/dev-tools/watcher/index.js +2 -1
- package/dist/js/modern/server/dev-server-split.js +22 -7
- package/dist/js/modern/server/dev-server.js +71 -66
- package/dist/js/node/constants.js +26 -0
- package/dist/js/node/dev-tools/mock/index.js +2 -6
- package/dist/js/node/dev-tools/watcher/index.js +3 -1
- package/dist/js/node/server/dev-server-split.js +23 -7
- package/dist/js/node/server/dev-server.js +73 -68
- package/dist/types/constants.d.ts +2 -0
- package/dist/types/server/dev-server-split.d.ts +5 -5
- package/dist/types/server/dev-server.d.ts +9 -5
- package/package.json +25 -22
- package/tests/dev.test.ts +31 -256
- package/tests/fixtures/mock/module-error/config/mock/index.ts +1 -0
- package/tests/fixtures/mock/type-error/config/mock/index.ts +3 -0
- package/tests/fixtures/pure/config/mock/index.ts +11 -0
- package/tests/helper.ts +3 -0
- package/tests/https.test.ts +17 -0
- package/tests/launch-editor.test.ts +58 -0
- package/tests/mock.test.ts +150 -0
- package/tests/server.test.ts +131 -20
- package/tests/watcher.test.ts +164 -34
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @modern-js/server
|
|
2
2
|
|
|
3
|
+
## 1.4.6
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- a78e32d8: remove server hook when api only
|
|
8
|
+
- 59010b7a: rewrite server lifecycle, add unit test
|
|
9
|
+
- Updated dependencies [a78e32d8]
|
|
10
|
+
- Updated dependencies [e11eaafc]
|
|
11
|
+
- Updated dependencies [cbba492b]
|
|
12
|
+
- Updated dependencies [db43dce6]
|
|
13
|
+
- Updated dependencies [59010b7a]
|
|
14
|
+
- @modern-js/prod-server@1.0.2
|
|
15
|
+
- @modern-js/utils@1.3.4
|
|
16
|
+
|
|
3
17
|
## 1.4.4
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { HMR_SOCK_PATH } from '@modern-js/utils';
|
|
2
|
+
export const DEFAULT_DEV_OPTIONS = {
|
|
3
|
+
client: {
|
|
4
|
+
port: '8080',
|
|
5
|
+
overlay: false,
|
|
6
|
+
logging: 'none',
|
|
7
|
+
path: HMR_SOCK_PATH,
|
|
8
|
+
host: 'localhost'
|
|
9
|
+
},
|
|
10
|
+
https: false,
|
|
11
|
+
dev: {
|
|
12
|
+
writeToDisk: true
|
|
13
|
+
},
|
|
14
|
+
watch: true,
|
|
15
|
+
hot: true,
|
|
16
|
+
liveReload: true
|
|
17
|
+
};
|
|
@@ -37,11 +37,7 @@ export const createMockHandler = ({
|
|
|
37
37
|
return next();
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
return matched.handler(context, next);
|
|
43
|
-
} else {
|
|
44
|
-
return next();
|
|
45
|
-
}
|
|
40
|
+
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
41
|
+
return matched.handler(context, next);
|
|
46
42
|
};
|
|
47
43
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
|
+
import { fs } from '@modern-js/utils';
|
|
2
3
|
import chokidar from 'chokidar';
|
|
3
4
|
import { DependencyTree } from "./dependency-tree";
|
|
4
5
|
import { StatsCache } from "./stats-cache";
|
|
@@ -27,7 +28,7 @@ export default class Watcher {
|
|
|
27
28
|
cache.add(getWatchedFiles(watcher));
|
|
28
29
|
});
|
|
29
30
|
watcher.on('change', changed => {
|
|
30
|
-
if (cache.isDiff(changed)) {
|
|
31
|
+
if (!fs.existsSync(changed) || cache.isDiff(changed)) {
|
|
31
32
|
cache.refresh(changed);
|
|
32
33
|
callback(changed);
|
|
33
34
|
}
|
|
@@ -1,28 +1,43 @@
|
|
|
1
|
+
import { RUN_MODE } from '@modern-js/prod-server';
|
|
1
2
|
import { ModernDevServer } from "./dev-server";
|
|
2
3
|
export class ModernSSRDevServer extends ModernDevServer {
|
|
3
4
|
prepareAPIHandler(_m, _) {
|
|
4
5
|
return null;
|
|
5
6
|
}
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
return
|
|
8
|
+
filterRoutes(routes) {
|
|
9
|
+
return routes.filter(route => route.isSSR);
|
|
9
10
|
}
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
12
|
+
async preServerInit() {
|
|
13
|
+
if (this.runMode === RUN_MODE.FULL) {
|
|
14
|
+
await super.preServerInit();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async emitRouteHook(_, _input) {
|
|
19
|
+
if (this.runMode === RUN_MODE.FULL) {
|
|
20
|
+
await super.emitRouteHook(_, _input);
|
|
21
|
+
}
|
|
13
22
|
}
|
|
14
23
|
|
|
15
24
|
}
|
|
16
25
|
export class ModernAPIDevServer extends ModernDevServer {
|
|
17
|
-
|
|
18
|
-
return
|
|
26
|
+
prepareWebHandler(_) {
|
|
27
|
+
return null;
|
|
19
28
|
}
|
|
20
29
|
|
|
21
30
|
filterRoutes(routes) {
|
|
22
31
|
return routes.filter(route => route.isApi);
|
|
23
32
|
}
|
|
24
33
|
|
|
25
|
-
async preServerInit() {
|
|
34
|
+
async preServerInit() {
|
|
35
|
+
if (this.runMode === RUN_MODE.FULL) {
|
|
36
|
+
await super.preServerInit();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
async emitRouteHook(_, _input) {// empty
|
|
26
41
|
}
|
|
27
42
|
|
|
28
43
|
}
|
|
@@ -7,35 +7,20 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
7
7
|
import { createServer } from 'http';
|
|
8
8
|
import path from 'path';
|
|
9
9
|
import { createServer as createHttpsServer } from 'https';
|
|
10
|
-
import { API_DIR,
|
|
10
|
+
import { API_DIR, SERVER_DIR, SHARED_DIR } from '@modern-js/utils';
|
|
11
11
|
import webpackDevMiddleware from 'webpack-dev-middleware';
|
|
12
12
|
import { createProxyHandler, ModernServer, AGGRED_DIR } from '@modern-js/prod-server';
|
|
13
|
+
import { DEFAULT_DEV_OPTIONS } from "../constants";
|
|
13
14
|
import { createMockHandler } from "../dev-tools/mock";
|
|
14
15
|
import SocketServer from "../dev-tools/socket-server";
|
|
15
16
|
import DevServerPlugin from "../dev-tools/dev-server-plugin";
|
|
16
17
|
import { createLaunchEditorHandler } from "../dev-tools/launch-editor";
|
|
17
18
|
import { enableRegister } from "../dev-tools/babel/register";
|
|
18
19
|
import Watcher from "../dev-tools/watcher";
|
|
19
|
-
const DEFAULT_DEV_OPTIONS = {
|
|
20
|
-
client: {
|
|
21
|
-
port: '8080',
|
|
22
|
-
overlay: false,
|
|
23
|
-
logging: 'none',
|
|
24
|
-
path: HMR_SOCK_PATH,
|
|
25
|
-
host: 'localhost'
|
|
26
|
-
},
|
|
27
|
-
https: false,
|
|
28
|
-
dev: {
|
|
29
|
-
writeToDisk: true
|
|
30
|
-
},
|
|
31
|
-
watch: true,
|
|
32
|
-
hot: true,
|
|
33
|
-
liveReload: true
|
|
34
|
-
};
|
|
35
20
|
export class ModernDevServer extends ModernServer {
|
|
36
21
|
constructor(options) {
|
|
37
|
-
super(options);
|
|
38
|
-
|
|
22
|
+
super(options); // dev server should work in pwd
|
|
23
|
+
|
|
39
24
|
this.mockHandler = null;
|
|
40
25
|
this.dev = void 0;
|
|
41
26
|
this.compiler = void 0;
|
|
@@ -46,27 +31,25 @@ export class ModernDevServer extends ModernServer {
|
|
|
46
31
|
|
|
47
32
|
this.compiler = options.compiler; // set dev server options, like webpack-dev-server
|
|
48
33
|
|
|
49
|
-
this.dev = typeof options.dev === 'boolean' ?
|
|
34
|
+
this.dev = _objectSpread(_objectSpread({}, DEFAULT_DEV_OPTIONS), typeof options.dev === 'boolean' ? {} : options.dev);
|
|
50
35
|
enableRegister(this.pwd, this.conf);
|
|
51
36
|
} // Complete the preparation of services
|
|
52
37
|
|
|
53
38
|
|
|
54
|
-
async
|
|
39
|
+
async onInit(runner) {
|
|
55
40
|
var _conf$tools, _conf$tools$devServer;
|
|
56
41
|
|
|
57
42
|
const {
|
|
58
43
|
conf,
|
|
59
44
|
pwd,
|
|
60
|
-
compiler
|
|
45
|
+
compiler,
|
|
46
|
+
dev
|
|
61
47
|
} = this; // mock handler
|
|
62
48
|
|
|
63
49
|
this.mockHandler = createMockHandler({
|
|
64
50
|
pwd
|
|
65
51
|
});
|
|
66
52
|
this.addHandler((ctx, next) => {
|
|
67
|
-
ctx.res.setHeader('Access-Control-Allow-Origin', '*');
|
|
68
|
-
ctx.res.setHeader('Access-Control-Allow-Credentials', 'false');
|
|
69
|
-
|
|
70
53
|
if (this.mockHandler) {
|
|
71
54
|
this.mockHandler(ctx, next);
|
|
72
55
|
} else {
|
|
@@ -74,10 +57,10 @@ export class ModernDevServer extends ModernServer {
|
|
|
74
57
|
}
|
|
75
58
|
}); // dev proxy handler, each proxy has own handler
|
|
76
59
|
|
|
77
|
-
|
|
60
|
+
const proxyHandlers = 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);
|
|
78
61
|
|
|
79
|
-
if (
|
|
80
|
-
|
|
62
|
+
if (proxyHandlers) {
|
|
63
|
+
proxyHandlers.forEach(handler => {
|
|
81
64
|
this.addHandler(handler);
|
|
82
65
|
});
|
|
83
66
|
} // do webpack build / plugin apply / socket server when pass compiler instance
|
|
@@ -85,7 +68,7 @@ export class ModernDevServer extends ModernServer {
|
|
|
85
68
|
|
|
86
69
|
if (compiler) {
|
|
87
70
|
// init socket server
|
|
88
|
-
this.socketServer = new SocketServer(
|
|
71
|
+
this.socketServer = new SocketServer(dev); // open file in edtor.
|
|
89
72
|
|
|
90
73
|
this.addHandler(createLaunchEditorHandler()); // setup compiler in server, also add dev-middleware to handler static file in memory
|
|
91
74
|
|
|
@@ -93,32 +76,17 @@ export class ModernDevServer extends ModernServer {
|
|
|
93
76
|
this.addHandler(devMiddlewareHandler);
|
|
94
77
|
}
|
|
95
78
|
|
|
96
|
-
await super.
|
|
79
|
+
await super.onInit(runner); // watch mock/ server/ api/ dir file change
|
|
97
80
|
|
|
98
|
-
if (
|
|
81
|
+
if (dev.watch) {
|
|
99
82
|
this.startWatcher();
|
|
100
83
|
}
|
|
101
84
|
}
|
|
102
85
|
|
|
103
|
-
|
|
104
|
-
// reset the routing management instance every times the service starts
|
|
105
|
-
this.router.reset(this.filterRoutes(options.routes || this.presetRoutes || []));
|
|
106
|
-
this.cleanSSRCache(); // reset static file
|
|
107
|
-
|
|
108
|
-
this.reader.updateFile();
|
|
109
|
-
this.runner.reset();
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
onListening(app) {
|
|
86
|
+
async onClose() {
|
|
113
87
|
var _this$socketServer;
|
|
114
88
|
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
async close() {
|
|
119
|
-
var _this$socketServer2;
|
|
120
|
-
|
|
121
|
-
super.close();
|
|
89
|
+
await super.onClose();
|
|
122
90
|
await this.watcher.close();
|
|
123
91
|
await new Promise(resolve => {
|
|
124
92
|
if (this.devMiddleware) {
|
|
@@ -129,7 +97,28 @@ export class ModernDevServer extends ModernServer {
|
|
|
129
97
|
resolve();
|
|
130
98
|
}
|
|
131
99
|
});
|
|
132
|
-
(_this$
|
|
100
|
+
(_this$socketServer = this.socketServer) === null || _this$socketServer === void 0 ? void 0 : _this$socketServer.close();
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
onRepack(options = {}) {
|
|
104
|
+
// reset the routing management instance every times the service starts
|
|
105
|
+
if (Array.isArray(options.routes)) {
|
|
106
|
+
this.router.reset(this.filterRoutes(options.routes));
|
|
107
|
+
} // clean ssr bundle cache
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
this.cleanSSRCache(); // reset static file
|
|
111
|
+
|
|
112
|
+
this.reader.updateFile(); // emit reset hook
|
|
113
|
+
|
|
114
|
+
this.runner.reset();
|
|
115
|
+
super.onRepack(options);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
onListening(app) {
|
|
119
|
+
var _this$socketServer2;
|
|
120
|
+
|
|
121
|
+
(_this$socketServer2 = this.socketServer) === null || _this$socketServer2 === void 0 ? void 0 : _this$socketServer2.prepare(app);
|
|
133
122
|
}
|
|
134
123
|
|
|
135
124
|
async createHTTPServer(handler) {
|
|
@@ -150,7 +139,34 @@ export class ModernDevServer extends ModernServer {
|
|
|
150
139
|
}
|
|
151
140
|
}
|
|
152
141
|
|
|
153
|
-
warmupSSRBundle() {//
|
|
142
|
+
warmupSSRBundle() {// not warmup ssr bundle on development
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
onServerChange({
|
|
146
|
+
filepath
|
|
147
|
+
}) {
|
|
148
|
+
const {
|
|
149
|
+
pwd
|
|
150
|
+
} = this;
|
|
151
|
+
const {
|
|
152
|
+
mock
|
|
153
|
+
} = AGGRED_DIR;
|
|
154
|
+
const mockPath = path.normalize(path.join(pwd, mock));
|
|
155
|
+
this.runner.reset();
|
|
156
|
+
|
|
157
|
+
if (filepath.startsWith(mockPath)) {
|
|
158
|
+
this.mockHandler = createMockHandler({
|
|
159
|
+
pwd
|
|
160
|
+
});
|
|
161
|
+
} else {
|
|
162
|
+
try {
|
|
163
|
+
super.onServerChange({
|
|
164
|
+
filepath
|
|
165
|
+
});
|
|
166
|
+
} catch (e) {
|
|
167
|
+
this.logger.error(e);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
154
170
|
} // set up plugin to each compiler
|
|
155
171
|
// register hooks for each compilation, update socket stats if recompiled
|
|
156
172
|
// start dev middleware
|
|
@@ -201,8 +217,8 @@ export class ModernDevServer extends ModernServer {
|
|
|
201
217
|
if (stats.toJson({
|
|
202
218
|
all: false
|
|
203
219
|
}).name === 'client') {
|
|
204
|
-
this.
|
|
205
|
-
routes: this.
|
|
220
|
+
this.onRepack({
|
|
221
|
+
routes: this.getRoutes()
|
|
206
222
|
});
|
|
207
223
|
}
|
|
208
224
|
});
|
|
@@ -253,7 +269,6 @@ export class ModernDevServer extends ModernServer {
|
|
|
253
269
|
} = AGGRED_DIR;
|
|
254
270
|
const defaultWatched = [`${mock}/**/*`, `${SERVER_DIR}/**/*`, `${API_DIR}/**`, `${SHARED_DIR}/**/*`];
|
|
255
271
|
const defaultWatchedPaths = defaultWatched.map(p => path.normalize(path.join(pwd, p)));
|
|
256
|
-
const mockPath = path.normalize(path.join(pwd, mock));
|
|
257
272
|
const watcher = new Watcher();
|
|
258
273
|
watcher.createDepTree(); // 监听文件变动,如果有变动则给 client,也就是 start 启动的插件发消息
|
|
259
274
|
|
|
@@ -264,19 +279,9 @@ export class ModernDevServer extends ModernServer {
|
|
|
264
279
|
}, filepath => {
|
|
265
280
|
watcher.updateDepTree();
|
|
266
281
|
watcher.cleanDepCache(filepath);
|
|
267
|
-
this.
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
this.mockHandler = createMockHandler({
|
|
271
|
-
pwd
|
|
272
|
-
});
|
|
273
|
-
} else {
|
|
274
|
-
try {
|
|
275
|
-
this.prepareFrameHandler();
|
|
276
|
-
} catch (e) {
|
|
277
|
-
this.logger.error(e);
|
|
278
|
-
}
|
|
279
|
-
}
|
|
282
|
+
this.onServerChange({
|
|
283
|
+
filepath
|
|
284
|
+
});
|
|
280
285
|
});
|
|
281
286
|
this.watcher = watcher;
|
|
282
287
|
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.DEFAULT_DEV_OPTIONS = void 0;
|
|
7
|
+
|
|
8
|
+
var _utils = require("@modern-js/utils");
|
|
9
|
+
|
|
10
|
+
const DEFAULT_DEV_OPTIONS = {
|
|
11
|
+
client: {
|
|
12
|
+
port: '8080',
|
|
13
|
+
overlay: false,
|
|
14
|
+
logging: 'none',
|
|
15
|
+
path: _utils.HMR_SOCK_PATH,
|
|
16
|
+
host: 'localhost'
|
|
17
|
+
},
|
|
18
|
+
https: false,
|
|
19
|
+
dev: {
|
|
20
|
+
writeToDisk: true
|
|
21
|
+
},
|
|
22
|
+
watch: true,
|
|
23
|
+
hot: true,
|
|
24
|
+
liveReload: true
|
|
25
|
+
};
|
|
26
|
+
exports.DEFAULT_DEV_OPTIONS = DEFAULT_DEV_OPTIONS;
|
|
@@ -54,12 +54,8 @@ const createMockHandler = ({
|
|
|
54
54
|
return next();
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return matched.handler(context, next);
|
|
60
|
-
} else {
|
|
61
|
-
return next();
|
|
62
|
-
}
|
|
57
|
+
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
58
|
+
return matched.handler(context, next);
|
|
63
59
|
};
|
|
64
60
|
};
|
|
65
61
|
|
|
@@ -7,6 +7,8 @@ exports.getWatchedFiles = exports.default = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _path = _interopRequireDefault(require("path"));
|
|
9
9
|
|
|
10
|
+
var _utils = require("@modern-js/utils");
|
|
11
|
+
|
|
10
12
|
var _chokidar = _interopRequireDefault(require("chokidar"));
|
|
11
13
|
|
|
12
14
|
var _dependencyTree = require("./dependency-tree");
|
|
@@ -45,7 +47,7 @@ class Watcher {
|
|
|
45
47
|
cache.add(getWatchedFiles(watcher));
|
|
46
48
|
});
|
|
47
49
|
watcher.on('change', changed => {
|
|
48
|
-
if (cache.isDiff(changed)) {
|
|
50
|
+
if (!_utils.fs.existsSync(changed) || cache.isDiff(changed)) {
|
|
49
51
|
cache.refresh(changed);
|
|
50
52
|
callback(changed);
|
|
51
53
|
}
|
|
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.ModernSSRDevServer = exports.ModernAPIDevServer = void 0;
|
|
7
7
|
|
|
8
|
+
var _prodServer = require("@modern-js/prod-server");
|
|
9
|
+
|
|
8
10
|
var _devServer = require("./dev-server");
|
|
9
11
|
|
|
10
12
|
class ModernSSRDevServer extends _devServer.ModernDevServer {
|
|
@@ -12,12 +14,20 @@ class ModernSSRDevServer extends _devServer.ModernDevServer {
|
|
|
12
14
|
return null;
|
|
13
15
|
}
|
|
14
16
|
|
|
15
|
-
|
|
16
|
-
return
|
|
17
|
+
filterRoutes(routes) {
|
|
18
|
+
return routes.filter(route => route.isSSR);
|
|
17
19
|
}
|
|
18
20
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
async preServerInit() {
|
|
22
|
+
if (this.runMode === _prodServer.RUN_MODE.FULL) {
|
|
23
|
+
await super.preServerInit();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
async emitRouteHook(_, _input) {
|
|
28
|
+
if (this.runMode === _prodServer.RUN_MODE.FULL) {
|
|
29
|
+
await super.emitRouteHook(_, _input);
|
|
30
|
+
}
|
|
21
31
|
}
|
|
22
32
|
|
|
23
33
|
}
|
|
@@ -25,15 +35,21 @@ class ModernSSRDevServer extends _devServer.ModernDevServer {
|
|
|
25
35
|
exports.ModernSSRDevServer = ModernSSRDevServer;
|
|
26
36
|
|
|
27
37
|
class ModernAPIDevServer extends _devServer.ModernDevServer {
|
|
28
|
-
|
|
29
|
-
return
|
|
38
|
+
prepareWebHandler(_) {
|
|
39
|
+
return null;
|
|
30
40
|
}
|
|
31
41
|
|
|
32
42
|
filterRoutes(routes) {
|
|
33
43
|
return routes.filter(route => route.isApi);
|
|
34
44
|
}
|
|
35
45
|
|
|
36
|
-
async preServerInit() {
|
|
46
|
+
async preServerInit() {
|
|
47
|
+
if (this.runMode === _prodServer.RUN_MODE.FULL) {
|
|
48
|
+
await super.preServerInit();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
async emitRouteHook(_, _input) {// empty
|
|
37
53
|
}
|
|
38
54
|
|
|
39
55
|
}
|