wapplr 1.0.78 → 1.0.80
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/app.js +44 -57
- package/dist/client/createClient.js +47 -57
- package/dist/client/middlewares.js +32 -40
- package/dist/common/contents.js +29 -38
- package/dist/common/middlewares.js +3 -3
- package/dist/common/requests.js +30 -35
- package/dist/common/router.js +33 -45
- package/dist/common/states.js +18 -7
- package/dist/server/app.js +44 -57
- package/dist/server/createServer.js +47 -57
- package/dist/server/middlewares.js +3 -3
- package/dist/server/static.js +286 -124
- package/package.json +1 -1
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports["default"] = createServer;
|
|
8
|
-
var
|
|
8
|
+
var _regenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/regenerator"));
|
|
9
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
10
|
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
|
|
11
11
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
@@ -369,71 +369,64 @@ function createServer() {
|
|
|
369
369
|
"static": app["static"](wapplrServer.config.publicPath)
|
|
370
370
|
}, _rest);
|
|
371
371
|
}
|
|
372
|
-
app.use(
|
|
373
|
-
var _defaultMiddlewaresWrapper = (0, _asyncToGenerator2["default"])(
|
|
374
|
-
var
|
|
375
|
-
return (0,
|
|
376
|
-
while (1) switch (_context3.
|
|
372
|
+
app.use(/*#__PURE__*/function () {
|
|
373
|
+
var _defaultMiddlewaresWrapper = (0, _asyncToGenerator2["default"])(/*#__PURE__*/(0, _regenerator2["default"])().m(function _callee3(req, res, out) {
|
|
374
|
+
var _next, middlewares, index;
|
|
375
|
+
return (0, _regenerator2["default"])().w(function (_context3) {
|
|
376
|
+
while (1) switch (_context3.n) {
|
|
377
377
|
case 0:
|
|
378
378
|
if (wapplrServer.config.disableUseDefaultMiddlewares) {
|
|
379
|
-
_context3.
|
|
379
|
+
_context3.n = 2;
|
|
380
380
|
break;
|
|
381
381
|
}
|
|
382
|
-
|
|
383
|
-
var _ref2 = (0, _asyncToGenerator2["default"])(
|
|
384
|
-
var func, defaultArgs, args;
|
|
385
|
-
return (0,
|
|
386
|
-
while (1) switch (_context2.
|
|
382
|
+
_next = /*#__PURE__*/function () {
|
|
383
|
+
var _ref2 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/(0, _regenerator2["default"])().m(function _callee2(err) {
|
|
384
|
+
var func, defaultArgs, args, _t;
|
|
385
|
+
return (0, _regenerator2["default"])().w(function (_context2) {
|
|
386
|
+
while (1) switch (_context2.p = _context2.n) {
|
|
387
387
|
case 0:
|
|
388
388
|
if (!middlewares[index]) {
|
|
389
|
-
_context2.
|
|
389
|
+
_context2.n = 5;
|
|
390
390
|
break;
|
|
391
391
|
}
|
|
392
392
|
func = middlewares[index];
|
|
393
393
|
index = index + 1;
|
|
394
|
-
defaultArgs = [req, res, err ? /*#__PURE__*/(0, _asyncToGenerator2["default"])(
|
|
395
|
-
return (0,
|
|
396
|
-
while (1) switch (_context.
|
|
394
|
+
defaultArgs = [req, res, err ? /*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/(0, _regenerator2["default"])().m(function _callee() {
|
|
395
|
+
return (0, _regenerator2["default"])().w(function (_context) {
|
|
396
|
+
while (1) switch (_context.n) {
|
|
397
397
|
case 0:
|
|
398
|
-
_context.
|
|
399
|
-
return
|
|
400
|
-
case
|
|
401
|
-
|
|
402
|
-
return _context.stop();
|
|
398
|
+
_context.n = 1;
|
|
399
|
+
return _next(err);
|
|
400
|
+
case 1:
|
|
401
|
+
return _context.a(2);
|
|
403
402
|
}
|
|
404
403
|
}, _callee);
|
|
405
|
-
})) :
|
|
404
|
+
})) : _next];
|
|
406
405
|
args = func.length === 4 && err ? [err].concat(defaultArgs) : defaultArgs;
|
|
407
|
-
_context2.
|
|
408
|
-
_context2.
|
|
406
|
+
_context2.p = 1;
|
|
407
|
+
_context2.n = 2;
|
|
409
408
|
return func.apply(void 0, (0, _toConsumableArray2["default"])(args));
|
|
410
|
-
case
|
|
411
|
-
return _context2.
|
|
412
|
-
case
|
|
413
|
-
_context2.
|
|
414
|
-
|
|
415
|
-
res.wappResponse.status(500,
|
|
416
|
-
_context2.
|
|
417
|
-
return
|
|
418
|
-
case
|
|
419
|
-
return _context2.
|
|
420
|
-
case
|
|
421
|
-
_context2.next = 22;
|
|
422
|
-
break;
|
|
423
|
-
case 19:
|
|
409
|
+
case 2:
|
|
410
|
+
return _context2.a(2, _context2.v);
|
|
411
|
+
case 3:
|
|
412
|
+
_context2.p = 3;
|
|
413
|
+
_t = _context2.v;
|
|
414
|
+
res.wappResponse.status(500, _t);
|
|
415
|
+
_context2.n = 4;
|
|
416
|
+
return _next(_t);
|
|
417
|
+
case 4:
|
|
418
|
+
return _context2.a(2, _context2.v);
|
|
419
|
+
case 5:
|
|
424
420
|
if (!(typeof out === "function")) {
|
|
425
|
-
_context2.
|
|
421
|
+
_context2.n = 6;
|
|
426
422
|
break;
|
|
427
423
|
}
|
|
428
424
|
index = 0;
|
|
429
|
-
return _context2.
|
|
430
|
-
case
|
|
431
|
-
return _context2.
|
|
432
|
-
case 23:
|
|
433
|
-
case "end":
|
|
434
|
-
return _context2.stop();
|
|
425
|
+
return _context2.a(2, out(err));
|
|
426
|
+
case 6:
|
|
427
|
+
return _context2.a(2, null);
|
|
435
428
|
}
|
|
436
|
-
}, _callee2, null, [[
|
|
429
|
+
}, _callee2, null, [[1, 3]]);
|
|
437
430
|
}));
|
|
438
431
|
return function next(_x4) {
|
|
439
432
|
return _ref2.apply(this, arguments);
|
|
@@ -443,18 +436,15 @@ function createServer() {
|
|
|
443
436
|
return wapplrServer.middlewares[key];
|
|
444
437
|
});
|
|
445
438
|
index = 0;
|
|
446
|
-
_context3.
|
|
447
|
-
return
|
|
448
|
-
case
|
|
449
|
-
return _context3.
|
|
450
|
-
case
|
|
451
|
-
_context3.
|
|
439
|
+
_context3.n = 1;
|
|
440
|
+
return _next();
|
|
441
|
+
case 1:
|
|
442
|
+
return _context3.a(2, _context3.v);
|
|
443
|
+
case 2:
|
|
444
|
+
_context3.n = 3;
|
|
452
445
|
return out();
|
|
453
|
-
case
|
|
454
|
-
return _context3.
|
|
455
|
-
case 10:
|
|
456
|
-
case "end":
|
|
457
|
-
return _context3.stop();
|
|
446
|
+
case 3:
|
|
447
|
+
return _context3.a(2, _context3.v);
|
|
458
448
|
}
|
|
459
449
|
}, _callee3);
|
|
460
450
|
}));
|
|
@@ -251,7 +251,7 @@ function createMiddlewares(p) {
|
|
|
251
251
|
return t;
|
|
252
252
|
}).join('; '));
|
|
253
253
|
}
|
|
254
|
-
if (!res.getHeader("Content-Length") && !dontSetContentLength) {
|
|
254
|
+
if (!res.getHeader("Content-Length") && !dontSetContentLength && _html) {
|
|
255
255
|
res.setHeader("Content-Length", Buffer.byteLength(_html));
|
|
256
256
|
}
|
|
257
257
|
if (!res.getHeader("Last-Modified") && mtime) {
|
|
@@ -275,8 +275,8 @@ function createMiddlewares(p) {
|
|
|
275
275
|
var mtime = stats.mtime,
|
|
276
276
|
size = stats.size;
|
|
277
277
|
if (!res.getHeader("ETag") && mtime && size) {
|
|
278
|
-
var
|
|
279
|
-
res.setHeader("ETag",
|
|
278
|
+
var _etag = "W/\"".concat(size.toString(16), "-").concat(mtime.getTime().toString(16), "\"");
|
|
279
|
+
res.setHeader("ETag", _etag);
|
|
280
280
|
}
|
|
281
281
|
}
|
|
282
282
|
return next();
|
package/dist/server/static.js
CHANGED
|
@@ -7,166 +7,328 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.addCloseEventsForReadableStream = addCloseEventsForReadableStream;
|
|
8
8
|
exports["default"] = serveStatic;
|
|
9
9
|
exports.endStream = endStream;
|
|
10
|
-
var
|
|
10
|
+
var _regenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/regenerator"));
|
|
11
11
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
12
|
-
var
|
|
13
|
-
var
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
var _nodeFs = require("node:fs");
|
|
13
|
+
var _nodePath = _interopRequireDefault(require("node:path"));
|
|
14
|
+
function endStream(req, res, stream) {
|
|
15
|
+
if (!stream) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
if (stream.__destroyed) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
stream.__destroyed = true;
|
|
22
|
+
var cleanup = stream.__cleanup;
|
|
23
|
+
if (cleanup) {
|
|
24
|
+
try {
|
|
25
|
+
var _req$off, _req$off2, _res$off, _stream$off, _stream$off2;
|
|
26
|
+
req === null || req === void 0 ? void 0 : (_req$off = req.off) === null || _req$off === void 0 ? void 0 : _req$off.call(req, "aborted", cleanup);
|
|
27
|
+
req === null || req === void 0 ? void 0 : (_req$off2 = req.off) === null || _req$off2 === void 0 ? void 0 : _req$off2.call(req, "close", cleanup);
|
|
28
|
+
res === null || res === void 0 ? void 0 : (_res$off = res.off) === null || _res$off === void 0 ? void 0 : _res$off.call(res, "close", cleanup);
|
|
29
|
+
stream === null || stream === void 0 ? void 0 : (_stream$off = stream.off) === null || _stream$off === void 0 ? void 0 : _stream$off.call(stream, "error", cleanup);
|
|
30
|
+
stream === null || stream === void 0 ? void 0 : (_stream$off2 = stream.off) === null || _stream$off2 === void 0 ? void 0 : _stream$off2.call(stream, "close", cleanup);
|
|
31
|
+
} catch (_unused) {}
|
|
32
|
+
stream.__cleanup = null;
|
|
33
|
+
}
|
|
34
|
+
try {
|
|
35
|
+
var _stream$destroy;
|
|
36
|
+
(_stream$destroy = stream.destroy) === null || _stream$destroy === void 0 ? void 0 : _stream$destroy.call(stream);
|
|
37
|
+
} catch (_unused2) {}
|
|
38
|
+
try {
|
|
19
39
|
if (typeof stream.close === "function") {
|
|
20
|
-
|
|
40
|
+
var _stream$once;
|
|
41
|
+
(_stream$once = stream.once) === null || _stream$once === void 0 ? void 0 : _stream$once.call(stream, "open", function onOpenClose() {
|
|
21
42
|
if (typeof this.fd === "number") {
|
|
22
43
|
this.close();
|
|
23
44
|
}
|
|
24
45
|
});
|
|
25
46
|
}
|
|
26
|
-
}
|
|
27
|
-
return stream;
|
|
47
|
+
} catch (_unused3) {}
|
|
28
48
|
}
|
|
29
|
-
function
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return Boolean(res.finished || res.writableEnded || socket && !socket.writable);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
function isFinishedRequest() {
|
|
37
|
-
var socket = req.socket;
|
|
38
|
-
if (typeof req.complete === "boolean") {
|
|
39
|
-
return Boolean(req.upgrade || !socket || !socket.readable || req.complete && !req.readable);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
function removeListener() {
|
|
43
|
-
if (req.__onFinishedInterval) {
|
|
44
|
-
clearInterval(req.__onFinishedInterval);
|
|
45
|
-
req.__onFinishedInterval = 0;
|
|
46
|
-
}
|
|
47
|
-
if (res.__onFinishedInterval) {
|
|
48
|
-
clearInterval(res.__onFinishedInterval);
|
|
49
|
-
res.__onFinishedInterval = 0;
|
|
50
|
-
}
|
|
49
|
+
function addCloseEventsForReadableStream(req, res, stream) {
|
|
50
|
+
var _req$on, _req$on2, _res$on, _stream$on, _stream$on2;
|
|
51
|
+
if (!req || !res || !stream) {
|
|
52
|
+
return;
|
|
51
53
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
if (
|
|
55
|
-
|
|
56
|
-
callback();
|
|
54
|
+
var finished = false;
|
|
55
|
+
var cleanup = function cleanup(err) {
|
|
56
|
+
if (finished) {
|
|
57
|
+
return;
|
|
57
58
|
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
finished = true;
|
|
60
|
+
try {
|
|
61
|
+
var _stream$destroy2;
|
|
62
|
+
(_stream$destroy2 = stream.destroy) === null || _stream$destroy2 === void 0 ? void 0 : _stream$destroy2.call(stream, err);
|
|
63
|
+
} catch (_unused4) {}
|
|
64
|
+
};
|
|
65
|
+
stream.__cleanup = cleanup;
|
|
66
|
+
(_req$on = req.on) === null || _req$on === void 0 ? void 0 : _req$on.call(req, "aborted", cleanup);
|
|
67
|
+
(_req$on2 = req.on) === null || _req$on2 === void 0 ? void 0 : _req$on2.call(req, "close", cleanup);
|
|
68
|
+
(_res$on = res.on) === null || _res$on === void 0 ? void 0 : _res$on.call(res, "close", cleanup);
|
|
69
|
+
(_stream$on = stream.on) === null || _stream$on === void 0 ? void 0 : _stream$on.call(stream, "error", cleanup);
|
|
70
|
+
(_stream$on2 = stream.on) === null || _stream$on2 === void 0 ? void 0 : _stream$on2.call(stream, "close", cleanup);
|
|
61
71
|
}
|
|
62
|
-
function
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
72
|
+
function safeJoin(root, reqPathname) {
|
|
73
|
+
var decoded;
|
|
74
|
+
try {
|
|
75
|
+
decoded = decodeURIComponent(reqPathname || "/");
|
|
76
|
+
} catch (_unused5) {
|
|
77
|
+
return null;
|
|
66
78
|
}
|
|
67
|
-
if (
|
|
68
|
-
|
|
69
|
-
res.__onFinishedRemoveListener = null;
|
|
79
|
+
if (decoded.includes("\0")) {
|
|
80
|
+
return null;
|
|
70
81
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
endStream(req, res, stream);
|
|
79
|
-
});
|
|
80
|
-
onFinished(req, res, function () {
|
|
81
|
-
endStream(req, res, stream);
|
|
82
|
-
});
|
|
83
|
-
stream.on("close", function onclose() {
|
|
84
|
-
endStream(req, res, stream);
|
|
85
|
-
});
|
|
82
|
+
var absRoot = _nodePath["default"].resolve(root);
|
|
83
|
+
var absPath = _nodePath["default"].resolve(absRoot, "." + decoded);
|
|
84
|
+
var rel = _nodePath["default"].relative(absRoot, absPath);
|
|
85
|
+
if (rel.startsWith("..") || _nodePath["default"].isAbsolute(rel)) {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
return absPath;
|
|
86
89
|
}
|
|
87
90
|
function serveStatic(publicPath) {
|
|
91
|
+
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
92
|
+
var root = _nodePath["default"].resolve(publicPath);
|
|
93
|
+
var _opts$allowDotfiles = opts.allowDotfiles,
|
|
94
|
+
allowDotfiles = _opts$allowDotfiles === void 0 ? false : _opts$allowDotfiles;
|
|
88
95
|
return /*#__PURE__*/function () {
|
|
89
|
-
var _staticMiddleware = (0, _asyncToGenerator2["default"])(
|
|
90
|
-
var
|
|
91
|
-
|
|
92
|
-
|
|
96
|
+
var _staticMiddleware = (0, _asyncToGenerator2["default"])(/*#__PURE__*/(0, _regenerator2["default"])().m(function _callee(req, res, next) {
|
|
97
|
+
var _req$headers, _res$setHeader3, _res$setHeader4;
|
|
98
|
+
var method, urlObj, joined, parsed, stats, size, start, end, statusCode, range, m, hasStart, hasEnd, suffixLength, _res$setHeader, contentLength, _res$setHeader2, runSend, stream, _t, _t2, _t3;
|
|
99
|
+
return (0, _regenerator2["default"])().w(function (_context) {
|
|
100
|
+
while (1) switch (_context.p = _context.n) {
|
|
93
101
|
case 0:
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
102
|
+
method = (req.wappRequest.method || req.method || "GET").toUpperCase();
|
|
103
|
+
if (!(method !== "GET" && method !== "HEAD")) {
|
|
104
|
+
_context.n = 2;
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
_context.n = 1;
|
|
108
|
+
return next();
|
|
109
|
+
case 1:
|
|
110
|
+
return _context.a(2, _context.v);
|
|
111
|
+
case 2:
|
|
112
|
+
_context.p = 2;
|
|
113
|
+
urlObj = new URL(req.wappRequest.url || req.url, "http://localhost");
|
|
114
|
+
_context.n = 5;
|
|
115
|
+
break;
|
|
116
|
+
case 3:
|
|
117
|
+
_context.p = 3;
|
|
118
|
+
_t = _context.v;
|
|
119
|
+
_context.n = 4;
|
|
120
|
+
return next();
|
|
121
|
+
case 4:
|
|
122
|
+
return _context.a(2, _context.v);
|
|
123
|
+
case 5:
|
|
124
|
+
joined = safeJoin(root, urlObj.pathname);
|
|
125
|
+
if (joined) {
|
|
126
|
+
_context.n = 7;
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
_context.n = 6;
|
|
130
|
+
return next();
|
|
131
|
+
case 6:
|
|
132
|
+
return _context.a(2, _context.v);
|
|
133
|
+
case 7:
|
|
134
|
+
parsed = _nodePath["default"].parse(joined);
|
|
135
|
+
if (parsed.ext) {
|
|
136
|
+
_context.n = 9;
|
|
106
137
|
break;
|
|
107
138
|
}
|
|
108
|
-
_context.
|
|
139
|
+
_context.n = 8;
|
|
109
140
|
return next();
|
|
141
|
+
case 8:
|
|
142
|
+
return _context.a(2, _context.v);
|
|
110
143
|
case 9:
|
|
111
|
-
|
|
144
|
+
if (!(!allowDotfiles && parsed.base.startsWith("."))) {
|
|
145
|
+
_context.n = 11;
|
|
146
|
+
break;
|
|
147
|
+
}
|
|
148
|
+
_context.n = 10;
|
|
149
|
+
return next();
|
|
112
150
|
case 10:
|
|
113
|
-
_context.
|
|
114
|
-
|
|
115
|
-
|
|
151
|
+
return _context.a(2, _context.v);
|
|
152
|
+
case 11:
|
|
153
|
+
_context.p = 11;
|
|
154
|
+
_context.n = 12;
|
|
155
|
+
return _nodeFs.promises.stat(joined);
|
|
156
|
+
case 12:
|
|
157
|
+
stats = _context.v;
|
|
158
|
+
if (stats.isFile()) {
|
|
159
|
+
_context.n = 14;
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
_context.n = 13;
|
|
163
|
+
return next();
|
|
116
164
|
case 13:
|
|
117
|
-
_context.
|
|
165
|
+
return _context.a(2, _context.v);
|
|
166
|
+
case 14:
|
|
167
|
+
_context.n = 19;
|
|
118
168
|
break;
|
|
119
169
|
case 15:
|
|
120
|
-
_context.
|
|
121
|
-
|
|
122
|
-
|
|
170
|
+
_context.p = 15;
|
|
171
|
+
_t2 = _context.v;
|
|
172
|
+
if (!((_t2 === null || _t2 === void 0 ? void 0 : _t2.code) === "ENOENT")) {
|
|
173
|
+
_context.n = 17;
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
_context.n = 16;
|
|
123
177
|
return next();
|
|
178
|
+
case 16:
|
|
179
|
+
return _context.a(2, _context.v);
|
|
180
|
+
case 17:
|
|
181
|
+
res.wappResponse.status(500, _t2);
|
|
182
|
+
res.wapp.log(_t2, req, res);
|
|
183
|
+
_context.n = 18;
|
|
184
|
+
return next(_t2);
|
|
185
|
+
case 18:
|
|
186
|
+
return _context.a(2, _context.v);
|
|
124
187
|
case 19:
|
|
125
|
-
|
|
188
|
+
size = stats.size;
|
|
189
|
+
start = 0;
|
|
190
|
+
end = size > 0 ? size - 1 : 0;
|
|
191
|
+
statusCode = 200;
|
|
192
|
+
range = (_req$headers = req.headers) === null || _req$headers === void 0 ? void 0 : _req$headers.range;
|
|
193
|
+
if (!(range && /^bytes=/.test(range))) {
|
|
194
|
+
_context.n = 21;
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
m = /bytes=(\d*)-(\d*)/.exec(range);
|
|
198
|
+
if (!m) {
|
|
199
|
+
_context.n = 21;
|
|
200
|
+
break;
|
|
201
|
+
}
|
|
202
|
+
hasStart = m[1] !== "";
|
|
203
|
+
hasEnd = m[2] !== "";
|
|
204
|
+
if (hasStart) {
|
|
205
|
+
start = parseInt(m[1], 10);
|
|
206
|
+
}
|
|
207
|
+
if (hasEnd) {
|
|
208
|
+
end = parseInt(m[2], 10);
|
|
209
|
+
}
|
|
210
|
+
if (!hasStart && hasEnd) {
|
|
211
|
+
suffixLength = end;
|
|
212
|
+
if (Number.isFinite(suffixLength)) {
|
|
213
|
+
if (suffixLength > size) {
|
|
214
|
+
start = 0;
|
|
215
|
+
} else {
|
|
216
|
+
start = size - suffixLength;
|
|
217
|
+
}
|
|
218
|
+
end = size > 0 ? size - 1 : 0;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
if (hasStart && !hasEnd) {
|
|
222
|
+
end = size > 0 ? size - 1 : 0;
|
|
223
|
+
}
|
|
224
|
+
if (!(Number.isNaN(start) || Number.isNaN(end) || start > end || start < 0 || end >= size)) {
|
|
225
|
+
_context.n = 20;
|
|
226
|
+
break;
|
|
227
|
+
}
|
|
228
|
+
(_res$setHeader = res.setHeader) === null || _res$setHeader === void 0 ? void 0 : _res$setHeader.call(res, "Content-Range", "bytes */".concat(size));
|
|
229
|
+
res.wappResponse.status(416);
|
|
230
|
+
res.wappResponse.sendData = {
|
|
231
|
+
stats: stats,
|
|
232
|
+
parsedPath: parsed,
|
|
233
|
+
dontSetContentLength: true
|
|
234
|
+
};
|
|
235
|
+
return _context.a(2, res.wapp.middleware.runSendMiddlewares(req, res, function () {
|
|
236
|
+
res.end();
|
|
237
|
+
}));
|
|
126
238
|
case 20:
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
data = _context.sent;
|
|
132
|
-
_context.next = 26;
|
|
133
|
-
return fs.stat(pathname);
|
|
134
|
-
case 26:
|
|
135
|
-
stats = _context.sent;
|
|
136
|
-
res.wappResponse.status(200);
|
|
239
|
+
statusCode = 206;
|
|
240
|
+
case 21:
|
|
241
|
+
contentLength = statusCode === 206 ? end - start + 1 : size;
|
|
242
|
+
res.wappResponse.status(statusCode);
|
|
137
243
|
res.wappResponse.sendData = {
|
|
138
|
-
data: data,
|
|
139
244
|
stats: stats,
|
|
140
|
-
parsedPath:
|
|
245
|
+
parsedPath: parsed,
|
|
246
|
+
dontSetContentLength: true
|
|
141
247
|
};
|
|
142
|
-
|
|
248
|
+
if (statusCode === 206) {
|
|
249
|
+
(_res$setHeader2 = res.setHeader) === null || _res$setHeader2 === void 0 ? void 0 : _res$setHeader2.call(res, "Content-Range", "bytes ".concat(start, "-").concat(end, "/").concat(size));
|
|
250
|
+
}
|
|
251
|
+
(_res$setHeader3 = res.setHeader) === null || _res$setHeader3 === void 0 ? void 0 : _res$setHeader3.call(res, "Accept-Ranges", "bytes");
|
|
252
|
+
(_res$setHeader4 = res.setHeader) === null || _res$setHeader4 === void 0 ? void 0 : _res$setHeader4.call(res, "Content-Length", String(contentLength));
|
|
253
|
+
runSend = function runSend() {
|
|
254
|
+
return new Promise(function (resolve) {
|
|
255
|
+
var _res$wapp, _res$wapp$middleware;
|
|
256
|
+
if ((_res$wapp = res.wapp) !== null && _res$wapp !== void 0 && (_res$wapp$middleware = _res$wapp.middleware) !== null && _res$wapp$middleware !== void 0 && _res$wapp$middleware.runSendMiddlewares) {
|
|
257
|
+
res.wapp.middleware.runSendMiddlewares(req, res, function () {
|
|
258
|
+
return resolve();
|
|
259
|
+
});
|
|
260
|
+
} else {
|
|
261
|
+
resolve();
|
|
262
|
+
}
|
|
263
|
+
});
|
|
264
|
+
};
|
|
265
|
+
_context.p = 22;
|
|
266
|
+
_context.n = 23;
|
|
267
|
+
return runSend();
|
|
268
|
+
case 23:
|
|
269
|
+
if (!res.writableEnded) {
|
|
270
|
+
_context.n = 24;
|
|
271
|
+
break;
|
|
272
|
+
}
|
|
273
|
+
return _context.a(2);
|
|
274
|
+
case 24:
|
|
275
|
+
if (!(method === "HEAD")) {
|
|
276
|
+
_context.n = 25;
|
|
277
|
+
break;
|
|
278
|
+
}
|
|
279
|
+
res.end();
|
|
280
|
+
return _context.a(2);
|
|
281
|
+
case 25:
|
|
282
|
+
stream = statusCode === 206 ? (0, _nodeFs.createReadStream)(joined, {
|
|
283
|
+
start: start,
|
|
284
|
+
end: end
|
|
285
|
+
}) : (0, _nodeFs.createReadStream)(joined);
|
|
143
286
|
addCloseEventsForReadableStream(req, res, stream);
|
|
144
|
-
stream.on("error", function
|
|
287
|
+
stream.on("error", function (err) {
|
|
288
|
+
var _res$wapp2, _res$wapp2$log;
|
|
145
289
|
endStream(req, res, stream);
|
|
146
|
-
res.
|
|
147
|
-
res.
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
}
|
|
290
|
+
(_res$wapp2 = res.wapp) === null || _res$wapp2 === void 0 ? void 0 : (_res$wapp2$log = _res$wapp2.log) === null || _res$wapp2$log === void 0 ? void 0 : _res$wapp2$log.call(_res$wapp2, err, req, res);
|
|
291
|
+
if (!res.headersSent) {
|
|
292
|
+
res.wappResponse.status(err.statusCode || 500, err);
|
|
293
|
+
}
|
|
294
|
+
if (!res.writableEnded) {
|
|
295
|
+
try {
|
|
296
|
+
res.end();
|
|
297
|
+
} catch (_unused7) {}
|
|
298
|
+
}
|
|
299
|
+
if (typeof next === "function") {
|
|
300
|
+
next(err);
|
|
301
|
+
}
|
|
155
302
|
});
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
_context.t1 = _context["catch"](20);
|
|
303
|
+
if (!res.writableEnded) {
|
|
304
|
+
_context.n = 26;
|
|
305
|
+
break;
|
|
306
|
+
}
|
|
161
307
|
endStream(req, res, stream);
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
308
|
+
return _context.a(2);
|
|
309
|
+
case 26:
|
|
310
|
+
res.wapp.log(req, res);
|
|
311
|
+
stream.pipe(res);
|
|
312
|
+
_context.n = 28;
|
|
313
|
+
break;
|
|
314
|
+
case 27:
|
|
315
|
+
_context.p = 27;
|
|
316
|
+
_t3 = _context.v;
|
|
317
|
+
res.wapp.log(_t3, req, res);
|
|
318
|
+
if (!res.writableEnded) {
|
|
319
|
+
res.wappResponse.status(_t3.statusCode || 500, _t3);
|
|
320
|
+
res.end();
|
|
321
|
+
}
|
|
322
|
+
if (!(typeof next === "function")) {
|
|
323
|
+
_context.n = 28;
|
|
324
|
+
break;
|
|
325
|
+
}
|
|
326
|
+
_context.n = 28;
|
|
327
|
+
return next(_t3);
|
|
328
|
+
case 28:
|
|
329
|
+
return _context.a(2);
|
|
168
330
|
}
|
|
169
|
-
}, _callee, null, [[
|
|
331
|
+
}, _callee, null, [[22, 27], [11, 15], [2, 3]]);
|
|
170
332
|
}));
|
|
171
333
|
function staticMiddleware(_x, _x2, _x3) {
|
|
172
334
|
return _staticMiddleware.apply(this, arguments);
|