forked from git.gladyson/openmonetis
feat: adição de novos ícones SVG e configuração do ambiente
- 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
This commit is contained in:
74
lib/utils/number.ts
Normal file
74
lib/utils/number.ts
Normal file
@@ -0,0 +1,74 @@
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
Reference in New Issue
Block a user