init
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
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' }
|
||||
}
|
||||
Reference in New Issue
Block a user