wapplr 1.0.49 → 1.0.53
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/dist/client/history.js
CHANGED
|
@@ -71,9 +71,7 @@ function createHistoryManager() {
|
|
|
71
71
|
state.key = state.key || createKey();
|
|
72
72
|
history.runListeners({
|
|
73
73
|
action: "POP",
|
|
74
|
-
location: (0, _objectSpread2["default"])(
|
|
75
|
-
key: state.key
|
|
76
|
-
}),
|
|
74
|
+
location: (0, _objectSpread2["default"])({}, newLocation),
|
|
77
75
|
state: state
|
|
78
76
|
});
|
|
79
77
|
}
|
|
@@ -139,9 +137,7 @@ function createHistoryManager() {
|
|
|
139
137
|
globalHistory.pushState(state, "", url);
|
|
140
138
|
history.runListeners({
|
|
141
139
|
action: "PUSH",
|
|
142
|
-
location: (0, _objectSpread2["default"])(
|
|
143
|
-
key: state.key
|
|
144
|
-
}),
|
|
140
|
+
location: (0, _objectSpread2["default"])({}, newLocation),
|
|
145
141
|
state: state
|
|
146
142
|
});
|
|
147
143
|
}
|
|
@@ -171,9 +167,6 @@ function createHistoryManager() {
|
|
|
171
167
|
enumerable: false,
|
|
172
168
|
value: defaultGetState
|
|
173
169
|
}),
|
|
174
|
-
key: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _utils.defaultDescriptor), {}, {
|
|
175
|
-
value: "initial"
|
|
176
|
-
}),
|
|
177
170
|
listeners: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, _utils.defaultDescriptor), {}, {
|
|
178
171
|
enumerable: false,
|
|
179
172
|
value: {}
|
|
@@ -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;
|
package/dist/server/static.js
CHANGED
|
@@ -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
|
|
25
|
-
var 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:
|
|
132
|
+
parsedPath: parsedSanitizePath
|
|
39
133
|
};
|
|
40
|
-
|
|
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);
|