ai_api / src /shared /constants /bodySize.ts
Yogesh
initial deploy
cd8bd0a
Raw
History Blame Contribute Delete
1.48 kB
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));
}