Helprx
A comprehensive collection of utility functions commonly used in React/TypeScript projects.
Installation
npm install helprx
Usage
import {
validateImage,
truncateId,
copyToClipboard,
formatCurrency,
generateCoupon,
capitalizeFirstLetter,
isValidIpAddress,
generateRandomPassword,
truncateText,
debounce,
throttle,
formatPhoneNumber,
isValidEmail,
generateUUID,
isValidPassword,
isValidURL,
isValidCreditCard,
isValidSSN,
isValidZipCode
} from 'common-helper';
Available Functions
File Validation Helpers
validateImage(file: File): boolean
Validates if a file is a valid image type (PNG, JPEG, JPG, WEBP).
const isValid = validateImage(file);
handleUpload(file: File, mutateFn: Function, options: UploadOptions): void
Handles file upload with validation and error handling.
handleUpload(file, uploadMutation, {
allowedTypes: ['image/jpeg', 'image/png'],
maxSizeMB: 2,
fileTypeLabel: 'Image'
});
handleFileUpload(params: FileUploadHandler): void
Handles file upload with custom validation and callbacks.
handleFileUpload({
file,
setFile,
onFileUpload: (file) => console.log('File uploaded:', file),
triggerError: () => setError('Invalid file type')
});
Text Manipulation Helpers
truncateId(id: string, startLength?: number, endLength?: number): string
Truncates an ID string with ellipsis in the middle.
const truncated = truncateId('1234567890abcdef', 3, 4);
truncate(text: string, startLength?: number, endLength?: number, appendText?: string, appendPosition?: 'center' | 'end'): string
Truncates text with customizable options.
const truncated = truncate('Hello World', 3, 4, '***', 'center');
truncateText(text: string): string
Truncates text to first 3 words and appends "...".
const truncated = truncateText('This is a very long sentence');
capitalizeFirstLetter(str: string): string
Capitalizes the first letter of a string.
const capitalized = capitalizeFirstLetter('hello world');
maskEmail(email: string, visibleStartChars?: number, visibleEndChars?: number): string
Masks an email address for privacy.
const masked = maskEmail('user@example.com', 2, 1);
Clipboard Helpers
copyToClipboard(text: string): void
Copies text to clipboard with fallback support.
copyToClipboard('Text to copy');
Currency & Formatting Helpers
formatCurrency(currency: string): string
Formats currency symbol based on currency code.
const symbol = formatCurrency('USD');
formatPhoneNumber(phoneNumber: string): string
Formats a phone number with proper spacing and formatting.
const formatted = formatPhoneNumber('1234567890');
const formattedUS = formatPhoneNumber('11234567890');
const formattedIN = formatPhoneNumber('911234567890');
Date & Time Helpers
getDateRange(filter: number): DateRange
Gets date range based on filter type.
const range = getDateRange(7);
formatDateForAPI(dateString: string): string
Formats date string for API consumption.
const formatted = formatDateForAPI('2024-01-15T10:30:00Z');
Filter & Query Helpers
buildFilters(filters: any): any
Builds filters object by removing empty values and trimming strings.
const cleanFilters = buildFilters({
name: ' John ',
age: 25,
email: '',
status: null
});
Validation Helpers
isValidIpAddress(ip: string): boolean
Validates if a string is a valid IP address (IPv4 or IPv6).
const isValid = isValidIpAddress('192.168.1.1');
const isValidV6 = isValidIpAddress('2001:db8::1');
isValidEmail(email: string): boolean
Validates if a string is a valid email address.
const isValid = isValidEmail('user@example.com');
const isInvalid = isValidEmail('invalid-email');
isValidPassword(password: string, minLength?: number): boolean
Validates if a string meets password strength requirements.
const isValid = isValidPassword('StrongPass123!', 8);
const isWeak = isValidPassword('weak');
isValidURL(url: string): boolean
Validates if a string is a valid URL.
const isValid = isValidURL('https://example.com');
const isInvalid = isValidURL('not-a-url');
isValidCreditCard(cardNumber: string): boolean
Validates if a string is a valid credit card number using Luhn algorithm.
const isValid = isValidCreditCard('4532015112830366');
const isInvalid = isValidCreditCard('1234567890123456');
isValidSSN(ssn: string): boolean
Validates if a string is a valid US Social Security Number.
const isValid = isValidSSN('123-45-6789');
const isInvalid = isValidSSN('000-00-0000');
isValidZipCode(zipCode: string): boolean
Validates if a string is a valid US ZIP code.
const isValid = isValidZipCode('12345');
const isValidExtended = isValidZipCode('12345-6789');
const isInvalid = isValidZipCode('1234');
Performance Helpers
debounce(func: Function, delay: number): Function
Debounces a function to limit how often it can be called.
const debouncedSearch = debounce((query) => {
searchAPI(query);
}, 300);
<input onChange={(e) => debouncedSearch(e.target.value)} />
throttle(func: Function, limit: number): Function
Throttles a function to limit how often it can be called.
const throttledScroll = throttle(() => {
updateScrollPosition();
}, 100);
window.addEventListener('scroll', throttledScroll);
Generation Helpers
generateCoupon(options?: CouponOptions): string
Generates a random coupon code with customizable options.
const coupon = generateCoupon({
length: 10,
prefix: 'PROMO',
includeNumbers: true,
includeUppercase: true
});
generateRandomPassword(length?: number): string
Generates a random password with guaranteed character types.
const password = generateRandomPassword(8);
generateUUID(): string
Generates a UUID v4 string.
const uuid = generateUUID();
Types
The library exports the following TypeScript interfaces:
FileUploadHandler
UploadOptions
CouponOptions
DateRange
ValidationRule
Dependencies
react-hot-toast: For toast notifications
moment: For date manipulation
react: Peer dependency
Development
npm install
npm run build
npm run dev
License
ISC