summaryrefslogtreecommitdiff
path: root/node_modules/mimic-response/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/mimic-response/index.js')
-rw-r--r--node_modules/mimic-response/index.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/node_modules/mimic-response/index.js b/node_modules/mimic-response/index.js
new file mode 100644
index 0000000..edd0faf
--- /dev/null
+++ b/node_modules/mimic-response/index.js
@@ -0,0 +1,38 @@
+'use strict';
+
+// We define these manually to ensure they're always copied
+// even if they would move up the prototype chain
+// https://nodejs.org/api/http.html#http_class_http_incomingmessage
+const knownProperties = [
+ 'aborted',
+ 'complete',
+ 'destroy',
+ 'headers',
+ 'httpVersion',
+ 'httpVersionMinor',
+ 'httpVersionMajor',
+ 'method',
+ 'rawHeaders',
+ 'rawTrailers',
+ 'setTimeout',
+ 'socket',
+ 'statusCode',
+ 'statusMessage',
+ 'trailers',
+ 'url'
+];
+
+module.exports = (fromStream, toStream) => {
+ const fromProperties = new Set(Object.keys(fromStream).concat(knownProperties));
+
+ for (const property of fromProperties) {
+ // Don't overwrite existing properties.
+ if (property in toStream) {
+ continue;
+ }
+
+ toStream[property] = typeof fromStream[property] === 'function' ? fromStream[property].bind(fromStream) : fromStream[property];
+ }
+
+ return toStream;
+};