mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-04 22:32:12 +03:00
40 lines
1.4 KiB
TypeScript
40 lines
1.4 KiB
TypeScript
export const REQUEST_BODY_BYTES_PER_MB = 1024 * 1024;
|
|
export const DEFAULT_REQUEST_BODY_LIMIT_MB = 10;
|
|
export const MIN_REQUEST_BODY_LIMIT_MB = 1;
|
|
export const MAX_REQUEST_BODY_LIMIT_MB = 500;
|
|
export const DEFAULT_REQUEST_BODY_LIMIT_BYTES =
|
|
DEFAULT_REQUEST_BODY_LIMIT_MB * REQUEST_BODY_BYTES_PER_MB;
|
|
|
|
export function normalizeRequestBodyLimitMb(value: unknown): number | null {
|
|
const parsed =
|
|
typeof value === "number" ? value : typeof value === "string" ? Number(value) : NaN;
|
|
if (!Number.isFinite(parsed)) return null;
|
|
|
|
const normalized = Math.floor(parsed);
|
|
if (normalized < MIN_REQUEST_BODY_LIMIT_MB || normalized > MAX_REQUEST_BODY_LIMIT_MB) {
|
|
return null;
|
|
}
|
|
|
|
return normalized;
|
|
}
|
|
|
|
export function requestBodyLimitMbToBytes(value: number): number {
|
|
return value * REQUEST_BODY_BYTES_PER_MB;
|
|
}
|
|
|
|
export function parseRequestBodyLimitBytes(value: string | undefined): number {
|
|
if (!value) return DEFAULT_REQUEST_BODY_LIMIT_BYTES;
|
|
|
|
const parsed = parseInt(value, 10);
|
|
return Number.isFinite(parsed) && parsed > 0 ? parsed : DEFAULT_REQUEST_BODY_LIMIT_BYTES;
|
|
}
|
|
|
|
export function requestBodyLimitBytesToMb(value: number): number {
|
|
const configuredMb = Math.round(value / REQUEST_BODY_BYTES_PER_MB);
|
|
return Math.min(MAX_REQUEST_BODY_LIMIT_MB, Math.max(MIN_REQUEST_BODY_LIMIT_MB, configuredMb));
|
|
}
|
|
|
|
export function requestBodyLimitMbFromEnv(value: string | undefined): number {
|
|
return requestBodyLimitBytesToMb(parseRequestBodyLimitBytes(value));
|
|
}
|