export function positiveIntegerEnv(value: string | undefined, fallback: number): number { const parsed = Number.parseInt(value || String(fallback), 10); return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback; } export function maxXmlBodyBytes(env: Env): number { return positiveIntegerEnv(env.MAX_XML_BODY_BYTES, 1_048_576); } export function maxReportResults(env: Env): number { return positiveIntegerEnv(env.MAX_REPORT_RESULTS, 5_000); } export function maxFileBytes(env: Env): number { return positiveIntegerEnv(env.MAX_FILE_BYTES, 100_000_000); } export function maxDavDepthInfinityNodes(env: Env): number { return positiveIntegerEnv(env.MAX_DAV_DEPTH_INFINITY_NODES, 10_000); } export function maxCalendarObjectBytes(env: Env): number { return positiveIntegerEnv(env.MAX_CALENDAR_OBJECT_BYTES, 1_048_576); } export function maxAddressObjectBytes(env: Env): number { return positiveIntegerEnv(env.MAX_ADDRESS_OBJECT_BYTES, 1_048_576); } export function maxRecurrenceYears(env: Env): number { return positiveIntegerEnv(env.MAX_RECURRENCE_YEARS, 5); } export function maxRecurrenceInstances(env: Env): number { return positiveIntegerEnv(env.MAX_RECURRENCE_INSTANCES, 10_000); }