webpack-dev-service 0.12.8 → 0.12.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/cjs/client/client.cjs +1 -1
  2. package/cjs/client/events.cjs +1 -1
  3. package/cjs/client/hot.cjs +1 -1
  4. package/cjs/client/index.cjs +1 -1
  5. package/cjs/client/main.cjs +1 -1
  6. package/cjs/client/ui/Overlay.cjs +1 -1
  7. package/cjs/client/ui/Progress.cjs +1 -1
  8. package/cjs/client/ui/utils.cjs +1 -1
  9. package/cjs/server/compose.cjs +1 -1
  10. package/cjs/server/dev/Service.cjs +1 -1
  11. package/cjs/server/dev/index.cjs +4 -3
  12. package/cjs/server/dev/middleware.cjs +5 -18
  13. package/cjs/server/dev/utils/fs.cjs +12 -1
  14. package/cjs/server/dev/utils/hash.cjs +1 -1
  15. package/cjs/server/dev/utils/http.cjs +1 -1
  16. package/cjs/server/dev/utils/path.cjs +1 -1
  17. package/cjs/server/dev/utils/paths.cjs +1 -1
  18. package/cjs/server/dev/utils/ready.cjs +1 -1
  19. package/cjs/server/dev/utils/setupHooks.cjs +1 -1
  20. package/cjs/server/dev/utils/setupOutputFileSystem.cjs +2 -8
  21. package/cjs/server/dev/utils/setupWatching.cjs +1 -1
  22. package/cjs/server/dev/utils/setupWriteToDisk.cjs +1 -1
  23. package/cjs/server/dev/utils/stream.cjs +10 -2
  24. package/cjs/server/hot/Socket.cjs +1 -1
  25. package/cjs/server/hot/index.cjs +1 -1
  26. package/cjs/server/hot/utils.cjs +1 -1
  27. package/cjs/server/index.cjs +1 -1
  28. package/cjs/server/schema.cjs +1 -1
  29. package/cjs/server/utils.cjs +1 -1
  30. package/esm/client/client.js +1 -1
  31. package/esm/client/events.js +1 -1
  32. package/esm/client/hot.js +1 -1
  33. package/esm/client/index.js +1 -1
  34. package/esm/client/main.js +1 -1
  35. package/esm/client/ui/Overlay.js +1 -1
  36. package/esm/client/ui/Progress.js +1 -1
  37. package/esm/client/ui/utils.js +1 -1
  38. package/esm/server/compose.js +1 -1
  39. package/esm/server/dev/Service.js +1 -1
  40. package/esm/server/dev/index.js +4 -3
  41. package/esm/server/dev/middleware.js +5 -18
  42. package/esm/server/dev/utils/fs.js +12 -2
  43. package/esm/server/dev/utils/hash.js +1 -1
  44. package/esm/server/dev/utils/http.js +1 -1
  45. package/esm/server/dev/utils/path.js +1 -1
  46. package/esm/server/dev/utils/paths.js +1 -1
  47. package/esm/server/dev/utils/ready.js +1 -1
  48. package/esm/server/dev/utils/setupHooks.js +1 -1
  49. package/esm/server/dev/utils/setupOutputFileSystem.js +2 -8
  50. package/esm/server/dev/utils/setupWatching.js +1 -1
  51. package/esm/server/dev/utils/setupWriteToDisk.js +1 -1
  52. package/esm/server/dev/utils/stream.js +10 -2
  53. package/esm/server/hot/Socket.js +1 -1
  54. package/esm/server/hot/index.js +1 -1
  55. package/esm/server/hot/utils.js +1 -1
  56. package/esm/server/index.js +1 -1
  57. package/esm/server/schema.js +1 -1
  58. package/esm/server/utils.js +1 -1
  59. package/package.json +2 -2
  60. package/types/server/dev/interface.d.ts +6 -6
  61. package/types/server/dev/utils/fs.d.ts +5 -0
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -10,6 +10,7 @@
10
10
  'use strict';
11
11
 
12
12
  const ready = require('./utils/ready.cjs');
13
+ const fs = require('./utils/fs.cjs');
13
14
  const middleware = require('./middleware.cjs');
14
15
  const utils = require('../utils.cjs');
15
16
  const setupHooks = require('./utils/setupHooks.cjs');
@@ -22,11 +23,11 @@ const setupOutputFileSystem = require('./utils/setupOutputFileSystem.cjs');
22
23
  */
23
24
  function setup(compiler, options) {
24
25
  const context = {
25
- options,
26
26
  compiler,
27
27
  stats: null,
28
28
  callbacks: [],
29
- logger: compiler.getInfrastructureLogger(utils.PLUGIN_NAME)
29
+ logger: compiler.getInfrastructureLogger(utils.PLUGIN_NAME),
30
+ options: { fs: fs.createMemfs(), highWaterMark: 65536, ...options }
30
31
  };
31
32
  setupHooks.setupHooks(context);
32
33
  if (options.writeToDisk) {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -23,38 +23,25 @@ function getFileServices(context, stats) {
23
23
  if (cached) {
24
24
  return cached;
25
25
  }
26
+ const { options } = context;
26
27
  const paths$1 = paths.getPaths(stats);
27
- const { fs, options } = context;
28
28
  const services = [];
29
- const { etag, ignore, headers, acceptRanges, lastModified } = options;
30
29
  // Get the file services.
31
30
  for (const [outputPath, publicPath] of paths$1) {
32
- services.push([
33
- publicPath,
34
- new Service.Service(outputPath, {
35
- fs,
36
- etag,
37
- ignore,
38
- headers,
39
- acceptRanges,
40
- lastModified
41
- })
42
- ]);
31
+ services.push([publicPath, new Service.Service(outputPath, options)]);
43
32
  }
44
33
  // Cache services.
45
34
  context.services = services;
46
35
  // Return services.
47
36
  return services;
48
37
  }
49
- function getFileServicesAsync(context, pathname) {
38
+ function getFileServicesAsync(context) {
50
39
  return new Promise(resolve => {
51
40
  const { stats } = context;
52
41
  // If stats exists, resolve immediately.
53
42
  if (stats) {
54
43
  resolve(getFileServices(context, stats));
55
44
  } else {
56
- // Log waiting info.
57
- context.logger.info(`wait until bundle finished: ${pathname}`);
58
45
  // Otherwise, wait until bundle finished.
59
46
  ready.ready(context, stats => {
60
47
  resolve(getFileServices(context, stats));
@@ -73,7 +60,7 @@ function middleware(context) {
73
60
  // Only support GET and HEAD (405).
74
61
  if (ctx.method === 'GET' || ctx.method === 'HEAD') {
75
62
  // Get the file services.
76
- const services = await getFileServicesAsync(context, pathname);
63
+ const services = await getFileServicesAsync(context);
77
64
  // Try to respond.
78
65
  for (const [publicPath, service] of services) {
79
66
  if (await service.respond(pathname, ctx, publicPath)) {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -9,9 +9,19 @@
9
9
 
10
10
  'use strict';
11
11
 
12
+ const memfs = require('memfs');
13
+
12
14
  /**
13
15
  * @module fs
14
16
  */
17
+ /**
18
+ * @function createMemfs
19
+ * @description Create memfs instance.
20
+ */
21
+ function createMemfs() {
22
+ const volume = new memfs.Volume();
23
+ return memfs.createFsFromVolume(volume);
24
+ }
15
25
  /**
16
26
  * @function stat
17
27
  * @description Get file stats.
@@ -26,4 +36,5 @@ function stat(fs, path) {
26
36
  });
27
37
  }
28
38
 
39
+ exports.createMemfs = createMemfs;
29
40
  exports.stat = stat;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -10,22 +10,16 @@
10
10
  'use strict';
11
11
 
12
12
  const utils = require('../../utils.cjs');
13
- const memfs = require('memfs');
14
13
 
15
14
  /**
16
15
  * @module setupOutputFileSystem
17
16
  */
18
- function createMemfs() {
19
- const volume = new memfs.Volume();
20
- return memfs.createFsFromVolume(volume);
21
- }
22
17
  function setupOutputFileSystem(context) {
23
- const { fs = createMemfs() } = context.options;
18
+ const { fs } = context.options;
24
19
  const compilers = utils.getCompilers(context.compiler);
25
20
  for (const compiler of compilers) {
26
21
  compiler.outputFileSystem = fs;
27
22
  }
28
- context.fs = fs;
29
23
  }
30
24
 
31
25
  exports.setupOutputFileSystem = setupOutputFileSystem;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -139,7 +139,15 @@ class FileReadStream extends node_stream.Readable {
139
139
  this.destroy(readError);
140
140
  } else {
141
141
  if (bytesRead > 0) {
142
- this.push(buffer.subarray(0, bytesRead));
142
+ if (bytesRead !== buffer.length) {
143
+ // Slow path. Shrink to fit.
144
+ // Copy instead of slice so that we don't retain
145
+ // large backing buffer for small reads.
146
+ const chunk = node_buffer.Buffer.allocUnsafeSlow(bytesRead);
147
+ buffer.copy(chunk, 0, 0, bytesRead);
148
+ buffer = chunk;
149
+ }
150
+ this.push(buffer);
143
151
  this.bytesRead += bytesRead;
144
152
  } else {
145
153
  this.bytesRead = 0;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
package/esm/client/hot.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,13 +1,14 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
8
8
  */
9
9
 
10
10
  import { ready } from './utils/ready.js';
11
+ import { createMemfs } from './utils/fs.js';
11
12
  import { middleware } from './middleware.js';
12
13
  import { PLUGIN_NAME } from '../utils.js';
13
14
  import { setupHooks } from './utils/setupHooks.js';
@@ -20,11 +21,11 @@ import { setupOutputFileSystem } from './utils/setupOutputFileSystem.js';
20
21
  */
21
22
  function setup(compiler, options) {
22
23
  const context = {
23
- options,
24
24
  compiler,
25
25
  stats: null,
26
26
  callbacks: [],
27
- logger: compiler.getInfrastructureLogger(PLUGIN_NAME)
27
+ logger: compiler.getInfrastructureLogger(PLUGIN_NAME),
28
+ options: { fs: createMemfs(), highWaterMark: 65536, ...options }
28
29
  };
29
30
  setupHooks(context);
30
31
  if (options.writeToDisk) {
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -21,38 +21,25 @@ function getFileServices(context, stats) {
21
21
  if (cached) {
22
22
  return cached;
23
23
  }
24
+ const { options } = context;
24
25
  const paths = getPaths(stats);
25
- const { fs, options } = context;
26
26
  const services = [];
27
- const { etag, ignore, headers, acceptRanges, lastModified } = options;
28
27
  // Get the file services.
29
28
  for (const [outputPath, publicPath] of paths) {
30
- services.push([
31
- publicPath,
32
- new Service(outputPath, {
33
- fs,
34
- etag,
35
- ignore,
36
- headers,
37
- acceptRanges,
38
- lastModified
39
- })
40
- ]);
29
+ services.push([publicPath, new Service(outputPath, options)]);
41
30
  }
42
31
  // Cache services.
43
32
  context.services = services;
44
33
  // Return services.
45
34
  return services;
46
35
  }
47
- function getFileServicesAsync(context, pathname) {
36
+ function getFileServicesAsync(context) {
48
37
  return new Promise(resolve => {
49
38
  const { stats } = context;
50
39
  // If stats exists, resolve immediately.
51
40
  if (stats) {
52
41
  resolve(getFileServices(context, stats));
53
42
  } else {
54
- // Log waiting info.
55
- context.logger.info(`wait until bundle finished: ${pathname}`);
56
43
  // Otherwise, wait until bundle finished.
57
44
  ready(context, stats => {
58
45
  resolve(getFileServices(context, stats));
@@ -71,7 +58,7 @@ function middleware(context) {
71
58
  // Only support GET and HEAD (405).
72
59
  if (ctx.method === 'GET' || ctx.method === 'HEAD') {
73
60
  // Get the file services.
74
- const services = await getFileServicesAsync(context, pathname);
61
+ const services = await getFileServicesAsync(context);
75
62
  // Try to respond.
76
63
  for (const [publicPath, service] of services) {
77
64
  if (await service.respond(pathname, ctx, publicPath)) {
@@ -1,15 +1,25 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
8
8
  */
9
9
 
10
+ import { Volume, createFsFromVolume } from 'memfs';
11
+
10
12
  /**
11
13
  * @module fs
12
14
  */
15
+ /**
16
+ * @function createMemfs
17
+ * @description Create memfs instance.
18
+ */
19
+ function createMemfs() {
20
+ const volume = new Volume();
21
+ return createFsFromVolume(volume);
22
+ }
13
23
  /**
14
24
  * @function stat
15
25
  * @description Get file stats.
@@ -24,4 +34,4 @@ function stat(fs, path) {
24
34
  });
25
35
  }
26
36
 
27
- export { stat };
37
+ export { createMemfs, stat };
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,29 +1,23 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
8
8
  */
9
9
 
10
10
  import { getCompilers } from '../../utils.js';
11
- import { Volume, createFsFromVolume } from 'memfs';
12
11
 
13
12
  /**
14
13
  * @module setupOutputFileSystem
15
14
  */
16
- function createMemfs() {
17
- const volume = new Volume();
18
- return createFsFromVolume(volume);
19
- }
20
15
  function setupOutputFileSystem(context) {
21
- const { fs = createMemfs() } = context.options;
16
+ const { fs } = context.options;
22
17
  const compilers = getCompilers(context.compiler);
23
18
  for (const compiler of compilers) {
24
19
  compiler.outputFileSystem = fs;
25
20
  }
26
- context.fs = fs;
27
21
  }
28
22
 
29
23
  export { setupOutputFileSystem };
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -137,7 +137,15 @@ class FileReadStream extends Readable {
137
137
  this.destroy(readError);
138
138
  } else {
139
139
  if (bytesRead > 0) {
140
- this.push(buffer.subarray(0, bytesRead));
140
+ if (bytesRead !== buffer.length) {
141
+ // Slow path. Shrink to fit.
142
+ // Copy instead of slice so that we don't retain
143
+ // large backing buffer for small reads.
144
+ const chunk = Buffer.allocUnsafeSlow(bytesRead);
145
+ buffer.copy(chunk, 0, 0, bytesRead);
146
+ buffer = chunk;
147
+ }
148
+ this.push(buffer);
141
149
  this.bytesRead += bytesRead;
142
150
  } else {
143
151
  this.bytesRead = 0;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.8
4
+ * @version 0.12.10
5
5
  * @author nuintun <nuintun@qq.com>
6
6
  * @description A koa 2 middleware for webpack development and hot reloading.
7
7
  * @see https://github.com/nuintun/webpack-dev-service#readme
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "webpack-dev-service",
3
- "version": "0.12.8",
3
+ "version": "0.12.10",
4
4
  "description": "A koa 2 middleware for webpack development and hot reloading.",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -91,7 +91,7 @@
91
91
  "@swc/core": "^1.7.36",
92
92
  "@swc/helpers": "^0.5.13",
93
93
  "@types/etag": "^1.8.3",
94
- "@types/node": "^22.7.5",
94
+ "@types/node": "^22.7.6",
95
95
  "@types/range-parser": "^1.2.7",
96
96
  "@types/react": "^18.3.11",
97
97
  "@types/react-dom": "^18.3.1",
@@ -18,21 +18,21 @@ export interface Expose {
18
18
  readonly close: (callback: ErrorCallback) => void;
19
19
  readonly invalidate: (callback: ErrorCallback) => void;
20
20
  }
21
- export interface Options extends Omit<ServiceOptions, 'fs'> {
22
- fs?: FileSystem;
21
+ export interface Options extends Optional<ServiceOptions, 'fs'> {
23
22
  stats?: StatsOptions;
24
23
  writeToDisk?: boolean | ((targetPath: string) => boolean);
25
- onCompilationDone?(stats: UnionStats, statsOptions: Readonly<webpack.StatsOptions>): void;
24
+ onCompilationDone?: (stats: UnionStats, statsOptions: Readonly<webpack.StatsOptions>) => void;
26
25
  }
27
26
  export type FileService = [publicPath: string, service: Service];
28
27
  export interface Context {
29
- fs: FileSystem;
30
28
  logger: Logger;
31
- options: Options;
32
29
  callbacks: Callback[];
33
30
  compiler: UnionCompiler;
34
31
  watching: UnionWatching;
35
32
  services?: FileService[];
36
33
  stats: UnionStats | null;
34
+ options: Options & {
35
+ fs: FileSystem;
36
+ };
37
37
  }
38
- export type InitialContext = Optional<Context, 'fs' | 'watching'>;
38
+ export type InitialContext = Optional<Context, 'watching'>;
@@ -11,6 +11,11 @@ export interface FileSystem extends GetProp<Compiler, 'outputFileSystem'> {
11
11
  read: typeof fs.read;
12
12
  close: typeof fs.close;
13
13
  }
14
+ /**
15
+ * @function createMemfs
16
+ * @description Create memfs instance.
17
+ */
18
+ export declare function createMemfs(): FileSystem;
14
19
  /**
15
20
  * @function stat
16
21
  * @description Get file stats.