wapplr 1.0.48 → 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;
@@ -30,7 +30,7 @@ function html(_ref) {
30
30
  _config$appStyle = config.appStyle,
31
31
  appStyle = _config$appStyle === void 0 ? style : _config$appStyle;
32
32
  var _res$wappResponse = res.wappResponse,
33
- state = _res$wappResponse.state,
33
+ store = _res$wappResponse.store,
34
34
  _res$wappResponse$con = _res$wappResponse.content,
35
35
  content = _res$wappResponse$con === void 0 ? {} : _res$wappResponse$con,
36
36
  _res$wappResponse$sta = _res$wappResponse.statusCode,
@@ -39,6 +39,7 @@ function html(_ref) {
39
39
  containerElementId = _res$wappResponse$con2 === void 0 ? "app" : _res$wappResponse$con2,
40
40
  _res$wappResponse$app = _res$wappResponse.appStateName,
41
41
  appStateName = _res$wappResponse$app === void 0 ? "APP_STATE" : _res$wappResponse$app;
42
+ var state = store ? store.getState() : {};
42
43
  var _content$render = content.render,
43
44
  render = _content$render === void 0 ? "" : _content$render,
44
45
  _content$title = content.title,
@@ -3,12 +3,104 @@
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");
9
11
 
10
12
  var path = require("path");
11
13
 
14
+ function destroy(stream) {
15
+ if (!(stream !== null && stream !== void 0 && stream.__destroyed)) {
16
+ stream.destroy();
17
+ stream.__destroyed = true;
18
+
19
+ if (typeof stream.close === "function") {
20
+ stream.on("open", function onOpenClose() {
21
+ if (typeof this.fd === "number") {
22
+ this.close();
23
+ }
24
+ });
25
+ }
26
+ }
27
+
28
+ return stream;
29
+ }
30
+
31
+ function onFinished(req, res, callback) {
32
+ function isFinishedResponse() {
33
+ var socket = res.socket;
34
+
35
+ if (typeof res.finished === "boolean") {
36
+ return Boolean(res.finished || res.writableEnded || socket && !socket.writable);
37
+ }
38
+ }
39
+
40
+ function isFinishedRequest() {
41
+ var socket = req.socket;
42
+
43
+ if (typeof req.complete === "boolean") {
44
+ return Boolean(req.upgrade || !socket || !socket.readable || req.complete && !req.readable);
45
+ }
46
+ }
47
+
48
+ function removeListener() {
49
+ if (req.__onFinishedInterval) {
50
+ clearInterval(req.__onFinishedInterval);
51
+ req.__onFinishedInterval = 0;
52
+ }
53
+
54
+ if (res.__onFinishedInterval) {
55
+ clearInterval(res.__onFinishedInterval);
56
+ res.__onFinishedInterval = 0;
57
+ }
58
+ }
59
+
60
+ function listener() {
61
+ var result = isFinishedRequest() || isFinishedResponse();
62
+
63
+ if (result) {
64
+ removeListener();
65
+ callback();
66
+ }
67
+ }
68
+
69
+ req.__onFinishedInterval = res.__onFinishedInterval = setInterval(listener, 100);
70
+ req.__onFinishedRemoveListener = res.__onFinishedRemoveListener = removeListener;
71
+ }
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
+
12
104
  function serveStatic(publicPath) {
13
105
  return function staticMiddleware(req, res, next) {
14
106
  var parsedUrl = {
@@ -21,13 +113,15 @@ function serveStatic(publicPath) {
21
113
 
22
114
  var sanitizePath = path.normalize(parsedUrl.pathname).replace(/^(\.\.[\/\\])+/, "");
23
115
  var pathname = path.join(publicPath, sanitizePath);
24
- var paredSanitizePath = path.parse(pathname);
25
- var ext = paredSanitizePath.ext;
116
+ var parsedSanitizePath = path.parse(pathname);
117
+ var ext = parsedSanitizePath.ext;
26
118
 
27
119
  if (!fs.existsSync(pathname) || !ext) {
28
120
  return next();
29
121
  }
30
122
 
123
+ var stream;
124
+
31
125
  try {
32
126
  var data = fs.readFileSync(pathname);
33
127
  var stats = fs.statSync(pathname);
@@ -35,10 +129,12 @@ function serveStatic(publicPath) {
35
129
  res.wappResponse.sendData = {
36
130
  data: data,
37
131
  stats: stats,
38
- parsedPath: paredSanitizePath
132
+ parsedPath: parsedSanitizePath
39
133
  };
40
- var stream = fs.createReadStream(pathname);
134
+ stream = fs.createReadStream(pathname);
135
+ addCloseEventsForReadableStream(req, res, stream);
41
136
  stream.on("error", function onerror(err) {
137
+ endStream(req, res, stream);
42
138
  res.wappResponse.status(err.statusCode || 500, err);
43
139
  res.wapp.log(err, req, res);
44
140
  next(err);
@@ -50,6 +146,7 @@ function serveStatic(publicPath) {
50
146
  });
51
147
  });
52
148
  } catch (err) {
149
+ endStream(req, res, stream);
53
150
  res.wappResponse.status(err.statusCode || 500, err);
54
151
  res.wapp.log(err, req, res);
55
152
  next(err);
package/package.json CHANGED
@@ -22,7 +22,7 @@
22
22
  "files": [
23
23
  "dist/*"
24
24
  ],
25
- "version": "1.0.48",
25
+ "version": "1.0.52",
26
26
  "main": "dist/server",
27
27
  "browser": "dist/client",
28
28
  "repository": {