webpack-dev-service 0.12.7 → 0.12.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.
Files changed (60) 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 +1 -1
  12. package/cjs/server/dev/middleware.cjs +1 -1
  13. package/cjs/server/dev/utils/fs.cjs +1 -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 +1 -1
  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 +45 -15
  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 +1 -1
  41. package/esm/server/dev/middleware.js +1 -1
  42. package/esm/server/dev/utils/fs.js +1 -1
  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 +1 -1
  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 +45 -15
  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 +1 -1
  60. package/types/server/dev/utils/stream.d.ts +8 -1
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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
@@ -15,12 +15,13 @@ const node_stream = require('node:stream');
15
15
  /**
16
16
  * @module stream
17
17
  */
18
+ const DISPOSE_EVENT = Symbol('dispose');
18
19
  class FileReadStream extends node_stream.Readable {
19
- fd;
20
20
  fs;
21
21
  path;
22
22
  ranges;
23
23
  bytesRead = 0;
24
+ fd = null;
24
25
  reading = false;
25
26
  currentRangeIndex = 0;
26
27
  readState = 0 /* ReadState.PREFIX */;
@@ -81,6 +82,7 @@ class FileReadStream extends node_stream.Readable {
81
82
  let bytesRead = 0;
82
83
  const padding = this.getPadding(range);
83
84
  const hasRangePadding = padding != null;
85
+ // If padding exists.
84
86
  if (hasRangePadding) {
85
87
  const { length } = padding;
86
88
  const begin = this.bytesRead;
@@ -91,9 +93,11 @@ class FileReadStream extends node_stream.Readable {
91
93
  this.bytesRead = end;
92
94
  }
93
95
  }
96
+ // If no padding or read completed.
94
97
  if (bytesRead <= 0) {
95
98
  this.bytesRead = 0;
96
99
  const { readState } = this;
100
+ // Change read state.
97
101
  switch (readState) {
98
102
  case 0 /* ReadState.PREFIX */:
99
103
  this.readState = 1 /* ReadState.RANGE */;
@@ -123,21 +127,27 @@ class FileReadStream extends node_stream.Readable {
123
127
  this.reading = true;
124
128
  const { bytesRead } = this;
125
129
  const position = range.offset + bytesRead;
126
- const buffer = node_buffer.Buffer.alloc(Math.min(size, range.length - bytesRead));
130
+ const buffer = node_buffer.Buffer.allocUnsafeSlow(Math.min(size, range.length - bytesRead));
131
+ // Read file range.
127
132
  this.fs.read(fd, buffer, 0, buffer.length, position, (readError, bytesRead, buffer) => {
128
- if (readError != null) {
129
- this.destroy(readError);
133
+ this.reading = false;
134
+ // Tell ._destroy() that it's safe to close the fd now.
135
+ if (this.destroyed) {
136
+ this.emit(DISPOSE_EVENT, readError);
130
137
  } else {
131
- if (bytesRead > 0) {
132
- this.push(buffer.subarray(0, bytesRead));
133
- this.bytesRead += bytesRead;
138
+ if (readError != null) {
139
+ this.destroy(readError);
134
140
  } else {
135
- this.bytesRead = 0;
136
- this.readState = 2 /* ReadState.SUFFIX */;
137
- this.readFilePadding(fd, range, size);
141
+ if (bytesRead > 0) {
142
+ this.push(buffer.subarray(0, bytesRead));
143
+ this.bytesRead += bytesRead;
144
+ } else {
145
+ this.bytesRead = 0;
146
+ this.readState = 2 /* ReadState.SUFFIX */;
147
+ this.readFilePadding(fd, range, size);
148
+ }
138
149
  }
139
150
  }
140
- this.reading = false;
141
151
  });
142
152
  }
143
153
  /**
@@ -149,10 +159,12 @@ class FileReadStream extends node_stream.Readable {
149
159
  if (!this.reading) {
150
160
  const { fd } = this;
151
161
  const range = this.getRange();
162
+ // If fd or range is null, finish stream.
152
163
  if (fd == null || range == null) {
153
164
  this.push(null);
154
165
  } else {
155
166
  const { readState } = this;
167
+ // Read bytes from range.
156
168
  switch (readState) {
157
169
  case 0 /* ReadState.PREFIX */:
158
170
  case 2 /* ReadState.SUFFIX */:
@@ -166,14 +178,16 @@ class FileReadStream extends node_stream.Readable {
166
178
  }
167
179
  }
168
180
  /**
169
- * @override
170
- * @method _destroy
181
+ * @private
182
+ * @method dispose
171
183
  * @param error The error.
172
184
  * @param callback The callback.
173
185
  */
174
- _destroy(error, callback) {
186
+ dispose(error, callback) {
175
187
  const { fd } = this;
176
188
  if (fd != null) {
189
+ this.fd = null;
190
+ // Close the fd.
177
191
  this.fs.close(fd, closeError => {
178
192
  callback(error ?? closeError);
179
193
  });
@@ -181,6 +195,22 @@ class FileReadStream extends node_stream.Readable {
181
195
  callback(error);
182
196
  }
183
197
  }
198
+ /**
199
+ * @override
200
+ * @method _destroy
201
+ * @param error The error.
202
+ * @param callback The callback.
203
+ */
204
+ _destroy(error, callback) {
205
+ // Wait I/O completion.
206
+ if (this.reading) {
207
+ this.once(DISPOSE_EVENT, disposeError => {
208
+ this.dispose(error ?? disposeError, callback);
209
+ });
210
+ } else {
211
+ this.dispose(error, callback);
212
+ }
213
+ }
184
214
  }
185
215
 
186
216
  exports.FileReadStream = FileReadStream;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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
@@ -13,12 +13,13 @@ import { Readable } from 'node:stream';
13
13
  /**
14
14
  * @module stream
15
15
  */
16
+ const DISPOSE_EVENT = Symbol('dispose');
16
17
  class FileReadStream extends Readable {
17
- fd;
18
18
  fs;
19
19
  path;
20
20
  ranges;
21
21
  bytesRead = 0;
22
+ fd = null;
22
23
  reading = false;
23
24
  currentRangeIndex = 0;
24
25
  readState = 0 /* ReadState.PREFIX */;
@@ -79,6 +80,7 @@ class FileReadStream extends Readable {
79
80
  let bytesRead = 0;
80
81
  const padding = this.getPadding(range);
81
82
  const hasRangePadding = padding != null;
83
+ // If padding exists.
82
84
  if (hasRangePadding) {
83
85
  const { length } = padding;
84
86
  const begin = this.bytesRead;
@@ -89,9 +91,11 @@ class FileReadStream extends Readable {
89
91
  this.bytesRead = end;
90
92
  }
91
93
  }
94
+ // If no padding or read completed.
92
95
  if (bytesRead <= 0) {
93
96
  this.bytesRead = 0;
94
97
  const { readState } = this;
98
+ // Change read state.
95
99
  switch (readState) {
96
100
  case 0 /* ReadState.PREFIX */:
97
101
  this.readState = 1 /* ReadState.RANGE */;
@@ -121,21 +125,27 @@ class FileReadStream extends Readable {
121
125
  this.reading = true;
122
126
  const { bytesRead } = this;
123
127
  const position = range.offset + bytesRead;
124
- const buffer = Buffer.alloc(Math.min(size, range.length - bytesRead));
128
+ const buffer = Buffer.allocUnsafeSlow(Math.min(size, range.length - bytesRead));
129
+ // Read file range.
125
130
  this.fs.read(fd, buffer, 0, buffer.length, position, (readError, bytesRead, buffer) => {
126
- if (readError != null) {
127
- this.destroy(readError);
131
+ this.reading = false;
132
+ // Tell ._destroy() that it's safe to close the fd now.
133
+ if (this.destroyed) {
134
+ this.emit(DISPOSE_EVENT, readError);
128
135
  } else {
129
- if (bytesRead > 0) {
130
- this.push(buffer.subarray(0, bytesRead));
131
- this.bytesRead += bytesRead;
136
+ if (readError != null) {
137
+ this.destroy(readError);
132
138
  } else {
133
- this.bytesRead = 0;
134
- this.readState = 2 /* ReadState.SUFFIX */;
135
- this.readFilePadding(fd, range, size);
139
+ if (bytesRead > 0) {
140
+ this.push(buffer.subarray(0, bytesRead));
141
+ this.bytesRead += bytesRead;
142
+ } else {
143
+ this.bytesRead = 0;
144
+ this.readState = 2 /* ReadState.SUFFIX */;
145
+ this.readFilePadding(fd, range, size);
146
+ }
136
147
  }
137
148
  }
138
- this.reading = false;
139
149
  });
140
150
  }
141
151
  /**
@@ -147,10 +157,12 @@ class FileReadStream extends Readable {
147
157
  if (!this.reading) {
148
158
  const { fd } = this;
149
159
  const range = this.getRange();
160
+ // If fd or range is null, finish stream.
150
161
  if (fd == null || range == null) {
151
162
  this.push(null);
152
163
  } else {
153
164
  const { readState } = this;
165
+ // Read bytes from range.
154
166
  switch (readState) {
155
167
  case 0 /* ReadState.PREFIX */:
156
168
  case 2 /* ReadState.SUFFIX */:
@@ -164,14 +176,16 @@ class FileReadStream extends Readable {
164
176
  }
165
177
  }
166
178
  /**
167
- * @override
168
- * @method _destroy
179
+ * @private
180
+ * @method dispose
169
181
  * @param error The error.
170
182
  * @param callback The callback.
171
183
  */
172
- _destroy(error, callback) {
184
+ dispose(error, callback) {
173
185
  const { fd } = this;
174
186
  if (fd != null) {
187
+ this.fd = null;
188
+ // Close the fd.
175
189
  this.fs.close(fd, closeError => {
176
190
  callback(error ?? closeError);
177
191
  });
@@ -179,6 +193,22 @@ class FileReadStream extends Readable {
179
193
  callback(error);
180
194
  }
181
195
  }
196
+ /**
197
+ * @override
198
+ * @method _destroy
199
+ * @param error The error.
200
+ * @param callback The callback.
201
+ */
202
+ _destroy(error, callback) {
203
+ // Wait I/O completion.
204
+ if (this.reading) {
205
+ this.once(DISPOSE_EVENT, disposeError => {
206
+ this.dispose(error ?? disposeError, callback);
207
+ });
208
+ } else {
209
+ this.dispose(error, callback);
210
+ }
211
+ }
182
212
  }
183
213
 
184
214
  export { FileReadStream };
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @package webpack-dev-service
3
3
  * @license MIT
4
- * @version 0.12.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7
4
+ * @version 0.12.8
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.7",
3
+ "version": "0.12.8",
4
4
  "description": "A koa 2 middleware for webpack development and hot reloading.",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -18,11 +18,11 @@ interface Callback {
18
18
  (error?: Error | null): void;
19
19
  }
20
20
  export declare class FileReadStream extends Readable {
21
- private fd?;
22
21
  private fs;
23
22
  private path;
24
23
  private ranges;
25
24
  private bytesRead;
25
+ private fd;
26
26
  private reading;
27
27
  private currentRangeIndex;
28
28
  private readState;
@@ -72,6 +72,13 @@ export declare class FileReadStream extends Readable {
72
72
  * @param size The number of bytes to read.
73
73
  */
74
74
  _read(size: number): void;
75
+ /**
76
+ * @private
77
+ * @method dispose
78
+ * @param error The error.
79
+ * @param callback The callback.
80
+ */
81
+ private dispose;
75
82
  /**
76
83
  * @override
77
84
  * @method _destroy