Skip to main content

๐Ÿ› ๏ธ Utility Functions

This directory contains utility functions and helpers used throughout the idling.app application. Each utility is designed to be modular, reusable, and well-tested.

๐Ÿ“ Directory Structureโ€‹

src/lib/utils/
โ”œโ”€โ”€ README.md # This file - overview of all utilities
โ”œโ”€โ”€ array/ # Array manipulation utilities
โ”‚ โ”œโ”€โ”€ README.md # Array utilities documentation
โ”‚ โ””โ”€โ”€ dedupe-string-array.ts # Remove duplicates from string arrays
โ”œโ”€โ”€ parsers/ # Content parsing utilities
โ”‚ โ”œโ”€โ”€ README.md # Parser utilities documentation
โ”‚ โ”œโ”€โ”€ emoji-parser.ts # Emoji processing and rendering
โ”‚ โ”œโ”€โ”€ image-parser.ts # Image URL and metadata parsing
โ”‚ โ”œโ”€โ”€ markdown-parser.ts # Markdown to HTML conversion
โ”‚ โ””โ”€โ”€ rich-text-parser.ts # Rich text content processing
โ”œโ”€โ”€ string/ # String manipulation utilities
โ”‚ โ”œโ”€โ”€ README.md # String utilities documentation
โ”‚ โ”œโ”€โ”€ index.ts # String utilities exports
โ”‚ โ”œโ”€โ”€ make-id.ts # Generate unique identifiers
โ”‚ โ”œโ”€โ”€ tag-regex.ts # Regular expressions for tags
โ”‚ โ””โ”€โ”€ tag-utils.ts # Tag processing utilities
โ”œโ”€โ”€ cache-manager.ts # Application cache management
โ”œโ”€โ”€ content-parsers.ts # Advanced content parsing and tokenization
โ”œโ”€โ”€ hard-reset-manager.ts # Application state reset utilities
โ”œโ”€โ”€ os-detection.ts # Operating system detection
โ”œโ”€โ”€ privacy.ts # Privacy and data protection utilities
โ”œโ”€โ”€ requestIdentifier.ts # Request identification and tracking
โ”œโ”€โ”€ scroll-highlight-demo.ts # Scroll-based highlighting demo
โ”œโ”€โ”€ scroll-position.ts # Scroll position management
โ”œโ”€โ”€ server-logger.ts # Server-side logging utilities
โ”œโ”€โ”€ service-worker-cleanup.ts # Service worker management and cleanup
โ”œโ”€โ”€ social-sharing.ts # Social media sharing utilities
โ”œโ”€โ”€ text-extraction.ts # Text parsing and extraction
โ”œโ”€โ”€ time-utils.ts # Time and date utilities
โ””โ”€โ”€ timeFormatting.ts # Time formatting and display

๐Ÿš€ Core Utilitiesโ€‹

Text Processingโ€‹

System Managementโ€‹

Data Utilitiesโ€‹

UI & Interactionโ€‹

Infrastructureโ€‹

๐Ÿ“– Usage Patternsโ€‹

Importing Utilitiesโ€‹

// Import specific utilities
import { TextExtractor } from '@lib/utils/text-extraction';
import { CacheManager } from '@lib/utils/cache-manager';

// Import from subdirectories
import { makeId } from '@lib/utils/string/make-id';
import { EmojiParser } from '@lib/utils/parsers/emoji-parser';

Common Patternsโ€‹

// Text processing pipeline
import { TextExtractor } from '@lib/utils/text-extraction';
import { ContentParser } from '@lib/utils/content-parsers';

const userInput = 'Check out #coding with @[dev|user123] ๐Ÿš€';
const extracted = TextExtractor.extractAll(userInput);
const parsed = ContentParser.parse(userInput);

// Cache management
import { CacheManager } from '@lib/utils/cache-manager';

await CacheManager.set('user-data', userData, { ttl: 3600 });
const cachedData = await CacheManager.get('user-data');

// System utilities
import { OSDetection } from '@lib/utils/os-detection';
import { Logger } from '@lib/utils/server-logger';

const userOS = OSDetection.detect();
Logger.info('User connected', { os: userOS });

๐Ÿ”ง Development Guidelinesโ€‹

Creating New Utilitiesโ€‹

  1. Single Responsibility - Each utility should have a clear, focused purpose
  2. Type Safety - Use TypeScript interfaces and proper type definitions
  3. Error Handling - Include comprehensive error handling and validation
  4. Documentation - Add JSDoc comments and usage examples
  5. Testing - Write unit tests for all public functions

File Organizationโ€‹

  • Root level - General-purpose utilities used across the application
  • Subdirectories - Related utilities grouped by domain (string, array, parsers)
  • README.md - Documentation for each directory and major utility

Naming Conventionsโ€‹

  • Files - kebab-case (e.g., text-extraction.ts)
  • Classes - PascalCase (e.g., TextExtractor)
  • Functions - camelCase (e.g., extractHashtags)
  • Constants - UPPER_SNAKE_CASE (e.g., MAX_CACHE_SIZE)

๐Ÿงช Testingโ€‹

Each utility should include comprehensive tests:

// Example test structure
describe('TextExtractor', () => {
describe('extractHashtags', () => {
it('should extract hashtags from text', () => {
const text = 'Love #coding and #javascript!';
const hashtags = TextExtractor.extractHashtags(text);
expect(hashtags).toEqual(['#coding', '#javascript']);
});
});
});

These utilities form the foundation of idling.app's functionality. They are designed to be reliable, performant, and easy to use across the entire application.