Package Exports
- @g-1/util
 - @g-1/util/api
 - @g-1/util/array
 - @g-1/util/async
 - @g-1/util/crypto
 - @g-1/util/crypto/workers-safe
 - @g-1/util/database
 - @g-1/util/date
 - @g-1/util/debug
 - @g-1/util/env
 - @g-1/util/http
 - @g-1/util/math
 - @g-1/util/node
 - @g-1/util/node/git-operations
 - @g-1/util/node/git-utils
 - @g-1/util/node/prompt-utils
 - @g-1/util/object
 - @g-1/util/package.json
 - @g-1/util/string
 - @g-1/util/types
 - @g-1/util/validation
 - @g-1/util/validation/core
 - @g-1/util/validation/web
 - @g-1/util/web
 - @g-1/util/workflow
 
Readme
@g-1/util
G1 Shared Utilities. The centralized library for common G1 business logic and utilities.
Installation
npm install @g-1/util
# or
yarn add @g-1/util
# or
bun add @g-1/utilUsage
import { deepClone, formatDate, toCamelCase } from '@g-1/util'
// String utilities
const camelCased = toCamelCase('hello world') // 'helloWorld'
// Date utilities
const formatted = formatDate(new Date(), 'medium') // 'Jan 1, 2024'
// Object utilities
const cloned = deepClone({ a: { b: 1 } })API Documentation
String Utilities
toCamelCase(str: string): string- Converts string to camelCasetoKebabCase(str: string): string- Converts string to kebab-casetoSnakeCase(str: string): string- Converts string to snake_casetoPascalCase(str: string): string- Converts string to PascalCasetruncate(str: string, length: number, suffix?: string): string- Truncates string to specified lengthcapitalize(str: string): string- Capitalizes first letterslugify(str: string): string- Creates URL-friendly slugsgenerateRandomString(length: number, charset?: string): string- Generates random stringremoveWhitespace(str: string): string- Removes all whitespace
Date Utilities
formatDate(date: Date, format?: 'short' | 'medium' | 'long' | 'iso'): string- Formats datedaysBetween(date1: Date, date2: Date): number- Days between two datesisToday(date: Date): boolean- Checks if date is todayisThisWeek(date: Date): boolean- Checks if date is this weekaddDays(date: Date, days: number): Date- Adds days to dateaddMonths(date: Date, months: number): Date- Adds months to datestartOfDay(date: Date): Date- Gets start of dayendOfDay(date: Date): Date- Gets end of daygetRelativeTime(date: Date, baseDate?: Date): string- Gets relative time string
Object Utilities
deepClone<T>(obj: T): T- Deep clones objectomit<T, K>(obj: T, keys: K[]): Omit<T, K>- Omits keys from objectpick<T, K>(obj: T, keys: K[]): Pick<T, K>- Picks keys from objectisEmpty(obj: any): boolean- Checks if object is empty
Array Utilities
unique<T>(array: T[]): T[]- Removes duplicate valuesgroupBy<T, K>(array: T[], keyFn: (item: T) => K): Record<K, T[]>- Groups array items by keychunk<T>(array: T[], size: number): T[][]- Chunks array into smaller arraysshuffle<T>(array: T[]): T[]- Shuffles array randomly
Validation Utilities
isValidEmail(email: string): boolean- Validates email addressisValidUrl(url: string): boolean- Validates URLisValidPhone(phone: string): boolean- Validates phone number (US format)isValidUUID(uuid: string): boolean- Validates UUID
Async Utilities
delay(ms: number): Promise<void>- Creates a delay/sleep functiondebounce<T>(func: T, wait: number): (...args: Parameters<T>) => void- Debounces functionthrottle<T>(func: T, wait: number): (...args: Parameters<T>) => void- Throttles functionretry<T>(fn: () => Promise<T>, maxAttempts?: number, baseDelay?: number): Promise<T>- Retries async function with exponential backoff
Type Utilities
isNotNull<T>(value: T | null | undefined): value is T- Type guard for non-null valuesisString(value: unknown): value is string- Type guard for stringsisNumber(value: unknown): value is number- Type guard for numbersisBoolean(value: unknown): value is boolean- Type guard for booleansisArray<T>(value: unknown): value is T[]- Type guard for arraysisObject(value: unknown): value is Record<string, unknown>- Type guard for plain objectsisFunction(value: unknown): value is Function- Type guard for functions
Math Utilities
clamp(value: number, min: number, max: number): number- Clamps number between min/maxrandomBetween(min: number, max: number): number- Random number between min/maxroundTo(value: number, decimals: number): number- Rounds to specified decimalspercentage(value: number, total: number): number- Calculates percentagedegToRad(degrees: number): number- Converts degrees to radiansradToDeg(radians: number): number- Converts radians to degrees
Web Utilities
getQueryParams(url: string): Record<string, string>- Gets URL query parametersformatBytes(bytes: number, decimals?: number): string- Formats bytes to human readablecopyToClipboard(text: string): Promise<boolean>- Copies text to clipboard
Debug Utilities
createTimer(label?: string)- Creates a performance timerlogWithTime(message: string, ...args: any[]): void- Logs with timestampprettyPrint(obj: any, indent?: number): void- Pretty prints objectmeasureTime<T>(fn: () => T | Promise<T>, label?: string): Promise<{ result: T; duration: number }>- Measures function execution time
Node.js Utilities (Server-side only)
Git & Repository Management
getCurrentBranch(): string- Get current Git branchhasUncommittedChanges(): boolean- Check for uncommitted changesgetChangedFiles(): string[]- Get list of changed filesgetRecentCommits(count?: number): string[]- Get recent commit messagesincrementVersion(version: string, type: 'major' | 'minor' | 'patch'): string- Increment version stringgetCurrentVersion(packagePath?: string): string- Get version from package.jsonupdatePackageVersion(newVersion: string, packagePath?: string): void- Update package.json versionanalyzeChangesForVersionBump(): VersionAnalysis- Analyze changes for version bumpupdateChangelog(version: string, changeType: string, changesList: string[]): void- Update CHANGELOG.mdcommitAndPush(message: string, push?: boolean): void- Create and push git commitisGitRepository(): boolean- Check if in a git repositoryexec(command: string, options?: ExecOptions): string- Execute shell commandlog(message: string, color?: string): void- Log with colorCOLORS- Terminal color constants
CLI Prompts & Interaction
text(options: PromptOptions): Promise<string>- Simple text promptconfirm(options: ConfirmOptions): Promise<boolean>- Yes/no confirmationselect<T>(options: SelectOptions<T>): Promise<T>- Select from optionsmultiselect<T>(options: MultiSelectOptions<T>): Promise<T[]>- Multi-select from optionspassword(options: PromptOptions): Promise<string>- Hidden password inputProgressIndicator- Animated progress indicator class
Development
# Install dependencies
bun install
# Run tests
bun run test
# Build
bun run build
# Type check
bun run type-check
# Lint
bun run lintMCP Server Integration
@g-1/util includes an MCP (Model Context Protocol) server that automatically provides AI assistants with context about your utilities.
Setup
- Install the package:
 
npm install @g-1/util- Configure MCP in your terminal settings:
 
{
  "mcpServers": {
    "g1-util": {
      "command": "g1-util-mcp"
    }
  }
}- The AI will now automatically know when 
@g-1/utilis available and suggest relevant utilities! 
What the AI Will Know
- ✅ Which utilities are available in your project
 - 📋 Detailed function signatures and usage examples
 - 🎯 When to suggest specific utilities
 - 🚀 Import statements and code examples
 - 💡 Perfect use cases for different scenarios
 
See mcp-server/README.md for detailed setup instructions.
Contributing
- Fork the repository
 - Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
 
License
MIT © G1