forked from git.gladyson/openmonetis
- Adicionados ícones SVG para ChatGPT, Claude, Gemini e OpenRouter - Implementados ícones para modos claro e escuro do ChatGPT - Criado script de inicialização para PostgreSQL com extensão pgcrypto - Adicionado script de configuração de ambiente que faz backup do .env - Configurado tsconfig.json para TypeScript com opções de compilação
75 lines
1.7 KiB
TypeScript
75 lines
1.7 KiB
TypeScript
/**
|
|
* Utility functions for safe number conversions
|
|
*/
|
|
|
|
/**
|
|
* Safely converts unknown value to number
|
|
* @param value - Value to convert
|
|
* @param defaultValue - Default value if conversion fails
|
|
* @returns Converted number or default value
|
|
*/
|
|
export function safeToNumber(
|
|
value: unknown,
|
|
defaultValue: number = 0
|
|
): number {
|
|
if (typeof value === "number") {
|
|
return value;
|
|
}
|
|
|
|
if (typeof value === "string") {
|
|
const parsed = Number(value);
|
|
return Number.isNaN(parsed) ? defaultValue : parsed;
|
|
}
|
|
|
|
if (value === null || value === undefined) {
|
|
return defaultValue;
|
|
}
|
|
|
|
const parsed = Number(value);
|
|
return Number.isNaN(parsed) ? defaultValue : parsed;
|
|
}
|
|
|
|
/**
|
|
* Safely parses integer from unknown value
|
|
* @param value - Value to parse
|
|
* @param defaultValue - Default value if parsing fails
|
|
* @returns Parsed integer or default value
|
|
*/
|
|
export function safeParseInt(
|
|
value: unknown,
|
|
defaultValue: number = 0
|
|
): number {
|
|
if (typeof value === "number") {
|
|
return Math.trunc(value);
|
|
}
|
|
|
|
if (typeof value === "string") {
|
|
const parsed = Number.parseInt(value, 10);
|
|
return Number.isNaN(parsed) ? defaultValue : parsed;
|
|
}
|
|
|
|
return defaultValue;
|
|
}
|
|
|
|
/**
|
|
* Safely parses float from unknown value
|
|
* @param value - Value to parse
|
|
* @param defaultValue - Default value if parsing fails
|
|
* @returns Parsed float or default value
|
|
*/
|
|
export function safeParseFloat(
|
|
value: unknown,
|
|
defaultValue: number = 0
|
|
): number {
|
|
if (typeof value === "number") {
|
|
return value;
|
|
}
|
|
|
|
if (typeof value === "string") {
|
|
const parsed = Number.parseFloat(value);
|
|
return Number.isNaN(parsed) ? defaultValue : parsed;
|
|
}
|
|
|
|
return defaultValue;
|
|
}
|