{"_id":"@remix-run/response","_rev":"15-ab24b05f86ef2c464ed1d885961b34b2","name":"@remix-run/response","dist-tags":{"latest":"0.3.9"},"versions":{"0.0.0":{"name":"@remix-run/response","version":"0.0.0","keywords":["fetch","response","http","html","file","redirect"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/response@0.0.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"},{"name":"ryanflorence","email":"rpflorence@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/response#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"d3c9cd81e2891efb7db1ada52ea1bac0a557bf5f","tarball":"https://registry.npmjs.org/@remix-run/response/-/response-0.0.0.tgz","fileCount":27,"integrity":"sha512-xu1veFR1kksPASNxWxv5sGY3t1fjpOsY8IhveSeUPIqWh26GNB4W35ytpHzKtPBUVC+n+fRotSUpqMVJtSA49g==","signatures":[{"sig":"MEQCIA7bNTsYPsm6y0R6RFW0D8Akqwxm6MpeeBinuYZQtKinAiAb22aF65mctEkTCZHpQ5ngpTtYXaezZjpXg2HgX3o76g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39319},"type":"module","_from":"file:remix-run-response-0.0.0.tgz","exports":{"./file":{"types":"./dist/file.d.ts","default":"./dist/file.js"},"./html":{"types":"./dist/html.d.ts","default":"./dist/html.js"},"./redirect":{"types":"./dist/redirect.d.ts","default":"./dist/redirect.js"},"./package.json":"./package.json"},"scripts":{"test":"node --disable-warning=ExperimentalWarning --test './src/**/*.test.ts'","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","typecheck":"tsc --noEmit"},"_npmUser":{"name":"mjackson","email":"mjijackson+npm@gmail.com"},"_resolved":"/private/var/folders/n5/1lxhnzk56hg6b7vnl558364m0000gn/T/e8e75ac0a8021fe063b46366475d8a58/remix-run-response-0.0.0.tgz","_integrity":"sha512-xu1veFR1kksPASNxWxv5sGY3t1fjpOsY8IhveSeUPIqWh26GNB4W35ytpHzKtPBUVC+n+fRotSUpqMVJtSA49g==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/response"},"_npmVersion":"11.3.0","description":"Response helpers for the web Fetch API","directories":{},"_nodeVersion":"24.2.0","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^24.6.0"},"peerDependencies":{"@remix-run/headers":"^0.17.1","@remix-run/html-template":"^0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/response_0.0.0_1764029266930_0.39077761177469106","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@remix-run/response","version":"0.1.0","keywords":["fetch","response","http","html","file","redirect"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/response@0.1.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"},{"name":"ryanflorence","email":"rpflorence@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/response#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"934780c78b6b263142090878d8eade83b02b8ed3","tarball":"https://registry.npmjs.org/@remix-run/response/-/response-0.1.0.tgz","fileCount":27,"integrity":"sha512-XpKllO3b79UygPhsDZhUoUIgGqenu6CO1dcDFgnahFlIUN1TwHk0Xc7Q/uiP8o1zMZaDmpkPn/XBG7TD5T7F/w==","signatures":[{"sig":"MEQCICy/kyd+UJp7elTyvYYvh5uVF1VgvEbau8fVnjLkqjcSAiAxqVkfOmXuIz7UyDFUh8DsXRhIdD6FV9KsF2MUwmVckg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fresponse@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":39319},"type":"module","_from":"file:remix-run-response-0.1.0.tgz","exports":{"./file":{"types":"./dist/file.d.ts","default":"./dist/file.js"},"./html":{"types":"./dist/html.d.ts","default":"./dist/html.js"},"./redirect":{"types":"./dist/redirect.d.ts","default":"./dist/redirect.js"},"./package.json":"./package.json"},"scripts":{"test":"node --disable-warning=ExperimentalWarning --test './src/**/*.test.ts'","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cec9975e-5aeb-4cb0-b4c2-f0a48b77fc8b"}},"_resolved":"/tmp/1d0c7cc6a19449945982797b1522179e/remix-run-response-0.1.0.tgz","_integrity":"sha512-XpKllO3b79UygPhsDZhUoUIgGqenu6CO1dcDFgnahFlIUN1TwHk0Xc7Q/uiP8o1zMZaDmpkPn/XBG7TD5T7F/w==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/response"},"_npmVersion":"11.6.2","description":"Response helpers for the web Fetch API","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^24.6.0"},"peerDependencies":{"@remix-run/headers":"^0.17.1","@remix-run/html-template":"^0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/response_0.1.0_1764029535019_0.5432872599592278","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@remix-run/response","version":"0.2.0","keywords":["fetch","response","http","html","file","redirect"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/response@0.2.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"},{"name":"ryanflorence","email":"rpflorence@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/response#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"f7c038c40423060a683e02b5dc15c3f395d1b676","tarball":"https://registry.npmjs.org/@remix-run/response/-/response-0.2.0.tgz","fileCount":35,"integrity":"sha512-oo5LA6On7OO2uJxjjYOsvEHvc5MnBdQavZoiuT2a9HiwKRNpc8Y3D85oqHjtJJBNtgg+Ug1JN3H0RILezpAYTg==","signatures":[{"sig":"MEUCIQDy7G1pHBljqcPPdKQVnZ81SePvNbZQ/0Aw9m0q7bsdEgIgPvOSKIFfnCA1Ry3gbI/h5BOLValwBSgb7k01mj+YTK0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fresponse@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":65566},"type":"module","_from":"file:remix-run-response-0.2.0.tgz","exports":{"./file":{"types":"./dist/file.d.ts","default":"./dist/file.js"},"./html":{"types":"./dist/html.d.ts","default":"./dist/html.js"},"./compress":{"types":"./dist/compress.d.ts","default":"./dist/compress.js"},"./redirect":{"types":"./dist/redirect.d.ts","default":"./dist/redirect.js"},"./package.json":"./package.json"},"scripts":{"test":"node --disable-warning=ExperimentalWarning --test './src/**/*.test.ts'","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cec9975e-5aeb-4cb0-b4c2-f0a48b77fc8b"}},"_resolved":"/tmp/8cacfbb19fef401f69978bd5c79e9b01/remix-run-response-0.2.0.tgz","_integrity":"sha512-oo5LA6On7OO2uJxjjYOsvEHvc5MnBdQavZoiuT2a9HiwKRNpc8Y3D85oqHjtJJBNtgg+Ug1JN3H0RILezpAYTg==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/response"},"_npmVersion":"11.6.2","description":"Response helpers for the web Fetch API","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.3","@types/node":"^24.6.0","@remix-run/mime":"0.1.0"},"peerDependencies":{"@remix-run/mime":"^0.1.0","@remix-run/headers":"^0.18.0","@remix-run/html-template":"^0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/response_0.2.0_1764111742405_0.3149281755795481","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@remix-run/response","version":"0.2.1","keywords":["fetch","response","http","html","file","redirect"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/response@0.2.1","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"},{"name":"ryanflorence","email":"rpflorence@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/response#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"b2db1ddc26237e1ac2f3929424fde62aba46c85c","tarball":"https://registry.npmjs.org/@remix-run/response/-/response-0.2.1.tgz","fileCount":35,"integrity":"sha512-qdcjwxr9LC5qYsf+blLcVgHg4t96zNmYhtdWl1u5gk0cC6rOn2wEJ2AfdR3SEJIk0lnjChaPCxABb0l+0KkDmQ==","signatures":[{"sig":"MEUCIDk3xoaTPk5yuV7RCZ0ZZZVSp+xKgVSJf+LPnAJqB0TlAiEAq/sSBsxfZ1vjj9WSNLdSHJsaHbQ6ESC4z7sTHVQd7qo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fresponse@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":65677},"type":"module","_from":"file:remix-run-response-0.2.1.tgz","exports":{"./file":{"types":"./dist/file.d.ts","default":"./dist/file.js"},"./html":{"types":"./dist/html.d.ts","default":"./dist/html.js"},"./compress":{"types":"./dist/compress.d.ts","default":"./dist/compress.js"},"./redirect":{"types":"./dist/redirect.d.ts","default":"./dist/redirect.js"},"./package.json":"./package.json"},"scripts":{"test":"node --disable-warning=ExperimentalWarning --test","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","typecheck":"tsgo --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cec9975e-5aeb-4cb0-b4c2-f0a48b77fc8b"}},"_resolved":"/tmp/da084689e8cfc5f44a9bda0babf06f2a/remix-run-response-0.2.1.tgz","_integrity":"sha512-qdcjwxr9LC5qYsf+blLcVgHg4t96zNmYhtdWl1u5gk0cC6rOn2wEJ2AfdR3SEJIk0lnjChaPCxABb0l+0KkDmQ==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/response"},"_npmVersion":"11.6.2","description":"Response helpers for the web Fetch API","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/mime":"0.2.0","@typescript/native-preview":"7.0.0-dev.20251125.1"},"peerDependencies":{"@remix-run/mime":"^0.2.0","@remix-run/headers":"^0.18.0","@remix-run/html-template":"^0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/response_0.2.1_1766081262252_0.6301662425739119","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@remix-run/response","version":"0.3.0","keywords":["fetch","response","http","html","file","redirect"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/response@0.3.0","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"},{"name":"ryanflorence","email":"rpflorence@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/response#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"f03461fad3634a2be33c5249336ee04bc9659f25","tarball":"https://registry.npmjs.org/@remix-run/response/-/response-0.3.0.tgz","fileCount":35,"integrity":"sha512-At7IkyKJKHMGW64ygeC5qJqtAbMqMYoC9FAJ3Z0Gdq7mcJdWybUuPCZF1db2J9JGp2Q5kuVQK6HOpBKkLF2pYw==","signatures":[{"sig":"MEUCIQCkWqemowzzfwLNAcl1UCiI0A9n/dRRTlQr+PMljbh4QwIge8OPJmP1M59AHCluHAt9zsBEQC9km+uAIMlVFGk9yOQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fresponse@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":72785},"type":"module","_from":"file:remix-run-response-0.3.0.tgz","exports":{"./file":{"types":"./dist/file.d.ts","default":"./dist/file.js"},"./html":{"types":"./dist/html.d.ts","default":"./dist/html.js"},"./compress":{"types":"./dist/compress.d.ts","default":"./dist/compress.js"},"./redirect":{"types":"./dist/redirect.d.ts","default":"./dist/redirect.js"},"./package.json":"./package.json"},"scripts":{"test":"node --disable-warning=ExperimentalWarning --test","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","typecheck":"tsgo --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cec9975e-5aeb-4cb0-b4c2-f0a48b77fc8b"}},"_resolved":"/tmp/d6663f09c00571997e071003777c35a4/remix-run-response-0.3.0.tgz","_integrity":"sha512-At7IkyKJKHMGW64ygeC5qJqtAbMqMYoC9FAJ3Z0Gdq7mcJdWybUuPCZF1db2J9JGp2Q5kuVQK6HOpBKkLF2pYw==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/response"},"_npmVersion":"11.6.2","description":"Response helpers for the web Fetch API","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/mime":"0.3.0","@remix-run/lazy-file":"5.0.0","@typescript/native-preview":"7.0.0-dev.20251125.1"},"peerDependencies":{"@remix-run/mime":"^0.3.0","@remix-run/headers":"^0.19.0","@remix-run/html-template":"^0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/response_0.3.0_1768948111145_0.020309154147089226","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@remix-run/response","version":"0.3.1","keywords":["fetch","response","http","html","file","redirect"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/response@0.3.1","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"},{"name":"ryanflorence","email":"rpflorence@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/response#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"f571e00ef9436205ce3de1f788d1055c6ddd110c","tarball":"https://registry.npmjs.org/@remix-run/response/-/response-0.3.1.tgz","fileCount":35,"integrity":"sha512-qNKHznfcmLPe393CF40wHAzB08I5AID0ma6C5T31dgJQrOdCMAPR8ME4CEWYbwuASxulLBnimIVy0lI85i+MeQ==","signatures":[{"sig":"MEUCIQCrWgu2VlPkZZ5rN3zI2EUbIraAAZEmRDSezDKt1trMkAIgSkg8gjSyfCUr4oajb+AKxln5vJ5PlYcvJaFcCKHyrtk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fresponse@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":72781},"type":"module","_from":"file:remix-run-response-0.3.1.tgz","exports":{"./file":{"types":"./dist/file.d.ts","default":"./dist/file.js"},"./html":{"types":"./dist/html.d.ts","default":"./dist/html.js"},"./compress":{"types":"./dist/compress.d.ts","default":"./dist/compress.js"},"./redirect":{"types":"./dist/redirect.d.ts","default":"./dist/redirect.js"},"./package.json":"./package.json"},"scripts":{"test":"node --disable-warning=ExperimentalWarning --test","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","typecheck":"tsgo --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cec9975e-5aeb-4cb0-b4c2-f0a48b77fc8b"}},"_resolved":"/tmp/de04d631b389820dc4e1fbb2d75872f3/remix-run-response-0.3.1.tgz","_integrity":"sha512-qNKHznfcmLPe393CF40wHAzB08I5AID0ma6C5T31dgJQrOdCMAPR8ME4CEWYbwuASxulLBnimIVy0lI85i+MeQ==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/response"},"_npmVersion":"11.6.2","description":"Response helpers for the web Fetch API","directories":{},"_nodeVersion":"24.13.0","dependencies":{"@remix-run/mime":"^0.3.0","@remix-run/headers":"^0.19.0","@remix-run/html-template":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/mime":"0.3.0","@remix-run/lazy-file":"5.0.1","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/response_0.3.1_1769471911386_0.6498963295121485","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"@remix-run/response","version":"0.3.2","keywords":["fetch","response","http","html","file","redirect"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/response@0.3.2","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/response#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"f4c6649f66a2be797b94035a347a52d1b9a4649a","tarball":"https://registry.npmjs.org/@remix-run/response/-/response-0.3.2.tgz","fileCount":35,"integrity":"sha512-GkFqVq5E7Do6rMKTBjgoNyJlrsLrqYg+TDlCDrXoZ3v8O2RlSI14+bCF8lGQHy15DWX2pizVj6R0e6NmjcuLuA==","signatures":[{"sig":"MEYCIQD+51QylJgQx2GqMo5tJr06snw0phDZE4BIqGLCxdwxOgIhANZkpsZgj+1MOfUEPxOf6JsehFZmmPeVgBASStAPaQnF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fresponse@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":72557},"type":"module","_from":"file:remix-run-response-0.3.2.tgz","exports":{"./file":{"types":"./dist/file.d.ts","default":"./dist/file.js"},"./html":{"types":"./dist/html.d.ts","default":"./dist/html.js"},"./compress":{"types":"./dist/compress.d.ts","default":"./dist/compress.js"},"./redirect":{"types":"./dist/redirect.d.ts","default":"./dist/redirect.js"},"./package.json":"./package.json"},"scripts":{"test":"node --disable-warning=ExperimentalWarning --test","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","typecheck":"tsgo --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cec9975e-5aeb-4cb0-b4c2-f0a48b77fc8b"}},"_resolved":"/tmp/c7aecd71124bfbe89bd1fa5355ce9498/remix-run-response-0.3.2.tgz","_integrity":"sha512-GkFqVq5E7Do6rMKTBjgoNyJlrsLrqYg+TDlCDrXoZ3v8O2RlSI14+bCF8lGQHy15DWX2pizVj6R0e6NmjcuLuA==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/response"},"_npmVersion":"11.10.1","description":"Response helpers for the web Fetch API","directories":{},"_nodeVersion":"25.7.0","dependencies":{"@remix-run/mime":"^0.4.0","@remix-run/headers":"^0.19.0","@remix-run/html-template":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/mime":"0.4.0","@remix-run/lazy-file":"5.0.2","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/response_0.3.2_1772241726988_0.884256551828642","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"@remix-run/response","version":"0.3.3","keywords":["fetch","response","http","html","file","redirect"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/response@0.3.3","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/response#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"cb8750b0926592bb6bcc207ec41245ed7444bb70","tarball":"https://registry.npmjs.org/@remix-run/response/-/response-0.3.3.tgz","fileCount":35,"integrity":"sha512-hgqYDk557dYjLJ0W5Oa6cj5jtNc/5HpAV+jCYlW8+PvoO0gkQzwOJihaFbePCuGW7jhOAFeD4L+SlvV1TxvWpQ==","signatures":[{"sig":"MEUCIQCgAHnWM9xnfSH4lKN/H7GeHOzn4qzZrGaX3ffUM+MnPwIgYxbdmnN8AObKBHQl7kmfJzOFSF5G7gVJAQm1vz2gELc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fresponse@0.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":73082},"type":"module","_from":"file:remix-run-response-0.3.3.tgz","exports":{"./file":{"types":"./dist/file.d.ts","default":"./dist/file.js"},"./html":{"types":"./dist/html.d.ts","default":"./dist/html.js"},"./compress":{"types":"./dist/compress.d.ts","default":"./dist/compress.js"},"./redirect":{"types":"./dist/redirect.d.ts","default":"./dist/redirect.js"},"./package.json":"./package.json"},"scripts":{"test":"remix-test","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix-test","typecheck":"tsgo --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cec9975e-5aeb-4cb0-b4c2-f0a48b77fc8b"}},"_resolved":"/tmp/769ae15bdc6454aa40f2b1c456d09101/remix-run-response-0.3.3.tgz","_integrity":"sha512-hgqYDk557dYjLJ0W5Oa6cj5jtNc/5HpAV+jCYlW8+PvoO0gkQzwOJihaFbePCuGW7jhOAFeD4L+SlvV1TxvWpQ==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/response"},"_npmVersion":"11.11.0","description":"Response helpers for the web Fetch API","directories":{},"_nodeVersion":"24.14.1","dependencies":{"@remix-run/mime":"^0.4.1","@remix-run/headers":"^0.19.0","@remix-run/html-template":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/mime":"0.4.1","@remix-run/test":"0.2.0","@remix-run/assert":"0.1.0","@remix-run/lazy-file":"5.0.3","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/response_0.3.3_1777483809157_0.07348822436962066","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"@remix-run/response","version":"0.3.4","keywords":["fetch","response","http","html","file","redirect"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/response@0.3.4","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/response#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"b752877894d588fd79e040271b77d0a0e449c78d","tarball":"https://registry.npmjs.org/@remix-run/response/-/response-0.3.4.tgz","fileCount":35,"integrity":"sha512-WZZQ6qFD78D6v0sP8sQVSPJPm2br0Mjs6eAFbiglLFNKpyZiwEbsw7rYS4V4NL6hTbj5jZ20kNZygWFSBRRVvQ==","signatures":[{"sig":"MEYCIQClEA+fGtaTX+BIDHSHnE6Hg2djq1mhBYU9A+0VBSBQ9QIhALfnz5Ng/gegjrp/pg2zRy/ikvGi1WULzINj4cjC/lnu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fresponse@0.3.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":73041},"type":"module","_from":"file:remix-run-response-0.3.4.tgz","exports":{"./file":{"types":"./dist/file.d.ts","default":"./dist/file.js"},"./html":{"types":"./dist/html.d.ts","default":"./dist/html.js"},"./compress":{"types":"./dist/compress.d.ts","default":"./dist/compress.js"},"./redirect":{"types":"./dist/redirect.d.ts","default":"./dist/redirect.js"},"./package.json":"./package.json"},"scripts":{"test":"remix-test","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix-test","typecheck":"tsgo --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cec9975e-5aeb-4cb0-b4c2-f0a48b77fc8b"}},"_resolved":"/tmp/ce8c228f0dd4fef439547ecef786271b/remix-run-response-0.3.4.tgz","_integrity":"sha512-WZZQ6qFD78D6v0sP8sQVSPJPm2br0Mjs6eAFbiglLFNKpyZiwEbsw7rYS4V4NL6hTbj5jZ20kNZygWFSBRRVvQ==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/response"},"_npmVersion":"11.12.1","description":"Response helpers for the web Fetch API","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@remix-run/mime":"^0.4.1","@remix-run/headers":"^0.20.0","@remix-run/html-template":"^0.3.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/mime":"0.4.1","@remix-run/test":"0.4.0","@remix-run/assert":"0.2.0","@remix-run/lazy-file":"5.0.3","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/response_0.3.4_1779247323741_0.5928794522871457","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"@remix-run/response","version":"0.3.5","keywords":["fetch","response","http","html","file","redirect"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/response@0.3.5","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/response#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"5f9b3aec2e6bc29f7a52fe9f1ca3fdcbf03b216a","tarball":"https://registry.npmjs.org/@remix-run/response/-/response-0.3.5.tgz","fileCount":35,"integrity":"sha512-oGttVnDgL8rNWA9ShGizYyAjJJiz+d1lcgtYeXiw9QiU9lGIliJ8b1KgPilMGKjALyf+SyePnb5SSG1DRYt9eg==","signatures":[{"sig":"MEUCIDy0bAbTLXTo9DKuxTEWtEjD6MeCoLjKwz4LM+8pTi6xAiEAlTNRTBqIMiCUMsdOOmAF+FbYhXHtsVu+0CsYgxKVUEc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fresponse@0.3.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":73041},"type":"module","_from":"file:remix-run-response-0.3.5.tgz","exports":{"./file":{"types":"./dist/file.d.ts","default":"./dist/file.js"},"./html":{"types":"./dist/html.d.ts","default":"./dist/html.js"},"./compress":{"types":"./dist/compress.d.ts","default":"./dist/compress.js"},"./redirect":{"types":"./dist/redirect.d.ts","default":"./dist/redirect.js"},"./package.json":"./package.json"},"scripts":{"test":"remix-test","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix-test","typecheck":"tsgo --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cec9975e-5aeb-4cb0-b4c2-f0a48b77fc8b"}},"_resolved":"/tmp/a09cd483d5bfb336fa33a694d56fdd6d/remix-run-response-0.3.5.tgz","_integrity":"sha512-oGttVnDgL8rNWA9ShGizYyAjJJiz+d1lcgtYeXiw9QiU9lGIliJ8b1KgPilMGKjALyf+SyePnb5SSG1DRYt9eg==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/response"},"_npmVersion":"11.12.1","description":"Response helpers for the web Fetch API","directories":{},"_nodeVersion":"24.15.0","dependencies":{"@remix-run/mime":"^0.4.1","@remix-run/headers":"^0.21.0","@remix-run/html-template":"^0.3.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/mime":"0.4.1","@remix-run/test":"0.4.1","@remix-run/assert":"0.2.1","@remix-run/lazy-file":"5.0.4","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/response_0.3.5_1779308296884_0.021560018319793706","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"@remix-run/response","version":"0.3.6","keywords":["fetch","response","http","html","file","redirect"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/response@0.3.6","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/response#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"67acc5da3ed5982e64dd534b7b0777d28371554f","tarball":"https://registry.npmjs.org/@remix-run/response/-/response-0.3.6.tgz","fileCount":35,"integrity":"sha512-WgbAXEGesrfVz449Lv1AUruT2r2t79XxkcG/cdzDZWXB/2UKcKFsVSM/tFvfmIuAtwdvhQrrnaFpnC04OfYSNA==","signatures":[{"sig":"MEYCIQCnEW1gXDhC1tPn91W8fBR+OyFuqKjxq0yb53sLdL8gGAIhAPpPsJsVOg852o1lhey5YsVLcjO3M1tOEGn8Th7E+EtZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fresponse@0.3.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":73991},"type":"module","_from":"file:remix-run-response-0.3.6.tgz","exports":{"./file":{"types":"./dist/file.d.ts","default":"./dist/file.js"},"./html":{"types":"./dist/html.d.ts","default":"./dist/html.js"},"./compress":{"types":"./dist/compress.d.ts","default":"./dist/compress.js"},"./redirect":{"types":"./dist/redirect.d.ts","default":"./dist/redirect.js"},"./package.json":"./package.json"},"scripts":{"test":"remix-test","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix-test","typecheck":"tsgo --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cec9975e-5aeb-4cb0-b4c2-f0a48b77fc8b"}},"_resolved":"/tmp/4f0ad3493a94550d271ed184e8a17190/remix-run-response-0.3.6.tgz","_integrity":"sha512-WgbAXEGesrfVz449Lv1AUruT2r2t79XxkcG/cdzDZWXB/2UKcKFsVSM/tFvfmIuAtwdvhQrrnaFpnC04OfYSNA==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/response"},"_npmVersion":"11.13.0","description":"Response helpers for the web Fetch API","directories":{},"_nodeVersion":"24.16.0","dependencies":{"@remix-run/mime":"^0.4.1","@remix-run/headers":"^0.21.1","@remix-run/html-template":"^0.3.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/mime":"0.4.1","@remix-run/test":"0.4.2","@remix-run/assert":"0.2.1","@remix-run/lazy-file":"5.0.5","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/response_0.3.6_1780078647245_0.6605167555453295","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"@remix-run/response","version":"0.3.7","keywords":["fetch","response","http","html","file","redirect"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/response@0.3.7","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/response#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"956f9e20543743d6f749ea6490eb4a0f61340ad9","tarball":"https://registry.npmjs.org/@remix-run/response/-/response-0.3.7.tgz","fileCount":35,"integrity":"sha512-f3VWP4NNxgBt+oJfRbgqLYaMXonMdeHhbzAyLfqMzZAwe/ukUwwGoTtER2xlRPDxFlr9Tqa3NFC8PrSmp+rfmA==","signatures":[{"sig":"MEQCIERq679sQjLLubBQyShD2NSlMF8Wz0cnpYd4cP4s+YkNAiBop9RCtqis2rGu3OCmbiwXXLDfVf13xGRcBZIV0S+1fQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fresponse@0.3.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":73991},"type":"module","_from":"file:remix-run-response-0.3.7.tgz","exports":{"./file":{"types":"./dist/file.d.ts","default":"./dist/file.js"},"./html":{"types":"./dist/html.d.ts","default":"./dist/html.js"},"./compress":{"types":"./dist/compress.d.ts","default":"./dist/compress.js"},"./redirect":{"types":"./dist/redirect.d.ts","default":"./dist/redirect.js"},"./package.json":"./package.json"},"scripts":{"test":"remix-test","build":"tsgo -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix-test","typecheck":"tsgo --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cec9975e-5aeb-4cb0-b4c2-f0a48b77fc8b"}},"_resolved":"/tmp/09daef82ef9d10988af7528197c055b4/remix-run-response-0.3.7.tgz","_integrity":"sha512-f3VWP4NNxgBt+oJfRbgqLYaMXonMdeHhbzAyLfqMzZAwe/ukUwwGoTtER2xlRPDxFlr9Tqa3NFC8PrSmp+rfmA==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/response"},"_npmVersion":"11.13.0","description":"Response helpers for the web Fetch API","directories":{},"_nodeVersion":"24.17.0","dependencies":{"@remix-run/mime":"^0.4.2","@remix-run/headers":"^0.21.1","@remix-run/html-template":"^0.3.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^24.6.0","@remix-run/mime":"0.4.2","@remix-run/test":"0.5.0","@remix-run/assert":"0.3.0","@remix-run/lazy-file":"5.0.6","@typescript/native-preview":"7.0.0-dev.20251125.1"},"_npmOperationalInternal":{"tmp":"tmp/response_0.3.7_1782932570441_0.026349079069668324","host":"s3://npm-registry-packages-npm-production"}},"0.3.8":{"name":"@remix-run/response","version":"0.3.8","keywords":["fetch","response","http","html","file","redirect"],"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","_id":"@remix-run/response@0.3.8","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"homepage":"https://github.com/remix-run/remix/tree/main/packages/response#readme","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"2ec3bce95d82bd714dc91a81113a72d61631017d","tarball":"https://registry.npmjs.org/@remix-run/response/-/response-0.3.8.tgz","fileCount":35,"integrity":"sha512-ydrfv+ykKBRQg6DTHU0mSbxbOcWc3m1O7UVivO5Rgrp+K1u4Z3nqbhaMDkHbCPEFhuv1sKlQwS0Z5ClO/jGAiQ==","signatures":[{"sig":"MEUCIAi+LcsHW6mbweOja5nPfIH/XomnZBtPqZA9uN/LXDhiAiEA5I8LjP3uCeNqQkrD8PwquewyXgKNsumHkuInLR4QDEA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fresponse@0.3.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":75522},"type":"module","_from":"file:remix-run-response-0.3.8.tgz","exports":{"./file":{"types":"./dist/file.d.ts","default":"./dist/file.js"},"./html":{"types":"./dist/html.d.ts","default":"./dist/html.js"},"./compress":{"types":"./dist/compress.d.ts","default":"./dist/compress.js"},"./redirect":{"types":"./dist/redirect.d.ts","default":"./dist/redirect.js"},"./package.json":"./package.json"},"scripts":{"test":"remix test","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix test","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cec9975e-5aeb-4cb0-b4c2-f0a48b77fc8b"}},"_resolved":"/tmp/74202849cd02d9468c972886cb559ea2/remix-run-response-0.3.8.tgz","_integrity":"sha512-ydrfv+ykKBRQg6DTHU0mSbxbOcWc3m1O7UVivO5Rgrp+K1u4Z3nqbhaMDkHbCPEFhuv1sKlQwS0Z5ClO/jGAiQ==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/response"},"_npmVersion":"11.16.0","description":"Response helpers for the web Fetch API","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@remix-run/mime":"^0.4.2","@remix-run/headers":"^0.21.1","@remix-run/html-template":"^0.3.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@types/node":"^24.6.0","@remix-run/mime":"0.4.2","@remix-run/test":"0.6.0","@remix-run/assert":"0.3.0","@remix-run/lazy-file":"5.0.6"},"_npmOperationalInternal":{"tmp":"tmp/response_0.3.8_1786666439136_0.6392862713256513","host":"s3://npm-registry-packages-npm-production"}},"0.3.9":{"_id":"@remix-run/response@0.3.9","bugs":{"url":"https://github.com/remix-run/remix/issues"},"dist":{"shasum":"48c8a026c9a8471e1152b426dd1ce565af05e145","tarball":"https://registry.npmjs.org/@remix-run/response/-/response-0.3.9.tgz","fileCount":35,"integrity":"sha512-ioK66VAi6W7cDsWgy1q3MiiQvtUhTRlIuywGhhWvkAX2YdsiaxFgWshbvTar0O5XF/0SI0+LVioDbBaOdI9S1A==","signatures":[{"sig":"MEQCIEAhr6EaLP5a3DbvFGxe/LjtfCc8z+S1P/YaYA/SMVbUAiAclAv3Hk3YBvVuqzFyXXo1iwrzE810TiFuEPNIETgttQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEFLxFhML3ZgDYALIL+1sw9E3pqZs9JvfZ29MhzkuOhtAiAKBQcwh6wiVPBqZ3GDbBBwoqu43OhRBo0+nltO052oyQ=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@remix-run%2fresponse@0.3.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":77594},"name":"@remix-run/response","type":"module","_from":"file:/tmp/remix-publish-response-wteVN0/remix-run-response-0.3.9.tgz","author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"exports":{"./file":{"types":"./dist/file.d.ts","default":"./dist/file.js"},"./html":{"types":"./dist/html.d.ts","default":"./dist/html.js"},"./compress":{"types":"./dist/compress.d.ts","default":"./dist/compress.js"},"./redirect":{"types":"./dist/redirect.d.ts","default":"./dist/redirect.js"},"./package.json":"./package.json"},"license":"MIT","scripts":{"test":"remix test","build":"tsc -p tsconfig.build.json","clean":"git clean -fdX","test:bun":"bun x --bun remix test","typecheck":"tsc --noEmit"},"version":"0.3.9","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:cec9975e-5aeb-4cb0-b4c2-f0a48b77fc8b"}},"homepage":"https://github.com/remix-run/remix/tree/main/packages/response#readme","keywords":["fetch","response","http","html","file","redirect"],"_resolved":"/tmp/remix-publish-response-wteVN0/remix-run-response-0.3.9.tgz","_integrity":"sha512-ioK66VAi6W7cDsWgy1q3MiiQvtUhTRlIuywGhhWvkAX2YdsiaxFgWshbvTar0O5XF/0SI0+LVioDbBaOdI9S1A==","repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/response"},"_npmVersion":"11.19.0","description":"Response helpers for the web Fetch API","directories":{},"maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"_nodeVersion":"24.20.0","dependencies":{"@remix-run/mime":"^0.4.2","@remix-run/headers":"^0.21.2","@remix-run/html-template":"^0.3.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^7.0.2","@types/node":"^24.6.0","@remix-run/mime":"0.4.2","@remix-run/test":"0.6.1","@remix-run/assert":"0.3.0","@remix-run/lazy-file":"5.0.6"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/response_0.3.9_1789770848406_0.7244052754991674"}}},"time":{"created":"2025-11-25T00:07:46.840Z","modified":"2026-09-18T22:34:08.856Z","0.0.0":"2025-11-25T00:07:47.138Z","0.1.0":"2025-11-25T00:12:15.217Z","0.2.0":"2025-11-25T23:02:22.582Z","0.2.1":"2025-12-18T18:07:42.414Z","0.3.0":"2026-01-20T22:28:31.280Z","0.3.1":"2026-01-26T23:58:31.538Z","0.3.2":"2026-02-28T01:22:07.149Z","0.3.3":"2026-04-29T17:30:09.307Z","0.3.4":"2026-05-20T03:22:03.889Z","0.3.5":"2026-05-20T20:18:17.043Z","0.3.6":"2026-05-29T18:17:27.433Z","0.3.7":"2026-07-01T19:02:50.582Z","0.3.8":"2026-08-14T00:13:59.317Z","0.3.9":"2026-09-18T22:34:08.485Z"},"bugs":{"url":"https://github.com/remix-run/remix/issues"},"author":{"name":"Michael Jackson","email":"mjijackson@gmail.com"},"license":"MIT","homepage":"https://github.com/remix-run/remix/tree/main/packages/response#readme","keywords":["fetch","response","http","html","file","redirect"],"repository":{"url":"git+https://github.com/remix-run/remix.git","type":"git","directory":"packages/response"},"description":"Response helpers for the web Fetch API","maintainers":[{"name":"mjackson","email":"mjijackson+npm@gmail.com"}],"readme":"# response\n\nResponse helper utilities for the web Fetch API. `response` provides focused helpers for common HTTP responses with correct headers and caching semantics.\n\n## Features\n\n- **Web Standards Compliant:** Built on the standard `Response` API, works in any JavaScript runtime (Node.js, Bun, Deno, Cloudflare Workers)\n- [**File Responses:**](#file-responses) Full HTTP semantics including ETags, Last-Modified, conditional requests, and Range support\n- [**HTML Responses:**](#html-responses) Automatic DOCTYPE prepending and proper Content-Type headers\n- [**Redirect Responses:**](#redirect-responses) Simple redirect creation with customizable status codes\n- [**Compress Responses:**](#compress-responses) Streaming compression based on Accept-Encoding header\n\n## Installation\n\n```sh\nnpm i remix\n```\n\n## Usage\n\nThis package provides no default export. Instead, import the specific helper you need:\n\n```ts\nimport { createFileResponse } from 'remix/response/file'\nimport { createHtmlResponse } from 'remix/response/html'\nimport { createRedirectResponse } from 'remix/response/redirect'\nimport { compressResponse } from 'remix/response/compress'\n```\n\n### File Responses\n\nThe `createFileResponse` helper creates a response for serving files with full HTTP semantics. It works with both native `File` objects and `LazyFile` from `remix/lazy-file`:\n\n```ts\nimport { createFileResponse } from 'remix/response/file'\nimport { openLazyFile } from 'remix/fs'\n\nlet lazyFile = openLazyFile('./public/image.jpg')\nlet response = await createFileResponse(lazyFile, request, {\n  cacheControl: 'public, max-age=3600',\n})\n```\n\nFile responses use `file.type` for `Content-Type` and include `X-Content-Type-Options: nosniff`, including partial, conditional, and error responses. The helper preserves media types such as HTML, JavaScript, and SVG so it can serve application assets. `nosniff` does not stop a browser from rendering content declared as HTML or SVG.\n\nUploaded file names and types come from the submitted metadata. Validate the contents before serving uploads inline, or serve them as downloads:\n\n```ts\nlet response = await createFileResponse(uploadedFile, request)\nresponse.headers.set('Content-Disposition', 'attachment')\nreturn response\n```\n\n#### Features\n\n- **Content-Type** and **Content-Length** headers\n- **ETag** generation (weak or strong)\n- **Last-Modified** headers\n- **Cache-Control** headers\n- **Conditional requests** (`If-None-Match`, `If-Modified-Since`, `If-Match`, `If-Unmodified-Since`)\n- **Range requests** for partial content (`206 Partial Content`)\n- **HEAD** request support\n\n#### Options\n\n```ts\nawait createFileResponse(file, request, {\n  // Cache-Control header value.\n  // Defaults to `undefined` (no Cache-Control header).\n  cacheControl: 'public, max-age=3600',\n\n  // ETag generation strategy:\n  // - 'weak': Generates weak ETags based on file size and mtime (default)\n  // - 'strong': Generates strong ETags by hashing file content\n  // - false: Disables ETag generation\n  etag: 'weak',\n\n  // Hash algorithm for strong ETags (Web Crypto API algorithm names).\n  // Only used when etag: 'strong'.\n  // Defaults to 'SHA-256'.\n  digest: 'SHA-256',\n\n  // Whether to generate Last-Modified headers.\n  // Defaults to `true`.\n  lastModified: true,\n\n  // Whether to support HTTP Range requests for partial content.\n  // Defaults to `true`.\n  acceptRanges: true,\n})\n```\n\n#### Strong ETags and Content Hashing\n\nFor assets that require strong validation (e.g., to support [`If-Match`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Match) preconditions or [`If-Range`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Range) with [`Range` requests](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range)), configure strong ETag generation:\n\n```ts\nreturn createFileResponse(file, request, {\n  etag: 'strong',\n})\n```\n\nBy default, strong ETags are generated using the Web Crypto API with the `'SHA-256'` algorithm. You can customize this:\n\n```ts\nreturn createFileResponse(file, request, {\n  etag: 'strong',\n  // Specify a different hash algorithm\n  digest: 'SHA-512',\n})\n```\n\nFor large files or custom hashing requirements, provide a custom digest function:\n\n```ts\nawait createFileResponse(file, request, {\n  etag: 'strong',\n  async digest(file) {\n    // Custom streaming hash for large files\n    let { createHash } = await import('node:crypto')\n    let hash = createHash('sha256')\n    for await (let chunk of file.stream()) {\n      hash.update(chunk)\n    }\n    return hash.digest('hex')\n  },\n})\n```\n\n### HTML Responses\n\nThe `createHtmlResponse` helper creates HTML responses with proper `Content-Type` and DOCTYPE handling:\n\n```ts\nimport { createHtmlResponse } from 'remix/response/html'\n\nlet response = createHtmlResponse('<h1>Hello, World!</h1>')\n// Content-Type: text/html; charset=UTF-8\n// Body: <!DOCTYPE html><h1>Hello, World!</h1>\n```\n\nThe helper automatically prepends `<!DOCTYPE html>` if not already present. It works with strings, `SafeHtml` [from `remix/html-template`](https://github.com/remix-run/remix/tree/main/packages/html-template), Blobs/Files, ArrayBuffers, and ReadableStreams.\n\n```ts\nimport { html } from 'remix/html-template'\nimport { createHtmlResponse } from 'remix/response/html'\n\nlet name = '<script>alert(1)</script>'\nlet response = createHtmlResponse(html`<h1>Hello, ${name}!</h1>`)\n// Safely escaped HTML\n```\n\n### Redirect Responses\n\nThe `createRedirectResponse` helper creates redirect responses. The main improvements over the native `Response.redirect` API are:\n\n- Accepts a relative `location` instead of a full URL. This isn't technically spec-compliant, but it's so widespread that many applications use relative redirects regularly without issues.\n- Accepts a `ResponseInit` object as the second argument, allowing you to set additional headers and status code.\n\n```ts\nimport { createRedirectResponse } from 'remix/response/redirect'\n\n// Default 302 redirect\nlet response = createRedirectResponse('/login')\n\n// Custom status code\nlet response = createRedirectResponse('/new-page', 301)\n\n// With additional headers\nlet response = createRedirectResponse('/dashboard', {\n  status: 303,\n  headers: { 'X-Redirect-Reason': 'authentication' },\n})\n```\n\n### Compress Responses\n\nThe `compressResponse` helper negotiates a `Response` representation based on the client's `Accept-Encoding` header:\n\n```ts\nimport { compressResponse } from 'remix/response/compress'\n\nlet response = new Response(JSON.stringify(data), {\n  headers: { 'Content-Type': 'application/json' },\n})\nlet compressed = await compressResponse(response, request)\n```\n\nEligible responses include `Accept-Encoding` in `Vary`, including when the client explicitly requests `identity` or omits `Accept-Encoding`. This prevents a shared cache from reusing an identity response for a client that supports compression. Existing `Vary` values are preserved.\n\nCompression is automatically skipped for:\n\n- Requests with no `Accept-Encoding` header (the identity representation is used)\n- Responses that are already compressed (existing `Content-Encoding`)\n- Responses with `Cache-Control: no-transform`\n- Responses with `Content-Length` below threshold (default: 1024 bytes)\n- Responses with range support (`Accept-Ranges: bytes`)\n- 206 Partial Content responses\n- HEAD requests (only headers are modified)\n\n#### Options\n\nThe `compressResponse` helper accepts options to customize compression behavior:\n\n```ts\nawait compressResponse(response, request, {\n  // Minimum size in bytes to compress (only enforced if Content-Length is present).\n  // Default: 1024\n  threshold: 1024,\n\n  // Which encodings the server supports for negotiation.\n  // Defaults to ['br', 'gzip', 'deflate']\n  encodings: ['br', 'gzip', 'deflate'],\n\n  // node:zlib options for gzip/deflate compression.\n  // For HTML and SSE responses (text/html and text/event-stream),\n  // flush: Z_SYNC_FLUSH is applied unless you explicitly set a flush value.\n  // See: https://nodejs.org/api/zlib.html#class-options\n  zlib: {\n    level: 6,\n  },\n\n  // node:zlib options for Brotli compression.\n  // For HTML and SSE responses (text/html and text/event-stream),\n  // flush: BROTLI_OPERATION_FLUSH is applied unless you explicitly set a flush value.\n  // See: https://nodejs.org/api/zlib.html#class-brotlioptions\n  brotli: {\n    params: {\n      [zlib.constants.BROTLI_PARAM_QUALITY]: 4,\n    },\n  },\n})\n```\n\nThe HTML and SSE flush defaults keep each compressed response chunk available to clients without waiting for the stream to finish. Set `zlib.flush` or `brotli.flush` explicitly to override this behavior.\n\n#### Range Requests and Compression\n\nRange requests and compression are mutually exclusive. When `Accept-Ranges: bytes` is present in the response headers, `compressResponse` will not compress the response. This is why the `createFileResponse` helper enables ranges only for non-compressible MIME types by default - to allow text-based assets to be compressed while still supporting resumable downloads for media files.\n\n## Related Packages\n\n- [`remix/headers`](https://github.com/remix-run/remix/tree/main/packages/headers) - Type-safe HTTP header manipulation\n- [`remix/html-template`](https://github.com/remix-run/remix/tree/main/packages/html-template) - Safe HTML templating with automatic escaping\n- [`remix/fs`](https://github.com/remix-run/remix/tree/main/packages/fs) - File system utilities including `openFile`\n- [`remix/router`](https://github.com/remix-run/remix/tree/main/packages/fetch-router) - Build HTTP routers using the web fetch API\n- [`remix/mime`](https://github.com/remix-run/remix/tree/main/packages/mime) - MIME type utilities\n\n## License\n\nSee [LICENSE](https://github.com/remix-run/remix/blob/main/LICENSE)\n","readmeFilename":"README.md"}