30 lines
889 B
JavaScript
30 lines
889 B
JavaScript
/**
|
|
* Parses a query parameter value based on its expected type.
|
|
* Throws on invalid formats.
|
|
*/
|
|
export function parseValue(value, type) {
|
|
if (value === null || value === undefined || value === '') return null;
|
|
|
|
switch (type) {
|
|
case 'number': {
|
|
const num = parseFloat(value);
|
|
if (Number.isNaN(num)) throw new Error(`Invalid number format: "${value}"`);
|
|
return num;
|
|
}
|
|
case 'integer': {
|
|
const int = parseInt(value, 10);
|
|
if (Number.isNaN(int)) throw new Error(`Invalid integer format: "${value}"`);
|
|
return int;
|
|
}
|
|
case 'boolean':
|
|
if (String(value).toLowerCase() === 'true') return true;
|
|
if (String(value).toLowerCase() === 'false') return false;
|
|
throw new Error(`Invalid boolean format: "${value}"`);
|
|
case 'date':
|
|
return String(value);
|
|
case 'string':
|
|
default:
|
|
return String(value);
|
|
}
|
|
}
|