Files
orcs-code/src/utils/envValidation.ts
did:key:z6MkqDnb7Siv3Cwj7pGJq4T5EsUisECqR8KpnDLwcaZq5TPr d2542c9a62 asdf
Squash the current repository state back into one baseline commit while
preserving the README reframing and repository contents.

Constraint: User explicitly requested a single squashed commit with subject "asdf"
Confidence: high
Scope-risk: broad
Reversibility: clean
Directive: This commit intentionally rewrites published history; coordinate before future force-pushes
Tested: git status clean; local history rewritten to one commit; force-pushed main to origin and instructkr
Not-tested: Fresh clone verification after push
2026-03-31 03:34:03 -07:00

39 lines
1.0 KiB
TypeScript

import { logForDebugging } from './debug.js'
export type EnvVarValidationResult = {
effective: number
status: 'valid' | 'capped' | 'invalid'
message?: string
}
export function validateBoundedIntEnvVar(
name: string,
value: string | undefined,
defaultValue: number,
upperLimit: number,
): EnvVarValidationResult {
if (!value) {
return { effective: defaultValue, status: 'valid' }
}
const parsed = parseInt(value, 10)
if (isNaN(parsed) || parsed <= 0) {
const result: EnvVarValidationResult = {
effective: defaultValue,
status: 'invalid',
message: `Invalid value "${value}" (using default: ${defaultValue})`,
}
logForDebugging(`${name} ${result.message}`)
return result
}
if (parsed > upperLimit) {
const result: EnvVarValidationResult = {
effective: upperLimit,
status: 'capped',
message: `Capped from ${parsed} to ${upperLimit}`,
}
logForDebugging(`${name} ${result.message}`)
return result
}
return { effective: parsed, status: 'valid' }
}