UNPKG

kasha

Version:

Pre-render your Single-Page Application.

51 lines (41 loc) 1.08 kB
const http = require('http') const https = require('https') const hopByHopHeaders = [ 'connection', 'keep-alive', 'proxy-authenticate', 'proxy-authorization', 'te', 'trailer', 'transfer-encoding', 'upgrade' ] module.exports = function(url, { method, headers, body } = {}) { return new Promise((resolve, reject) => { url = new URL(url) url.searchParams.sort() const request = url.protocol === 'http:' ? http.request : https.request headers = { ...headers } delete headers.host delete headers['if-match'] delete headers['if-none-match'] delete headers['if-modified-since'] delete headers['if-unmodified-since'] const req = request(url, { method, headers }, res => { const headers = {} for (const k in res.headers) { if (!hopByHopHeaders.includes(k)) { headers[k] = res.headers[k] } } res.headers = headers resolve(res) }) req.on('error', e => reject(e)) if (body && body.pipe) { body.pipe(req) } else { req.end(body) } }) }