MCPcopy
hub / github.com/vercel/next.js / compression

Function compression

packages/next/src/compiled/compression/index.js:22–22  ·  view source on GitHub ↗
(a)

Source from the content-addressed store, hash-verified

20 * Copyright(c) 2014-2015 Douglas Christopher Wilson
21 * MIT Licensed
22 */var n=i(909);var s=i(291).Buffer;var o=i(666);var c=i(876);var p=i(937)("compression");var t=i(849);var r=i(850);var l=i(796);a.exports=compression;a.exports.filter=shouldCompress;var u=/(?:^|,)\s*?no-transform\s*?(?:,|$)/;function compression(a){var e=a||{};var i=e.filter||shouldCompress;var s=o.parse(e.threshold);if(s==null){s=1024}return function compression(a,o,c){var u=false;var m;var d=[];var x;var v=o.end;var f=o.on;var b=o.write;o.flush=function flush(){if(x){x.flush()}};o.write=function write(a,e){if(u){return false}if(!this._header){this._implicitHeader()}return x?x.write(toBuffer(a,e)):b.call(this,a,e)};o.end=function end(a,e){if(u){return false}if(!this._header){if(!this.getHeader("Content-Length")){m=chunkLength(a,e)}this._implicitHeader()}if(!x){return v.call(this,a,e)}u=true;return a?x.end(toBuffer(a,e)):x.end()};o.on=function on(a,e){if(!d||a!=="drain"){return f.call(this,a,e)}if(x){return x.on(a,e)}d.push([a,e]);return this};function nocompress(a){p("no compression: %s",a);addListeners(o,f,d);d=null}t(o,(function onResponseHeaders(){if(!i(a,o)){nocompress("filtered");return}if(!shouldTransform(a,o)){nocompress("no transform");return}r(o,"Accept-Encoding");if(Number(o.getHeader("Content-Length"))<s||m<s){nocompress("size below threshold");return}var c=o.getHeader("Content-Encoding")||"identity";if(c!=="identity"){nocompress("already encoded");return}if(a.method==="HEAD"){nocompress("HEAD request");return}var t=n(a);var u=t.encoding(["gzip","deflate","identity"]);if(u==="deflate"&&t.encoding(["gzip"])){u=t.encoding(["gzip","identity"])}if(!u||u==="identity"){nocompress("not acceptable");return}p("%s compression",u);x=u==="gzip"?l.createGzip(e):l.createDeflate(e);addListeners(x,x.on,d);o.setHeader("Content-Encoding",u);o.removeHeader("Content-Length");x.on("data",(function onStreamData(a){if(b.call(o,a)===false){x.pause()}}));x.on("end",(function onStreamEnd(){v.call(o)}));f.call(o,"drain",(function onResponseDrain(){x.resume()}))}));c()}}function addListeners(a,e,i){for(var n=0;n<i.length;n++){e.apply(a,i[n])}}function chunkLength(a,e){if(!a){return 0}return!s.isBuffer(a)?s.byteLength(a,e):a.length}function shouldCompress(a,e){var i=e.getHeader("Content-Type");if(i===undefined||!c(i)){p("%s not compressible",i);return false}return true}function shouldTransform(a,e){var i=e.getHeader("Cache-Control");return!i||!u.test(i)}function toBuffer(a,e){return!s.isBuffer(a)?s.from(a,e):a}},183:(a,e,i)=>{
23/*!
24 * mime-db
25 * Copyright(c) 2014 Jonathan Ong

Callers

nothing calls this directly

Calls 15

chunkLengthFunction · 0.85
nocompressFunction · 0.85
_implicitHeaderMethod · 0.80
callMethod · 0.80
encodingMethod · 0.80
toBufferFunction · 0.70
shouldTransformFunction · 0.70
addListenersFunction · 0.70
endMethod · 0.65
pushMethod · 0.65
tFunction · 0.50
iFunction · 0.50

Tested by

no test coverage detected