Modern TypeScript utility library with tree-shaking support - Array, String, Number, Sleep, and Time utilities for JavaScript and TypeScript projects
npm install @digicroz/js-kit@digicroz/js-kit - Universal utilities that work in Node.js, Browser, and Web Workers
@digicroz/js-kit/module/function for maximum tree-shaking
bash
npm install @digicroz/js-kit
`
Alternative package managers:
`bash
Yarn
yarn add @digicroz/js-kit
pnpm
pnpm add @digicroz/js-kit
Bun
bun add @digicroz/js-kit
`
Usage
$3
Import universal modules that work in Node.js, Browser, and Web Workers:
`typescript
import {
chunk,
capitalize,
clamp,
sleep,
convertToSeconds,
randomStringWithFixedLength,
truncateText,
convertToInt,
getUnixTimestamp,
isNodeEnvironment,
convertToSlug,
parseEnumValue,
toSnakeCase,
toCamelCase,
} from "@digicroz/js-kit"
// Array utilities
const chunkedArray = chunk([1, 2, 3, 4, 5], 2)
// Result: [[1, 2], [3, 4], [5]]
// String utilities
const capitalizedString = capitalize("hello world")
// Result: "Hello world"
const randomId = randomStringWithFixedLength(8)
// Result: "a7b9c2d1" (example)
const truncated = truncateText({ text: "This is a long text", maxLength: 10 })
// Result: "This is a..."
// Number utilities
const clampedNumber = clamp(15, 0, 10)
// Result: 10
const safeInt = convertToInt("123.45")
// Result: 123
// Sleep utilities
await sleep({ seconds: 2, milliseconds: 500 }) // Sleep for 2.5 seconds
// Time utilities
const seconds = convertToSeconds({ minutes: 5, seconds: 30 })
// Result: 330 (seconds)
const timestamp = getUnixTimestamp()
// Result: current timestamp in seconds
// Environment utilities
const isNode = isNodeEnvironment()
// Result: true if running in Node.js
// Slug utilities
const slug = convertToSlug("Hello World!")
// Result: "hello-world"
// Enum utilities
const Status = ["active", "inactive"] as const
const status = parseEnumValue(Status, "active")
// Result: 'active'
// Case conversion utilities
const snakeCase = toSnakeCase("myVariableName")
// Result: "my_variable_name"
const camelCase = toCamelCase("my_variable_name")
// Result: "myVariableName"
`
$3
You can also import individual functions for optimal tree-shaking:
`typescript
// Universal utilities - individual imports
import { chunk } from "@digicroz/js-kit/array"
import {
capitalize,
truncateText,
toSnakeCase,
toCamelCase,
} from "@digicroz/js-kit/string"
import { clamp, convertToInt } from "@digicroz/js-kit/number"
import { sleep, sleepMs } from "@digicroz/js-kit/sleep"
import { convertToSeconds, getUnixTimestamp } from "@digicroz/js-kit/time"
import { isNodeEnvironment, getEnvironment } from "@digicroz/js-kit/utils"
import {
convertToSlug,
isValidSlug,
generateUniqueSlug,
} from "@digicroz/js-kit/slug"
import { parseEnumValue, requireEnumValue } from "@digicroz/js-kit/enum"
// Universal bundle (recommended)
import {
chunk,
capitalize,
clamp,
sleep,
convertToSeconds,
} from "@digicroz/js-kit"
`
๐ Available Modules
$3
| Module | Functions | Description |
| -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| array | chunk | Split arrays into chunks of specified size |
| string | capitalize, capitalizeWords, randomStringWithFixedLength, truncateText, toSnakeCase, toCamelCase, objectKeysToSnakeCase, objectKeysToCamelCase | String manipulation, formatting, and case conversion utilities |
| number | clamp, inRange, convertToInt, convertToTwoDecimalInt, randomNumberWithFixedLength | Number utilities including range operations |
| slug | isValidSlug, convertToSlug, generateUniqueSlug, zodSlugValidation, zodSlugTransform, slugSchema, autoSlugSchema | URL-safe slug generation and validation with Zod support |
| enum | parseEnumValue, requireEnumValue | Type-safe enum parsing and validation |
| sleep | sleep, sleepMs, sleepSeconds, sleepMinutes, sleepUntil | Promise-based sleep with flexible time options |
| time | convertToSeconds, getUnixTimestamp, getUnixTimestampMs | Time conversion and timestamp utilities |
| utils | isNodeEnvironment, isBrowserEnvironment, isWebWorkerEnvironment, getEnvironment, assertNodeEnvironment, assertBrowserEnvironment | Environment detection and assertions |
| std-response | stdResponse.success, stdResponse.error, StdSuccess, StdError, StdResponse | Standardized API response types and utilities |
| types | Prettify | Utility types for TypeScript development |
TypeScript Configuration
For optimal compatibility with this package, ensure your tsconfig.json uses modern module resolution:
`json
{
"compilerOptions": {
"moduleResolution": "bundler", // or "node16"/"nodenext"
"module": "ESNext", // or "Node16"
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"skipLibCheck": true
}
}
`
$3
If you encounter module resolution errors like:
`
Cannot find module '@digicroz/js-kit/string/capitalize' or its corresponding type declarations
`
Try these solutions:
1. Update your TypeScript configuration to use modern module resolution (see above)
2. Ensure you're using a recent Node.js version (16+ recommended)
3. Copy the example configuration from example-tsconfig-for-consumers.json in this package
4. As a workaround, you can import directly from the dist folder:
`typescript
import { capitalize } from "@digicroz/js-kit/dist/string/capitalize.js"
`
$3
This package provides excellent IDE support with:
- Auto-completion for all functions and their parameters
- Type checking with full TypeScript support
- JSDoc documentation shown in hover tooltips
- Auto-import suggestions when typing function names
API Reference
$3
For comprehensive documentation with examples, advanced usage patterns, and best practices, see the individual package documentation:
- ๐ข Array Utilities - Array manipulation and chunking utilities
- ๐ข Number Utilities - Number clamping, conversion, and range validation
- ๐ Slug Utilities - URL-safe slug generation and validation
- ๐ Enum Utilities - Type-safe enum parsing and validation
- โฐ Sleep Utilities - Advanced sleep and timing functions
- ๐ String Utilities - String manipulation, formatting, and case conversion
- โฐ Time Utilities - Time conversion and duration utilities
- ๐ Environment Utilities - Environment detection and cross-platform utilities
- ๐ฆ Standard Response Utilities - Standardized API response types and helper functions
$3
#### Array Utilities
- chunk - Splits an array into chunks of a specified size
#### String Utilities
- capitalize(str: string): string - Capitalizes the first letter of a string
- capitalizeWords(str: string): string - Capitalizes the first letter of each word
- randomStringWithFixedLength(length: number): string - Generates a random string with fixed length
- truncateText(options: TruncateTextOptions): string - Truncates text with customizable options
- toSnakeCase - Converts camelCase to snake_case
- toCamelCase - Converts snake_case to camelCase
- objectKeysToSnakeCase - Recursively converts object keys to snake_case
- objectKeysToCamelCase - Recursively converts object keys to camelCase
#### Number Utilities
- clamp(number: number, lower: number, upper: number): number - Clamps a number within bounds
- inRange(number: number, lower: number, upper: number): boolean - Checks if number is in range
- convertToInt(data: any): number - Safely converts any value to integer
- convertToTwoDecimalInt(data: any): number - Converts to number with 2 decimal places
- randomNumberWithFixedLength(length: number): number - Generates random number with fixed length
#### Slug Utilities
- isValidSlug(slug: string): boolean - Validates if a string is a valid URL slug
- convertToSlug(text: string, options?): string - Converts text to a URL-safe slug
- generateUniqueSlug(baseText: string, existingSlugs: string[]): string - Generates a unique slug
- zodSlugValidation(message?: string) - Zod validation for slug format
- zodSlugTransform(options?) - Zod transform that converts text to slug
- slugSchema - Pre-configured Zod schemas for slug validation
- autoSlugSchema - Pre-configured Zod schemas for automatic slug generation
#### Enum Utilities
- parseEnumValue - Safely parses enum value
- requireEnumValue - Parses enum value or throws error
#### Sleep Utilities
- sleep(params: TSleepParams): Promise - Advanced sleep with flexible options
- sleepMs(ms: number): Promise - Sleep for milliseconds
- sleepSeconds(seconds: number): Promise - Sleep for seconds
- sleepMinutes(minutes: number): Promise - Sleep for minutes
- sleepUntil(unixTimestamp: number): Promise - Sleep until timestamp
#### Time Utilities
- convertToSeconds(options): number - Converts time units to seconds
- getUnixTimestamp(): number - Gets current Unix timestamp in seconds
- getUnixTimestampMs(): number - Gets current Unix timestamp in milliseconds
#### Environment Utilities
- isNodeEnvironment(): boolean - Checks if running in Node.js
- isBrowserEnvironment(): boolean - Checks if running in browser
- isWebWorkerEnvironment(): boolean - Checks if running in web worker
- getEnvironment(): string - Gets current environment type
- assertNodeEnvironment(): void - Asserts Node.js environment
- assertNodeEnvironment(): void - Asserts Node.js environment
- assertBrowserEnvironment(): void - Asserts browser environment
#### Standard Response Utilities
- stdResponse.success - Creates a success response
- stdResponse.error - Creates an error response
#### Type Utilities
- Prettify - Utility type for better TypeScript intellisense
Development
`bash
Install dependencies
npm install
Build the project
npm run build
Watch mode for development
npm run dev
Type checking
npm run type-check
Run tests
npm run test
Run tests with coverage
npm run test:coverage
Run tests in watch mode
npm run test:watch
`
๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
1. Fork the repository
2. Create your feature branch (git checkout -b feature/AmazingFeature)
3. Commit your changes (git commit -m 'Add some AmazingFeature')
4. Push to the branch (git push origin feature/AmazingFeature`)