javascript-utils-library
v1.0.2
Published
A professional utility package providing common JavaScript operations for arrays, strings, objects, async operations, validation, and dates
Maintainers
Readme
JavaScript Utils
A professional utility package providing common JavaScript operations for arrays, strings, objects, async operations, validation, and dates.
Installation
npm install javascript-utilsFeatures
- Array Utilities: Chunk, unique, flatten, and sort arrays
- String Utilities: Case conversion, truncation, email validation
- Object Utilities: Deep merge, pick, omit, and empty checks
- Async Utilities: Delay, retry, and batch operations
- Validation Utilities: URL validation, schema validation, empty checks
- Date Utilities: Formatting, relative time, and date checks
- TypeScript Support: Full TypeScript definitions included
- Zero Dependencies: No external dependencies
Usage
Array Utilities
const { chunk, unique, flatten, sortBy } = require('javascript-utils');
// Chunk array into smaller arrays
const chunks = chunk([1, 2, 3, 4, 5, 6], 2);
// Returns: [[1, 2], [3, 4], [5, 6]]
// Remove duplicates
const uniqueItems = unique([1, 2, 2, 3, 3, 3]);
// Returns: [1, 2, 3]
// Flatten nested array
const flat = flatten([1, [2, [3, 4]], 5]);
// Returns: [1, 2, 3, 4, 5]
// Sort array by key
const sorted = sortBy(
[{ name: 'John', age: 30 }, { name: 'Jane', age: 25 }],
'age'
);
// Returns sorted array by ageString Utilities
const { toCamelCase, toKebabCase, truncate, isValidEmail } = require('javascript-utils');
// Convert to camel case
toCamelCase('hello-world'); // Returns: 'helloWorld'
// Convert to kebab case
toKebabCase('helloWorld'); // Returns: 'hello-world'
// Truncate string
truncate('This is a long string', 10);
// Returns: 'This is a ...'
// Validate email
isValidEmail('[email protected]'); // Returns: trueObject Utilities
const { deepMerge, pick, omit, isEmpty } = require('javascript-utils');
// Deep merge objects
const merged = deepMerge(
{ a: { b: 1, c: 2 } },
{ a: { b: 3 } }
);
// Returns: { a: { b: 3, c: 2 } }
// Pick specific keys
const picked = pick({ a: 1, b: 2, c: 3 }, ['a', 'b']);
// Returns: { a: 1, b: 2 }
// Omit specific keys
const omitted = omit({ a: 1, b: 2, c: 3 }, ['c']);
// Returns: { a: 1, b: 2 }
// Check if empty
isEmpty({}); // Returns: trueAsync Utilities
const { delay, retry, batch } = require('javascript-utils');
// Delay execution
await delay(1000); // Wait 1 second
// Retry async function
const result = await retry(
async () => await fetchData(),
3, // 3 retries
1000 // 1 second delay
);
// Batch async operations
const results = await batch(
[1, 2, 3, 4, 5],
async (item) => await processItem(item),
2 // Process 2 items at a time
);Validation Utilities
const { isValidUrl, validateSchema, isEmptyValue } = require('javascript-utils');
// Validate URL
isValidUrl('https://example.com'); // Returns: true
// Validate object schema
const isValid = validateSchema(
{ name: 'John', age: 30 },
{ name: 'string', age: 'number' }
);
// Returns: true
// Check if empty
isEmptyValue(null); // Returns: true
isEmptyValue(''); // Returns: true
isEmptyValue([]); // Returns: trueDate Utilities
const { formatDate, fromNow, isToday } = require('javascript-utils');
// Format date
formatDate(new Date(), 'YYYY-MM-DD');
// Returns: '2024-01-15'
// Get relative time
fromNow(new Date(Date.now() - 3600000));
// Returns: '1 hour ago'
// Check if date is today
isToday(new Date()); // Returns: trueUsing with Classes
You can also use the utility classes directly:
const { ArrayUtils, StringUtils, ObjectUtils } = require('javascript-utils');
// Use class methods
const chunks = ArrayUtils.chunk([1, 2, 3, 4], 2);
const camelCase = StringUtils.toCamelCase('hello-world');
const merged = ObjectUtils.deepMerge({ a: 1 }, { b: 2 });TypeScript Support
Full TypeScript definitions are included:
import { chunk, unique, deepMerge } from 'javascript-utils';
const numbers: number[] = [1, 2, 3, 4, 5];
const chunks: number[][] = chunk(numbers, 2);API Reference
Array Utils
chunk(array, size)- Chunk array into smaller arraysunique(array, key?)- Remove duplicates from arrayflatten(array, depth?)- Flatten nested arraysortBy(array, key, descending?)- Sort array by key
String Utils
toCamelCase(str)- Convert to camelCasetoKebabCase(str)- Convert to kebab-casetoPascalCase(str)- Convert to PascalCasetruncate(str, length, suffix?)- Truncate stringisValidEmail(str)- Validate email
Object Utils
deepMerge(...objects)- Deep merge objectspick(obj, keys)- Pick keys from objectomit(obj, keys)- Omit keys from objectisEmpty(obj)- Check if object is empty
Async Utils
delay(ms)- Delay executionretry(fn, retries?, delay?)- Retry async functionbatch(items, fn, batchSize?)- Batch async operations
Validation Utils
isValidUrl(url)- Validate URLvalidateSchema(obj, schema)- Validate object schemaisEmptyValue(value)- Check if value is empty
Date Utils
formatDate(date, format?)- Format datefromNow(date)- Get relative timeisToday(date)- Check if date is today
Requirements
- Node.js >= 14.0.0
License
MIT
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
