Skip to main content

Utility Functions

Utah provides a collection of utility functions for common programming tasks, calculations, and data processing.

Random Number Generation

Basic Random Operations

// Random number generation with no parameters (0-32767)
let random: number = utility.random();

// Random number with maximum value (0-max)
let randomMax: number = utility.random(100);

// Random number within range (min-max)
let randomRange: number = utility.random(1, 100);

// Use in control flow
for (let i: number = 0; i < 5; i++) {
let dice: number = utility.random(1, 6);
console.log("Roll ${i + 1}: ${dice}");
}

Random Number Bash Code

# utility.random() - no parameters (0 to 32767)
random=$((RANDOM % 32768))

# utility.random(100) - max only (0 to 100)
random=$((RANDOM % 101))

# utility.random(50, 150) - min and max (50 to 150)
random=$(((RANDOM % 101) + 50))

UUID Generation

UUID Creation

// Generate universally unique identifiers
let sessionId: string = utility.uuid();
let requestId: string = utility.uuid();
let transactionId: string = utility.uuid();

console.log("Session: ${sessionId}");
console.log("Request: ${requestId}");
console.log("Transaction: ${transactionId}");

UUID Bash Code

# utility.uuid() - generates UUID with multiple fallbacks
uuid=$(if command -v uuidgen >/dev/null 2>&1; then uuidgen; elif command -v python3 >/dev/null 2>&1; then python3 -c "import uuid; print(uuid.uuid4())"; else echo "$(date +%s)-$(($RANDOM * $RANDOM))-$(($RANDOM * $RANDOM))-$(($RANDOM * $RANDOM))"; fi)

Text Hashing

Hash Generation

// Hash with default algorithm (SHA256)
let defaultHash: string = utility.hash("Hello, World!");

// Hash with specific algorithms
let md5Hash: string = utility.hash("Hello, World!", "md5");
let sha1Hash: string = utility.hash("Hello, World!", "sha1");
let sha256Hash: string = utility.hash("Hello, World!", "sha256");
let sha512Hash: string = utility.hash("Hello, World!", "sha512");

// Hash variables
let message: string = "Secret message";
let messageHash: string = utility.hash(message, "sha256");

Hash Bash Code

# utility.hash(text, algorithm) - generates hash using specified algorithm
hash=$(echo -n ${text} | case "sha256" in "md5") md5sum | cut -d' ' -f1 ;; "sha1") sha1sum | cut -d' ' -f1 ;; "sha256") sha256sum | cut -d' ' -f1 ;; "sha512") sha512sum | cut -d' ' -f1 ;; *) echo "Error: Unsupported hash algorithm: "sha256"" >&2; exit 1 ;; esac)

Base64 Encoding/Decoding

Base64 Operations

// Basic encoding and decoding
let original: string = "Hello, Utah!";
let encoded: string = utility.base64Encode(original);
let decoded: string = utility.base64Decode(encoded);

console.log("Original: ${original}");
console.log("Encoded: ${encoded}");
console.log("Decoded: ${decoded}");

// Working with special characters
let complex: string = "Special chars: !@#$%^&*()_+-=[]{}|;':\",./<>?";
let complexEncoded: string = utility.base64Encode(complex);
let complexDecoded: string = utility.base64Decode(complexEncoded);

// Empty string handling
let empty: string = "";
let emptyEncoded: string = utility.base64Encode(empty);
let emptyDecoded: string = utility.base64Decode(emptyEncoded);

Base64 Bash Code

# utility.base64Encode(text) - encodes text to Base64
encoded=$(echo -n ${text} | base64 -w 0)

# utility.base64Decode(text) - decodes Base64 text
decoded=$(echo -n ${encoded} | base64 -d)

Use Cases

Random Number Use Cases

  • Game Development: Dice rolls, random events, procedural generation
  • Load Testing: Random delays and intervals
  • Sampling: Random selection from ranges
  • Security: Random timeouts and delays (not cryptographically secure)
  • User Experience: Random tips, messages, or content selection

UUID Use Cases

  • Session Management: Unique session identifiers
  • Request Tracking: Unique request IDs for logging and monitoring
  • File Naming: Unique file names to prevent conflicts
  • Database Keys: Primary keys for database records
  • API Keys: Temporary API keys and tokens

Text Hashing Use Cases

  • Data Integrity: Verify file integrity with checksums
  • Password Hashing: Hash passwords before storage (use with salt)
  • Content Fingerprinting: Generate unique fingerprints for content
  • Cache Keys: Generate cache keys from content
  • Data Deduplication: Identify duplicate content

Base64 Encoding Use Cases

  • Data Transmission: Encode binary data for text-based protocols
  • Configuration Files: Store binary data in text configuration files
  • API Communication: Encode payloads for API requests
  • Email Attachments: Encode files for email transmission
  • Web Development: Data URIs for embedded resources

Implementation Details

All utility functions are implemented with proper error handling and fallback mechanisms:

  • utility.random(): Uses bash $RANDOM with range validation
  • utility.uuid(): Falls back from uuidgenpython3 → timestamp-based UUID
  • utility.hash(): Supports md5, sha1, sha256, sha512 algorithms with validation
  • utility.base64Encode/Decode(): Uses standard base64 command with proper line wrapping

The functions compile to efficient bash code that works across different Unix-like systems.