UNPKG

@hot-updater/plugin-core

Version:

React Native OTA solution for self-hosted

59 lines (57 loc) 1.79 kB
const require_rolldown_runtime = require('./_virtual/rolldown_runtime.cjs'); let mime = require("mime"); mime = require_rolldown_runtime.__toESM(mime); let path = require("path"); path = require_rolldown_runtime.__toESM(path); //#region src/compressionFormat.ts /** * Compression formats registry * Add new formats here to support additional compression types */ const COMPRESSION_FORMATS = { zip: { format: "zip", fileExtension: ".zip", mimeType: "application/zip" }, "tar.br": { format: "tar.br", fileExtension: ".tar.br", mimeType: "application/x-tar" }, "tar.gz": { format: "tar.gz", fileExtension: ".tar.gz", mimeType: "application/x-tar" } }; /** * Detects compression format from filename * @param filename The filename to detect format from * @returns Compression format information */ function detectCompressionFormat(filename) { for (const info of Object.values(COMPRESSION_FORMATS)) if (filename.endsWith(info.fileExtension)) return info; return COMPRESSION_FORMATS.zip; } /** * Gets MIME type for a filename * @param filename The filename to get MIME type for * @returns MIME type string */ function getCompressionMimeType(filename) { return detectCompressionFormat(filename).mimeType; } /** * Gets Content-Type for a bundle file with 3-tier fallback * @param bundlePath The bundle file path * @returns Content-Type string (never undefined, falls back to application/octet-stream) */ function getContentType(bundlePath) { const filename = path.default.basename(bundlePath); return mime.default.getType(bundlePath) ?? getCompressionMimeType(filename) ?? "application/octet-stream"; } //#endregion exports.detectCompressionFormat = detectCompressionFormat; exports.getCompressionMimeType = getCompressionMimeType; exports.getContentType = getContentType;