https://project.mdnd-it.cc/work_packages/94
This commit is contained in:
2025-08-23 04:25:28 +02:00
parent 725516ad6c
commit 19cfa031d0
25823 changed files with 1095587 additions and 2801760 deletions
+10 -58
View File
@@ -17,20 +17,12 @@ var escapeHtml = require('escape-html')
var onFinished = require('on-finished')
var parseUrl = require('parseurl')
var statuses = require('statuses')
var unpipe = require('unpipe')
/**
* Module variables.
* @private
*/
var DOUBLE_SPACE_REGEXP = /\x20{2}/g
var NEWLINE_REGEXP = /\n/g
/* istanbul ignore next */
var defer = typeof setImmediate === 'function'
? setImmediate
: function (fn) { process.nextTick(fn.bind.apply(fn, arguments)) }
var isFinished = onFinished.isFinished
/**
@@ -42,8 +34,8 @@ var isFinished = onFinished.isFinished
function createHtmlDocument (message) {
var body = escapeHtml(message)
.replace(NEWLINE_REGEXP, '<br>')
.replace(DOUBLE_SPACE_REGEXP, ' &nbsp;')
.replaceAll('\n', '<br>')
.replaceAll(' ', ' &nbsp;')
return '<!DOCTYPE html>\n' +
'<html lang="en">\n' +
@@ -89,7 +81,7 @@ function finalhandler (req, res, options) {
var status
// ignore 404 on in-flight response
if (!err && headersSent(res)) {
if (!err && res.headersSent) {
debug('cannot 404 after headers sent')
return
}
@@ -119,11 +111,11 @@ function finalhandler (req, res, options) {
// schedule onerror callback
if (err && onerror) {
defer(onerror, err, req, res)
setImmediate(onerror, err, req, res)
}
// cannot actually respond
if (headersSent(res)) {
if (res.headersSent) {
debug('cannot %d after headers sent', status)
if (req.socket) {
req.socket.destroy()
@@ -149,15 +141,7 @@ function getErrorHeaders (err) {
return undefined
}
var headers = Object.create(null)
var keys = Object.keys(err.headers)
for (var i = 0; i < keys.length; i++) {
var key = keys[i]
headers[key] = err.headers[key]
}
return headers
return { ...err.headers }
}
/**
@@ -246,20 +230,6 @@ function getResponseStatusCode (res) {
return status
}
/**
* Determine if the response headers have been sent.
*
* @param {object} res
* @returns {boolean}
* @private
*/
function headersSent (res) {
return typeof res.headersSent !== 'boolean'
? Boolean(res._header)
: res.headersSent
}
/**
* Send response.
*
@@ -289,7 +259,9 @@ function send (req, res, status, headers, message) {
res.removeHeader('Content-Range')
// response headers
setHeaders(res, headers)
for (const [key, value] of Object.entries(headers ?? {})) {
res.setHeader(key, value)
}
// security headers
res.setHeader('Content-Security-Policy', "default-src 'none'")
@@ -313,29 +285,9 @@ function send (req, res, status, headers, message) {
}
// unpipe everything from the request
unpipe(req)
req.unpipe()
// flush the request
onFinished(req, write)
req.resume()
}
/**
* Set response headers from an object.
*
* @param {OutgoingMessage} res
* @param {object} headers
* @private
*/
function setHeaders (res, headers) {
if (!headers) {
return
}
var keys = Object.keys(headers)
for (var i = 0; i < keys.length; i++) {
var key = keys[i]
res.setHeader(key, headers[key])
}
}