Skip to content

Commit

Permalink
fix(HttpResponse): stream and compress fix
Browse files Browse the repository at this point in the history
  • Loading branch information
dalisoft committed Apr 5, 2020
1 parent d63efaf commit a0a3c07
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 9 deletions.
2 changes: 1 addition & 1 deletion package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
3 changes: 3 additions & 0 deletions src/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -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');
Expand Down
6 changes: 4 additions & 2 deletions src/polyfills/http-response/response-chunks/pipe.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import compressStream from '../stream/compress-stream.js';
import { __request } from '../../../constants.js';

export default function (stream, size, compressed = false) {
Expand All @@ -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;
Expand Down
5 changes: 3 additions & 2 deletions src/polyfills/http-response/stream/compress-stream.js
Original file line number Diff line number Diff line change
@@ -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(
Expand All @@ -29,7 +30,7 @@ export default function (stream) {
if (compression) {
stream.pipe(compression);

headers['Content-Encoding'] = encoding;
responseHeaders['Content-Encoding'] = encoding;
}

return compression;
Expand Down
10 changes: 7 additions & 3 deletions src/polyfills/http-response/stream/send-file.js
Original file line number Diff line number Diff line change
@@ -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;
Expand Down Expand Up @@ -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 })
Expand Down

0 comments on commit a0a3c07

Please sign in to comment.