wapplr 1.0.50 → 1.0.52

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.
@@ -13,6 +13,8 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
13
13
 
14
14
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
15
 
16
+ var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
17
+
16
18
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
17
19
 
18
20
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
@@ -165,6 +167,32 @@ function createServer() {
165
167
  httpServer.listen(port, function () {
166
168
  console.log("The server is running at http://localhost:".concat(port, "/"));
167
169
  });
170
+ httpServer.__sockets = new Set();
171
+ httpServer.on("connection", function (socket) {
172
+ httpServer.__sockets.add(socket);
173
+
174
+ socket.on("close", function () {
175
+ httpServer.__sockets["delete"](socket);
176
+ });
177
+ });
178
+
179
+ httpServer.__destroySockets = function () {
180
+ var sockets = httpServer.__sockets;
181
+
182
+ var _iterator = (0, _createForOfIteratorHelper2["default"])(sockets.values()),
183
+ _step;
184
+
185
+ try {
186
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
187
+ var socket = _step.value;
188
+ socket.destroy();
189
+ }
190
+ } catch (err) {
191
+ _iterator.e(err);
192
+ } finally {
193
+ _iterator.f();
194
+ }
195
+ };
168
196
  }
169
197
 
170
198
  if (key && cert && portSSL) {
@@ -180,6 +208,32 @@ function createServer() {
180
208
  httpsServer.listen(portSSL, function () {
181
209
  console.log("The server is running at https://localhost:".concat(portSSL, "/ with HTTP2 protocol"));
182
210
  });
211
+ httpsServer.__sockets = new Set();
212
+ httpsServer.on("connection", function (socket) {
213
+ httpsServer.__sockets.add(socket);
214
+
215
+ socket.on("close", function () {
216
+ httpsServer.__sockets["delete"](socket);
217
+ });
218
+ });
219
+
220
+ httpsServer.__destroySockets = function () {
221
+ var sockets = httpsServer.__sockets;
222
+
223
+ var _iterator2 = (0, _createForOfIteratorHelper2["default"])(sockets.values()),
224
+ _step2;
225
+
226
+ try {
227
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
228
+ var socket = _step2.value;
229
+ socket.destroy();
230
+ }
231
+ } catch (err) {
232
+ _iterator2.e(err);
233
+ } finally {
234
+ _iterator2.f();
235
+ }
236
+ };
183
237
  }
184
238
  }
185
239
 
@@ -196,6 +250,8 @@ function createServer() {
196
250
  });
197
251
  var closed = 0;
198
252
  shouldClose.forEach(function (httpServer) {
253
+ httpServer.__destroySockets();
254
+
199
255
  httpServer.close(function () {
200
256
  closed = closed + 1;
201
257
  servers[port] = null;
@@ -3,6 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.endStream = endStream;
7
+ exports.addCloseEventsForReadableStream = addCloseEventsForReadableStream;
6
8
  exports["default"] = serveStatic;
7
9
 
8
10
  var fs = require("fs");
@@ -26,28 +28,12 @@ function destroy(stream) {
26
28
  return stream;
27
29
  }
28
30
 
29
- function endStream(req, res, stream) {
30
- if (req.__onFinishedRemoveListener) {
31
- req.__onFinishedRemoveListener();
32
-
33
- req.__onFinishedRemoveListener = null;
34
- }
35
-
36
- if (res.__onFinishedRemoveListener) {
37
- res.__onFinishedRemoveListener();
38
-
39
- res.__onFinishedRemoveListener = null;
40
- }
41
-
42
- destroy(stream);
43
- }
44
-
45
31
  function onFinished(req, res, callback) {
46
32
  function isFinishedResponse() {
47
33
  var socket = res.socket;
48
34
 
49
35
  if (typeof res.finished === "boolean") {
50
- return Boolean(res.finished || socket && !socket.writable);
36
+ return Boolean(res.finished || res.writableEnded || socket && !socket.writable);
51
37
  }
52
38
  }
53
39
 
@@ -61,7 +47,6 @@ function onFinished(req, res, callback) {
61
47
 
62
48
  function removeListener() {
63
49
  if (req.__onFinishedInterval) {
64
- console.log("remove listener", req.path);
65
50
  clearInterval(req.__onFinishedInterval);
66
51
  req.__onFinishedInterval = 0;
67
52
  }
@@ -85,6 +70,37 @@ function onFinished(req, res, callback) {
85
70
  req.__onFinishedRemoveListener = res.__onFinishedRemoveListener = removeListener;
86
71
  }
87
72
 
73
+ function endStream(req, res, stream) {
74
+ if (req.__onFinishedRemoveListener) {
75
+ req.__onFinishedRemoveListener();
76
+
77
+ req.__onFinishedRemoveListener = null;
78
+ }
79
+
80
+ if (res.__onFinishedRemoveListener) {
81
+ res.__onFinishedRemoveListener();
82
+
83
+ res.__onFinishedRemoveListener = null;
84
+ }
85
+
86
+ destroy(stream);
87
+ }
88
+
89
+ function addCloseEventsForReadableStream(req, res, stream) {
90
+ req.on("close", function () {
91
+ endStream(req, res, stream);
92
+ });
93
+ req.connection.on("close", function () {
94
+ endStream(req, res, stream);
95
+ });
96
+ onFinished(req, res, function () {
97
+ endStream(req, res, stream);
98
+ });
99
+ stream.on("close", function onclose() {
100
+ endStream(req, res, stream);
101
+ });
102
+ }
103
+
88
104
  function serveStatic(publicPath) {
89
105
  return function staticMiddleware(req, res, next) {
90
106
  var parsedUrl = {
@@ -97,8 +113,8 @@ function serveStatic(publicPath) {
97
113
 
98
114
  var sanitizePath = path.normalize(parsedUrl.pathname).replace(/^(\.\.[\/\\])+/, "");
99
115
  var pathname = path.join(publicPath, sanitizePath);
100
- var paredSanitizePath = path.parse(pathname);
101
- var ext = paredSanitizePath.ext;
116
+ var parsedSanitizePath = path.parse(pathname);
117
+ var ext = parsedSanitizePath.ext;
102
118
 
103
119
  if (!fs.existsSync(pathname) || !ext) {
104
120
  return next();
@@ -113,15 +129,10 @@ function serveStatic(publicPath) {
113
129
  res.wappResponse.sendData = {
114
130
  data: data,
115
131
  stats: stats,
116
- parsedPath: paredSanitizePath
132
+ parsedPath: parsedSanitizePath
117
133
  };
118
134
  stream = fs.createReadStream(pathname);
119
- onFinished(req, res, function () {
120
- endStream(req, res, stream);
121
- });
122
- stream.on("close", function onopen() {
123
- endStream(req, res, stream);
124
- });
135
+ addCloseEventsForReadableStream(req, res, stream);
125
136
  stream.on("error", function onerror(err) {
126
137
  endStream(req, res, stream);
127
138
  res.wappResponse.status(err.statusCode || 500, err);
package/package.json CHANGED
@@ -22,7 +22,7 @@
22
22
  "files": [
23
23
  "dist/*"
24
24
  ],
25
- "version": "1.0.50",
25
+ "version": "1.0.52",
26
26
  "main": "dist/server",
27
27
  "browser": "dist/client",
28
28
  "repository": {