Files
medusa-store/packages/medusa/src/utils/api/http-compression.ts

36 lines
1.1 KiB
TypeScript

import { HttpCompressionOptions, ProjectConfigOptions } from "@medusajs/types"
import compression from "compression"
import { Request, Response } from "express"
export function shouldCompressResponse(req: Request, res: Response) {
const { projectConfig } = req.scope.resolve("configModule")
const { enabled } = compressionOptions(projectConfig)
if (!enabled) {
return false
}
if (req.headers["x-no-compression"]) {
// don't compress responses with this request header
return false
}
// fallback to standard filter function
return compression.filter(req, res)
}
export function compressionOptions(
config: ProjectConfigOptions
): HttpCompressionOptions {
const responseCompressionOptions = config.http.compression ?? {}
responseCompressionOptions.enabled =
responseCompressionOptions.enabled ?? false
responseCompressionOptions.level = responseCompressionOptions.level ?? 6
responseCompressionOptions.memLevel = responseCompressionOptions.memLevel ?? 8
responseCompressionOptions.threshold =
responseCompressionOptions.threshold ?? 1024
return responseCompressionOptions
}