@modern-js/server 1.4.7-canary.1 → 1.4.8
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 +28 -0
- package/dist/js/modern/dev-tools/babel/register.js +1 -0
- package/dist/js/modern/dev-tools/dev-server-plugin.js +13 -3
- package/dist/js/modern/server/dev-server.js +55 -2
- package/dist/js/node/dev-tools/babel/register.js +1 -0
- package/dist/js/node/dev-tools/dev-server-plugin.js +14 -3
- package/dist/js/node/server/dev-server.js +55 -2
- package/dist/types/server/dev-server.d.ts +2 -0
- package/package.json +19 -21
- package/tests/watcher.test.ts +90 -87
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# @modern-js/server
|
|
2
2
|
|
|
3
|
+
## 1.4.8
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- a8df060e: support setup dev middleware first step
|
|
8
|
+
- d2d0fa11: fix: missing devServer.proxy typing
|
|
9
|
+
- 6a7acb81: modify devServer type and name
|
|
10
|
+
- Updated dependencies [c2046f37]
|
|
11
|
+
- Updated dependencies [d2d0fa11]
|
|
12
|
+
- @modern-js/utils@1.3.6
|
|
13
|
+
- @modern-js/prod-server@1.0.5
|
|
14
|
+
|
|
15
|
+
## 1.4.7
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- d95f28c3: remove server hook when api only
|
|
20
|
+
- d5bf095a: fix: disable load webpack when apiOnly mode
|
|
21
|
+
- 9229dfd1: support custom headers, fix hmr url concat
|
|
22
|
+
- Updated dependencies [5bf5868d]
|
|
23
|
+
- Updated dependencies [d95f28c3]
|
|
24
|
+
- Updated dependencies [d95f28c3]
|
|
25
|
+
- Updated dependencies [0923c182]
|
|
26
|
+
- Updated dependencies [2008fdbd]
|
|
27
|
+
- Updated dependencies [ca0bcf13]
|
|
28
|
+
- @modern-js/utils@1.3.5
|
|
29
|
+
- @modern-js/prod-server@1.0.4
|
|
30
|
+
|
|
3
31
|
## 1.4.6
|
|
4
32
|
|
|
5
33
|
### Patch Changes
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
2
|
+
|
|
3
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
4
|
+
|
|
5
|
+
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
|
+
|
|
1
7
|
import Webpack from 'webpack';
|
|
8
|
+
import { DEFAULT_DEV_OPTIONS } from "../constants";
|
|
2
9
|
const {
|
|
3
10
|
EntryPlugin
|
|
4
11
|
} = Webpack;
|
|
@@ -12,9 +19,12 @@ export default class DevServerPlugin {
|
|
|
12
19
|
const {
|
|
13
20
|
options
|
|
14
21
|
} = this;
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
22
|
+
|
|
23
|
+
const client = _objectSpread(_objectSpread({}, DEFAULT_DEV_OPTIONS.client), options.client);
|
|
24
|
+
|
|
25
|
+
const host = `&host=${client.host}`;
|
|
26
|
+
const path = `&path=${client.path}`;
|
|
27
|
+
const port = `&port=${client.port}`;
|
|
18
28
|
const clientEntry = `${require.resolve('@modern-js/hmr-client')}?${host}${path}${port}`;
|
|
19
29
|
|
|
20
30
|
const hotEntry = require.resolve('webpack/hot/dev-server');
|
|
@@ -39,12 +39,24 @@ export class ModernDevServer extends ModernServer {
|
|
|
39
39
|
async onInit(runner) {
|
|
40
40
|
var _conf$tools, _conf$tools$devServer;
|
|
41
41
|
|
|
42
|
+
this.runner = runner;
|
|
42
43
|
const {
|
|
43
44
|
conf,
|
|
44
45
|
pwd,
|
|
45
46
|
compiler,
|
|
46
47
|
dev
|
|
47
|
-
} = this; //
|
|
48
|
+
} = this; // before dev handler
|
|
49
|
+
|
|
50
|
+
const beforeHandlers = await this.setupBeforeDevMiddleware();
|
|
51
|
+
beforeHandlers.forEach(handler => {
|
|
52
|
+
this.addHandler((ctx, next) => {
|
|
53
|
+
const {
|
|
54
|
+
req,
|
|
55
|
+
res
|
|
56
|
+
} = ctx;
|
|
57
|
+
return handler(req, res, next);
|
|
58
|
+
});
|
|
59
|
+
}); // mock handler
|
|
48
60
|
|
|
49
61
|
this.mockHandler = createMockHandler({
|
|
50
62
|
pwd
|
|
@@ -74,8 +86,19 @@ export class ModernDevServer extends ModernServer {
|
|
|
74
86
|
|
|
75
87
|
const devMiddlewareHandler = this.setupCompiler(compiler);
|
|
76
88
|
this.addHandler(devMiddlewareHandler);
|
|
77
|
-
}
|
|
89
|
+
} // after dev handler
|
|
90
|
+
|
|
78
91
|
|
|
92
|
+
const afterHandlers = await this.setupAfterDevMiddleware();
|
|
93
|
+
afterHandlers.forEach(handler => {
|
|
94
|
+
this.addHandler((ctx, next) => {
|
|
95
|
+
const {
|
|
96
|
+
req,
|
|
97
|
+
res
|
|
98
|
+
} = ctx;
|
|
99
|
+
return handler(req, res, next);
|
|
100
|
+
});
|
|
101
|
+
});
|
|
79
102
|
await super.onInit(runner); // watch mock/ server/ api/ dir file change
|
|
80
103
|
|
|
81
104
|
if (dev.watch) {
|
|
@@ -232,7 +255,13 @@ export class ModernDevServer extends ModernServer {
|
|
|
232
255
|
}
|
|
233
256
|
|
|
234
257
|
setupDevMiddleware(compiler) {
|
|
258
|
+
var _conf$tools2, _conf$tools2$devServe;
|
|
259
|
+
|
|
260
|
+
const {
|
|
261
|
+
conf
|
|
262
|
+
} = this;
|
|
235
263
|
this.devMiddleware = webpackDevMiddleware(compiler, {
|
|
264
|
+
headers: (_conf$tools2 = conf.tools) === null || _conf$tools2 === void 0 ? void 0 : (_conf$tools2$devServe = _conf$tools2.devServer) === null || _conf$tools2$devServe === void 0 ? void 0 : _conf$tools2$devServe.headers,
|
|
236
265
|
publicPath: '/',
|
|
237
266
|
writeToDisk: this.dev.dev.writeToDisk,
|
|
238
267
|
stats: false
|
|
@@ -246,6 +275,30 @@ export class ModernDevServer extends ModernServer {
|
|
|
246
275
|
};
|
|
247
276
|
}
|
|
248
277
|
|
|
278
|
+
async setupBeforeDevMiddleware() {
|
|
279
|
+
var _conf$tools$devServer2;
|
|
280
|
+
|
|
281
|
+
const {
|
|
282
|
+
runner,
|
|
283
|
+
conf
|
|
284
|
+
} = this;
|
|
285
|
+
const setupMids = ((_conf$tools$devServer2 = conf.tools.devServer) === null || _conf$tools$devServer2 === void 0 ? void 0 : _conf$tools$devServer2.before) || [];
|
|
286
|
+
const pluginMids = await runner.beforeDevServer(conf);
|
|
287
|
+
return [...setupMids, ...pluginMids].flat();
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
async setupAfterDevMiddleware() {
|
|
291
|
+
var _conf$tools$devServer3;
|
|
292
|
+
|
|
293
|
+
const {
|
|
294
|
+
runner,
|
|
295
|
+
conf
|
|
296
|
+
} = this;
|
|
297
|
+
const setupMids = ((_conf$tools$devServer3 = conf.tools.devServer) === null || _conf$tools$devServer3 === void 0 ? void 0 : _conf$tools$devServer3.after) || [];
|
|
298
|
+
const pluginMids = await runner.afterDevServer(conf);
|
|
299
|
+
return [...pluginMids, ...setupMids].flat();
|
|
300
|
+
}
|
|
301
|
+
|
|
249
302
|
cleanSSRCache() {
|
|
250
303
|
const {
|
|
251
304
|
distDir
|
|
@@ -7,8 +7,16 @@ exports.default = void 0;
|
|
|
7
7
|
|
|
8
8
|
var _webpack = _interopRequireDefault(require("webpack"));
|
|
9
9
|
|
|
10
|
+
var _constants = require("../constants");
|
|
11
|
+
|
|
10
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
13
|
|
|
14
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
15
|
+
|
|
16
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
17
|
+
|
|
18
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
19
|
+
|
|
12
20
|
const {
|
|
13
21
|
EntryPlugin
|
|
14
22
|
} = _webpack.default;
|
|
@@ -23,9 +31,12 @@ class DevServerPlugin {
|
|
|
23
31
|
const {
|
|
24
32
|
options
|
|
25
33
|
} = this;
|
|
26
|
-
|
|
27
|
-
const
|
|
28
|
-
|
|
34
|
+
|
|
35
|
+
const client = _objectSpread(_objectSpread({}, _constants.DEFAULT_DEV_OPTIONS.client), options.client);
|
|
36
|
+
|
|
37
|
+
const host = `&host=${client.host}`;
|
|
38
|
+
const path = `&path=${client.path}`;
|
|
39
|
+
const port = `&port=${client.port}`;
|
|
29
40
|
const clientEntry = `${require.resolve('@modern-js/hmr-client')}?${host}${path}${port}`;
|
|
30
41
|
|
|
31
42
|
const hotEntry = require.resolve('webpack/hot/dev-server');
|
|
@@ -61,12 +61,24 @@ class ModernDevServer extends _prodServer.ModernServer {
|
|
|
61
61
|
async onInit(runner) {
|
|
62
62
|
var _conf$tools, _conf$tools$devServer;
|
|
63
63
|
|
|
64
|
+
this.runner = runner;
|
|
64
65
|
const {
|
|
65
66
|
conf,
|
|
66
67
|
pwd,
|
|
67
68
|
compiler,
|
|
68
69
|
dev
|
|
69
|
-
} = this; //
|
|
70
|
+
} = this; // before dev handler
|
|
71
|
+
|
|
72
|
+
const beforeHandlers = await this.setupBeforeDevMiddleware();
|
|
73
|
+
beforeHandlers.forEach(handler => {
|
|
74
|
+
this.addHandler((ctx, next) => {
|
|
75
|
+
const {
|
|
76
|
+
req,
|
|
77
|
+
res
|
|
78
|
+
} = ctx;
|
|
79
|
+
return handler(req, res, next);
|
|
80
|
+
});
|
|
81
|
+
}); // mock handler
|
|
70
82
|
|
|
71
83
|
this.mockHandler = (0, _mock.createMockHandler)({
|
|
72
84
|
pwd
|
|
@@ -96,8 +108,19 @@ class ModernDevServer extends _prodServer.ModernServer {
|
|
|
96
108
|
|
|
97
109
|
const devMiddlewareHandler = this.setupCompiler(compiler);
|
|
98
110
|
this.addHandler(devMiddlewareHandler);
|
|
99
|
-
}
|
|
111
|
+
} // after dev handler
|
|
112
|
+
|
|
100
113
|
|
|
114
|
+
const afterHandlers = await this.setupAfterDevMiddleware();
|
|
115
|
+
afterHandlers.forEach(handler => {
|
|
116
|
+
this.addHandler((ctx, next) => {
|
|
117
|
+
const {
|
|
118
|
+
req,
|
|
119
|
+
res
|
|
120
|
+
} = ctx;
|
|
121
|
+
return handler(req, res, next);
|
|
122
|
+
});
|
|
123
|
+
});
|
|
101
124
|
await super.onInit(runner); // watch mock/ server/ api/ dir file change
|
|
102
125
|
|
|
103
126
|
if (dev.watch) {
|
|
@@ -256,7 +279,13 @@ class ModernDevServer extends _prodServer.ModernServer {
|
|
|
256
279
|
}
|
|
257
280
|
|
|
258
281
|
setupDevMiddleware(compiler) {
|
|
282
|
+
var _conf$tools2, _conf$tools2$devServe;
|
|
283
|
+
|
|
284
|
+
const {
|
|
285
|
+
conf
|
|
286
|
+
} = this;
|
|
259
287
|
this.devMiddleware = (0, _webpackDevMiddleware.default)(compiler, {
|
|
288
|
+
headers: (_conf$tools2 = conf.tools) === null || _conf$tools2 === void 0 ? void 0 : (_conf$tools2$devServe = _conf$tools2.devServer) === null || _conf$tools2$devServe === void 0 ? void 0 : _conf$tools2$devServe.headers,
|
|
260
289
|
publicPath: '/',
|
|
261
290
|
writeToDisk: this.dev.dev.writeToDisk,
|
|
262
291
|
stats: false
|
|
@@ -270,6 +299,30 @@ class ModernDevServer extends _prodServer.ModernServer {
|
|
|
270
299
|
};
|
|
271
300
|
}
|
|
272
301
|
|
|
302
|
+
async setupBeforeDevMiddleware() {
|
|
303
|
+
var _conf$tools$devServer2;
|
|
304
|
+
|
|
305
|
+
const {
|
|
306
|
+
runner,
|
|
307
|
+
conf
|
|
308
|
+
} = this;
|
|
309
|
+
const setupMids = ((_conf$tools$devServer2 = conf.tools.devServer) === null || _conf$tools$devServer2 === void 0 ? void 0 : _conf$tools$devServer2.before) || [];
|
|
310
|
+
const pluginMids = await runner.beforeDevServer(conf);
|
|
311
|
+
return [...setupMids, ...pluginMids].flat();
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
async setupAfterDevMiddleware() {
|
|
315
|
+
var _conf$tools$devServer3;
|
|
316
|
+
|
|
317
|
+
const {
|
|
318
|
+
runner,
|
|
319
|
+
conf
|
|
320
|
+
} = this;
|
|
321
|
+
const setupMids = ((_conf$tools$devServer3 = conf.tools.devServer) === null || _conf$tools$devServer3 === void 0 ? void 0 : _conf$tools$devServer3.after) || [];
|
|
322
|
+
const pluginMids = await runner.afterDevServer(conf);
|
|
323
|
+
return [...pluginMids, ...setupMids].flat();
|
|
324
|
+
}
|
|
325
|
+
|
|
273
326
|
cleanSSRCache() {
|
|
274
327
|
const {
|
|
275
328
|
distDir
|
|
@@ -25,6 +25,8 @@ export declare class ModernDevServer extends ModernServer {
|
|
|
25
25
|
private setupDevServerPlugin;
|
|
26
26
|
private setupHooks;
|
|
27
27
|
private setupDevMiddleware;
|
|
28
|
+
private setupBeforeDevMiddleware;
|
|
29
|
+
private setupAfterDevMiddleware;
|
|
28
30
|
private cleanSSRCache;
|
|
29
31
|
private startWatcher;
|
|
30
32
|
}
|
package/package.json
CHANGED
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
"modern",
|
|
12
12
|
"modern.js"
|
|
13
13
|
],
|
|
14
|
-
"version": "1.4.
|
|
14
|
+
"version": "1.4.8",
|
|
15
15
|
"jsnext:source": "./src/index.ts",
|
|
16
|
-
"types": "./
|
|
16
|
+
"types": "./dist/types/index.d.ts",
|
|
17
17
|
"main": "./dist/js/node/index.js",
|
|
18
18
|
"module": "./dist/js/treeshaking/index.js",
|
|
19
19
|
"jsnext:modern": "./dist/js/modern/index.js",
|
|
@@ -27,21 +27,13 @@
|
|
|
27
27
|
"default": "./dist/js/treeshaking/index.js"
|
|
28
28
|
}
|
|
29
29
|
},
|
|
30
|
-
"scripts": {
|
|
31
|
-
"prepare": "pnpm build",
|
|
32
|
-
"prepublishOnly": "pnpm build --platform",
|
|
33
|
-
"new": "modern new",
|
|
34
|
-
"build": "modern build",
|
|
35
|
-
"dev": "modern build --watch",
|
|
36
|
-
"test": "jest"
|
|
37
|
-
},
|
|
38
30
|
"dependencies": {
|
|
39
|
-
"@modern-js/prod-server": "^1.0.
|
|
31
|
+
"@modern-js/prod-server": "^1.0.5",
|
|
40
32
|
"@babel/register": "^7.15.3",
|
|
41
33
|
"@modern-js/bff-utils": "^1.2.2",
|
|
42
34
|
"@modern-js/hmr-client": "^1.2.2",
|
|
43
35
|
"@modern-js/server-utils": "^1.2.1",
|
|
44
|
-
"@modern-js/utils": "^1.3.
|
|
36
|
+
"@modern-js/utils": "^1.3.6",
|
|
45
37
|
"chokidar": "^3.5.2",
|
|
46
38
|
"devcert": "^1.1.3",
|
|
47
39
|
"launch-editor": "^2.2.1",
|
|
@@ -52,10 +44,10 @@
|
|
|
52
44
|
"ws": "^8.2.0"
|
|
53
45
|
},
|
|
54
46
|
"devDependencies": {
|
|
55
|
-
"@modern-js/server-core": "^1.2.
|
|
56
|
-
"@modern-js/core": "^1.
|
|
57
|
-
"@scripts/build": "
|
|
58
|
-
"@modern-js/types": "^1.3.
|
|
47
|
+
"@modern-js/server-core": "^1.2.4",
|
|
48
|
+
"@modern-js/core": "^1.6.0",
|
|
49
|
+
"@scripts/build": "0.0.0",
|
|
50
|
+
"@modern-js/types": "^1.3.5",
|
|
59
51
|
"@types/jest": "^26",
|
|
60
52
|
"@types/minimatch": "^3.0.5",
|
|
61
53
|
"@types/node": "^14",
|
|
@@ -64,7 +56,7 @@
|
|
|
64
56
|
"jest": "^27",
|
|
65
57
|
"typescript": "^4",
|
|
66
58
|
"webpack": "^5.54.0",
|
|
67
|
-
"@scripts/jest-config": "
|
|
59
|
+
"@scripts/jest-config": "0.0.0",
|
|
68
60
|
"websocket": "^1"
|
|
69
61
|
},
|
|
70
62
|
"peerDependencies": {
|
|
@@ -78,7 +70,13 @@
|
|
|
78
70
|
},
|
|
79
71
|
"publishConfig": {
|
|
80
72
|
"registry": "https://registry.npmjs.org/",
|
|
81
|
-
"access": "public"
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
73
|
+
"access": "public"
|
|
74
|
+
},
|
|
75
|
+
"scripts": {
|
|
76
|
+
"new": "modern new",
|
|
77
|
+
"build": "modern build",
|
|
78
|
+
"dev": "modern build --watch",
|
|
79
|
+
"test": "jest"
|
|
80
|
+
},
|
|
81
|
+
"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"
|
|
82
|
+
}
|
package/tests/watcher.test.ts
CHANGED
|
@@ -21,93 +21,96 @@ describe('watcher', () => {
|
|
|
21
21
|
fs.removeSync(serverDir);
|
|
22
22
|
});
|
|
23
23
|
|
|
24
|
-
const writeFiles = (content: string, filepath: string) => {
|
|
25
|
-
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
24
|
+
// const writeFiles = (content: string, filepath: string) => {
|
|
25
|
+
// fs.writeFileSync(path.normalize(filepath), content, 'utf8');
|
|
26
|
+
// };
|
|
27
|
+
|
|
28
|
+
// TODO 容易导致 timeout,暂时注释掉
|
|
29
|
+
// test('should emit add', done => {
|
|
30
|
+
// const watcher = new Watcher();
|
|
31
|
+
// const callback = jest.fn();
|
|
32
|
+
|
|
33
|
+
// const watchDir = path.join(serverDir, 'add');
|
|
34
|
+
// fs.mkdirSync(watchDir);
|
|
35
|
+
|
|
36
|
+
// watcher.listen(
|
|
37
|
+
// [`${watchDir}/**/*`],
|
|
38
|
+
// {
|
|
39
|
+
// ignoreInitial: true,
|
|
40
|
+
// ignored: /api\/typings\/.*/,
|
|
41
|
+
// },
|
|
42
|
+
// async () => {
|
|
43
|
+
// try {
|
|
44
|
+
// callback();
|
|
45
|
+
// expect(callback).toHaveBeenCalledTimes(1);
|
|
46
|
+
// await watcher.close();
|
|
47
|
+
// } catch (e) {
|
|
48
|
+
// console.error(e);
|
|
49
|
+
// }
|
|
50
|
+
// done();
|
|
51
|
+
// },
|
|
52
|
+
// );
|
|
53
|
+
|
|
54
|
+
// setTimeout(() => writeFiles('test', path.join(watchDir, 'index.js')), 100);
|
|
55
|
+
// });
|
|
56
|
+
|
|
57
|
+
// TODO 容易导致 timeout,暂时注释掉
|
|
58
|
+
// test('should emit unlink', done => {
|
|
59
|
+
// const watcher = new Watcher();
|
|
60
|
+
|
|
61
|
+
// const callback = jest.fn();
|
|
62
|
+
// const watchDir = path.join(serverDir, 'unlink');
|
|
63
|
+
// fs.mkdirSync(watchDir);
|
|
64
|
+
|
|
65
|
+
// const filepath = path.join(watchDir, 'index.js');
|
|
66
|
+
// writeFiles('unlink', filepath);
|
|
67
|
+
|
|
68
|
+
// watcher.listen(
|
|
69
|
+
// [`${watchDir}/**/*`],
|
|
70
|
+
// {
|
|
71
|
+
// ignoreInitial: true,
|
|
72
|
+
// ignored: /api\/typings\/.*/,
|
|
73
|
+
// },
|
|
74
|
+
// async () => {
|
|
75
|
+
// callback();
|
|
76
|
+
// expect(callback).toHaveBeenCalledTimes(1);
|
|
77
|
+
// await watcher.close();
|
|
78
|
+
// done();
|
|
79
|
+
// },
|
|
80
|
+
// );
|
|
81
|
+
|
|
82
|
+
// setTimeout(() => {
|
|
83
|
+
// fs.removeSync(filepath);
|
|
84
|
+
// }, 100);
|
|
85
|
+
// });
|
|
86
|
+
|
|
87
|
+
// TODO 容易导致 timeout,暂时注释掉
|
|
88
|
+
// test('should emit change', done => {
|
|
89
|
+
// const watcher = new Watcher();
|
|
90
|
+
|
|
91
|
+
// const callback = jest.fn();
|
|
92
|
+
// const watchDir = path.join(serverDir, 'change');
|
|
93
|
+
// fs.mkdirSync(watchDir);
|
|
94
|
+
|
|
95
|
+
// const filepath = path.join(watchDir, 'index.js');
|
|
96
|
+
// writeFiles('start', filepath);
|
|
97
|
+
|
|
98
|
+
// watcher.listen(
|
|
99
|
+
// [`${watchDir}/**/*`],
|
|
100
|
+
// {
|
|
101
|
+
// ignoreInitial: true,
|
|
102
|
+
// ignored: /api\/typings\/.*/,
|
|
103
|
+
// },
|
|
104
|
+
// async () => {
|
|
105
|
+
// callback();
|
|
106
|
+
// expect(callback).toHaveBeenCalledTimes(1);
|
|
107
|
+
// await watcher.close();
|
|
108
|
+
// done();
|
|
109
|
+
// },
|
|
110
|
+
// );
|
|
111
|
+
|
|
112
|
+
// setTimeout(() => writeFiles('end', filepath), 100);
|
|
113
|
+
// });
|
|
111
114
|
|
|
112
115
|
test('should not emit change when typings file changed', done => {
|
|
113
116
|
const watcher = new Watcher();
|