diff --git a/package-lock.json b/package-lock.json index 66718432..87847854 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "@nanoexpress/pro-slim", - "version": "2.0.1", + "version": "2.0.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index f3a31d12..106268ac 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@nanoexpress/pro-slim", - "version": "2.0.1", + "version": "2.0.2", "description": "Slim version of nanoexpress Pro for really PRO simple users", "type": "module", "main": "src/nanoexpress.js", diff --git a/src/constants.js b/src/constants.js index 46ab5aae..27333ee9 100644 --- a/src/constants.js +++ b/src/constants.js @@ -6,6 +6,9 @@ export const HttpResponseKeys = Object.keys(HttpResponse); export const __request = Symbol('HttpRequestInstance'); export const __response = Symbol('HttpResponseInstance'); +// HttpRequest symbols +export const reqHeaderResponse = Symbol('HttpRequestResponseHeaders'); + // HttpResponse symbols export const resHeaders = Symbol('HttpResponseHeaders'); export const resConfig = Symbol('HttpResponseConfig'); diff --git a/src/polyfills/http-response/response-chunks/pipe.js b/src/polyfills/http-response/response-chunks/pipe.js index 568ca6cb..5db51a24 100644 --- a/src/polyfills/http-response/response-chunks/pipe.js +++ b/src/polyfills/http-response/response-chunks/pipe.js @@ -1,4 +1,3 @@ -import compressStream from '../stream/compress-stream.js'; import { __request } from '../../../constants.js'; export default function (stream, size, compressed = false) { @@ -8,7 +7,10 @@ export default function (stream, size, compressed = false) { this.stream = true; if (compressed) { - const compressedStream = compressStream(stream, responseHeaders || headers); + const compressedStream = this.compressStream( + stream, + responseHeaders || headers + ); if (compressedStream) { stream = compressedStream; diff --git a/src/polyfills/http-response/stream/compress-stream.js b/src/polyfills/http-response/stream/compress-stream.js index 7889ce95..bdfc6ccf 100644 --- a/src/polyfills/http-response/stream/compress-stream.js +++ b/src/polyfills/http-response/stream/compress-stream.js @@ -1,11 +1,12 @@ import { createBrotliCompress, createGzip, createDeflate } from 'zlib'; -import { __request } from '../../../constants.js'; +import { __request, reqHeaderResponse } from '../../../constants.js'; const priority = ['gzip', 'br', 'deflate']; export default function (stream) { const req = this[__request]; const { headers } = req; + const responseHeaders = req[reqHeaderResponse]; if (!headers) { throw new Error( @@ -29,7 +30,7 @@ export default function (stream) { if (compression) { stream.pipe(compression); - headers['Content-Encoding'] = encoding; + responseHeaders['Content-Encoding'] = encoding; } return compression; diff --git a/src/polyfills/http-response/stream/send-file.js b/src/polyfills/http-response/stream/send-file.js index 9a5ebcab..3b2d1d8e 100644 --- a/src/polyfills/http-response/stream/send-file.js +++ b/src/polyfills/http-response/stream/send-file.js @@ -1,12 +1,16 @@ import { getMime } from '../../../helpers/mime.js'; -import { __request } from '../../../constants.js'; +import { + __request, + resHeaders, + reqHeaderResponse +} from '../../../constants.js'; import { statSync, createReadStream } from 'fs'; export default function (path, lastModified = true, compressed = false) { const res = this; const req = res[__request]; const { headers } = req; - const responseHeaders = {}; + const responseHeaders = res[resHeaders] || {}; const stat = statSync(path); let { size } = stat; @@ -57,7 +61,7 @@ export default function (path, lastModified = true, compressed = false) { end = 0; } - req.responseHeaders = responseHeaders; + req[reqHeaderResponse] = responseHeaders; const createStreamInstance = end ? createReadStream(path, { start, end })