@cranberry-money/shared-constants
Version:
Shared constants for Blueberry platform
136 lines • 3.81 kB
JavaScript
// ============================================
// 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