UNPKG

@cranberry-money/shared-constants

Version:

Shared constants for Blueberry platform

136 lines 3.81 kB
// ============================================ // Default Values // ============================================ export const DEFAULT_STRINGS = { EMPTY: '', UNKNOWN: 'Unknown', NOT_APPLICABLE: 'N/A', ERROR_MESSAGE: 'An error occurred', ZERO: '0', NULL_UUID: '00000000-0000-0000-0000-000000000000', }; export const DEFAULT_NUMBERS = { ZERO: 0, PRECISION: 2, PERCENTAGE_PRECISION: 2, QUANTITY_PRECISION: 6, }; export const LOCALE_CONFIG = { DEFAULT: 'en-AU', FALLBACK: 'en-US', SUPPORTED: ['en-AU', 'en-US', 'en-GB'], }; export const CONFIG_ALLOCATION_DEFAULTS = { DEFAULT_PERCENTAGE: 10, PERCENTAGE_PRECISION: 0.01, TARGET_TOTAL: 100, }; export const DEFAULT_FORMAT_OPTIONS = { CURRENCY: { style: 'currency', minimumFractionDigits: DEFAULT_NUMBERS.PRECISION, maximumFractionDigits: DEFAULT_NUMBERS.PRECISION, }, CURRENCY_SIGNED: { style: 'currency', minimumFractionDigits: DEFAULT_NUMBERS.PRECISION, maximumFractionDigits: DEFAULT_NUMBERS.PRECISION, signDisplay: 'always', }, PERCENTAGE: { style: 'percent', minimumFractionDigits: 0, maximumFractionDigits: DEFAULT_NUMBERS.PERCENTAGE_PRECISION, }, DECIMAL: { style: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 8, }, }; // ============================================ // Pagination // ============================================ export const PAGINATION_CONFIG = { DEFAULT_PAGE: 1, DEFAULT_PAGE_SIZE: 20, MIN_PAGE_SIZE: 1, MAX_PAGE_SIZE: 100, PAGE_SIZE_OPTIONS: [10, 20, 50, 100], DEFAULT_SORT_ORDER: 'desc', }; export const getValidPageSize = (pageSize) => { if (pageSize < PAGINATION_CONFIG.MIN_PAGE_SIZE) { return PAGINATION_CONFIG.MIN_PAGE_SIZE; } if (pageSize > PAGINATION_CONFIG.MAX_PAGE_SIZE) { return PAGINATION_CONFIG.MAX_PAGE_SIZE; } return pageSize; }; export const getValidPageNumber = (page) => { return Math.max(PAGINATION_CONFIG.DEFAULT_PAGE, page); }; // ============================================ // Thresholds and Limits // ============================================ export const COMMON_THRESHOLDS = { THOUSAND: 1000, MILLION: 1000000, BILLION: 1000000000, DEFAULT_DECIMALS: 2, CURRENCY_DECIMALS: 2, PERCENTAGE_DECIMALS: 2, QUANTITY_DECIMALS: 6, PRICE_DECIMALS: 4, MAX_NAME_LENGTH: 100, MAX_DESCRIPTION_LENGTH: 500, MAX_NOTES_LENGTH: 1000, MIN_PASSWORD_LENGTH: 8, MAX_FILE_SIZE_MB: 10, MAX_FILE_NAME_LENGTH: 255, MIN_PORTFOLIO_VALUE: 1000, MIN_TRADE_AMOUNT: 10, MIN_WITHDRAWAL_AMOUNT: 100, MAX_PORTFOLIOS_PER_USER: 10, MAX_TRADES_PER_DAY: 100, MIN_DISPLAY_AMOUNT: 0.01, MIN_DISPLAY_PERCENTAGE: 0.01, DEFAULT_TIMEOUT_MS: 30000, DEFAULT_RETRY_ATTEMPTS: 3, DEFAULT_RETRY_DELAY_MS: 1000, MAX_RETRY_DELAY_MS: 10000, REQUEST_DEBOUNCE_MS: 300, }; export const NUMERIC_RANGES = { AMOUNT: { MIN: 0, MAX: 999999999.99, }, PERCENTAGE: { MIN: 0, MAX: 100, }, QUANTITY: { MIN: 0, MAX: 999999999.999999, }, }; export const formatWithThousandSeparator = (value) => { if (value >= COMMON_THRESHOLDS.BILLION) { return `${(value / COMMON_THRESHOLDS.BILLION).toFixed(1)}B`; } if (value >= COMMON_THRESHOLDS.MILLION) { return `${(value / COMMON_THRESHOLDS.MILLION).toFixed(1)}M`; } if (value >= COMMON_THRESHOLDS.THOUSAND) { return `${(value / COMMON_THRESHOLDS.THOUSAND).toFixed(1)}K`; } return value.toString(); }; export const NUMBER_ABBREVIATIONS = { THOUSAND: 'K', MILLION: 'M', BILLION: 'B', }; //# sourceMappingURL=config.js.map