uid
Generate a unique identifier (UID), supporting custom length and character set.
Basic Usage
typescript
import { uid } from 'radash'
console.log(uid()) // 'abc123def456'
console.log(uid(8)) // 'a1b2c3d4'
console.log(uid(16, '0123456789')) // '1234567890123456'
Syntax
typescript
function uid(length?: number, chars?: string): string
Parameters
length
(number, optional): The length of the UID to generate, default is 12chars
(string, optional): The character set to use for generating the UID, default is letters and numbers
Return Value
Returns a unique string identifier.
Examples
Basic Usage
typescript
import { uid } from 'radash'
// Using default parameters
console.log(uid()) // 'abc123def456'
// Specify length
console.log(uid(8)) // 'a1b2c3d4'
console.log(uid(16)) // 'abc123def456ghi7'
// Specify character set
console.log(uid(10, '0123456789')) // '1234567890'
console.log(uid(6, 'ABCDEF')) // 'ABCDEF'
Generate UIDs of Different Lengths
typescript
import { uid } from 'radash'
// Short UID
console.log(uid(4)) // 'a1b2'
// Medium length UID
console.log(uid(8)) // 'a1b2c3d4'
// Long UID
console.log(uid(16)) // 'abc123def456ghi7'
// Extra long UID
console.log(uid(32)) // 'abc123def456ghi7jkl890mno123pqr456stu789vwx012'
Using Different Character Sets
typescript
import { uid } from 'radash'
// Numbers only
console.log(uid(8, '0123456789')) // '12345678'
// Uppercase letters only
console.log(uid(8, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')) // 'ABCDEFGH'
// Lowercase letters only
console.log(uid(8, 'abcdefghijklmnopqrstuvwxyz')) // 'abcdefgh'
// Special characters
console.log(uid(8, '!@#$%^&*()')) // '!@#$%^&*'
// Hexadecimal characters
console.log(uid(8, '0123456789abcdef')) // 'a1b2c3d4'
// Base64 characters
console.log(uid(8, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/')) // 'AbCdEfGh'
Generate Unique Identifiers
typescript
import { uid } from 'radash'
// Generate user ID
const userId = uid(8)
console.log(userId) // 'a1b2c3d4'
// Generate session ID
const sessionId = uid(16)
console.log(sessionId) // 'abc123def456ghi7'
// Generate order number
const orderNumber = uid(12, '0123456789')
console.log(orderNumber) // '123456789012'
// Generate API key
const apiKey = uid(32)
console.log(apiKey) // 'abc123def456ghi7jkl890mno123pqr456stu789vwx012'
Generate File Names
typescript
import { uid } from 'radash'
// Generate temporary file name
const tempFileName = `temp_${uid(8)}.txt`
console.log(tempFileName) // 'temp_a1b2c3d4.txt'
// Generate upload file name
const uploadFileName = `upload_${uid(12)}.jpg`
console.log(uploadFileName) // 'upload_abc123def456.jpg'
// Generate backup file name
const backupFileName = `backup_${uid(16)}_${new Date().toISOString().split('T')[0]}.zip`
console.log(backupFileName) // 'backup_abc123def456ghi7_2023-12-31.zip'
Generate Database IDs
typescript
import { uid } from 'radash'
// Generate user table ID
const userTableId = uid(8, '0123456789')
console.log(userTableId) // '12345678'
// Generate product table ID
const productTableId = uid(12, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789')
console.log(productTableId) // 'ABC123DEF456'
// Generate order table ID
const orderTableId = uid(16, '0123456789ABCDEF')
console.log(orderTableId) // '1234567890ABCDEF'
Generate Tokens
typescript
import { uid } from 'radash'
// Generate access token
const accessToken = uid(32)
console.log(accessToken) // 'abc123def456ghi7jkl890mno123pqr456stu789vwx012'
// Generate refresh token
const refreshToken = uid(64)
console.log(refreshToken) // 'abc123def456ghi7jkl890mno123pqr456stu789vwx012abc123def456ghi7jkl890mno123pqr456stu789vwx012'
// Generate verification code
const verificationCode = uid(6, '0123456789')
console.log(verificationCode) // '123456'
// Generate invitation code
const inviteCode = uid(8, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789')
console.log(inviteCode) // 'ABC12345'
Generate Game IDs
typescript
import { uid } from 'radash'
// Generate player ID
const playerId = uid(8, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789')
console.log(playerId) // 'ABC12345'
// Generate room ID
const roomId = uid(6, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
console.log(roomId) // 'ABCDEF'
// Generate game session ID
const gameSessionId = uid(16)
console.log(gameSessionId) // 'abc123def456ghi7'
// Generate item ID
const itemId = uid(12, '0123456789ABCDEF')
console.log(itemId) // '123456789ABC'
Generate Test Data
typescript
import { uid } from 'radash'
// Generate test user data
const testUsers = Array.from({ length: 5 }, () => ({
id: uid(8),
name: `User_${uid(4)}`,
email: `user_${uid(6)}@example.com`
}))
console.log(testUsers)
// [
// { id: 'a1b2c3d4', name: 'User_a1b2', email: 'user_a1b2c3@example.com' },
// { id: 'e5f6g7h8', name: 'User_e5f6', email: 'user_e5f6g7@example.com' },
// ...
// ]
// Generate test product data
const testProducts = Array.from({ length: 3 }, () => ({
id: uid(12, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'),
name: `Product_${uid(6)}`,
sku: uid(8, '0123456789')
}))
console.log(testProducts)
// [
// { id: 'ABC123DEF456', name: 'Product_a1b2c3', sku: '12345678' },
// { id: 'GHI789JKL012', name: 'Product_d4e5f6', sku: '87654321' },
// ...
// ]
Generate Cache Keys
typescript
import { uid } from 'radash'
// Generate Redis cache key
const cacheKey = `user:${uid(8)}:profile`
console.log(cacheKey) // 'user:a1b2c3d4:profile'
// Generate session cache key
const sessionKey = `session:${uid(16)}`
console.log(sessionKey) // 'session:abc123def456ghi7'
// Generate API cache key
const apiCacheKey = `api:users:${uid(12)}:data`
console.log(apiCacheKey) // 'api:users:abc123def456:data'
Generate File Paths
typescript
import { uid } from 'radash'
// Generate upload file path
const uploadPath = `/uploads/${uid(8)}/${uid(12)}.jpg`
console.log(uploadPath) // '/uploads/a1b2c3d4/abc123def456.jpg'
// Generate temporary file path
const tempPath = `/tmp/${uid(16)}_${Date.now()}.tmp`
console.log(tempPath) // '/tmp/abc123def456ghi7_1704067200000.tmp'
// Generate backup file path
const backupPath = `/backups/${uid(12)}_${new Date().toISOString().split('T')[0]}.zip`
console.log(backupPath) // '/backups/abc123def456_2023-12-31.zip'
Generate URL Parameters
typescript
import { uid } from 'radash'
// Generate tracking parameters
const trackingParams = `utm_source=email&utm_medium=newsletter&utm_campaign=${uid(8)}`
console.log(trackingParams) // 'utm_source=email&utm_medium=newsletter&utm_campaign=a1b2c3d4'
// Generate API request ID
const requestId = uid(16)
const apiUrl = `https://api.example.com/users?request_id=${requestId}`
console.log(apiUrl) // 'https://api.example.com/users?request_id=abc123def456ghi7'
// Generate download link
const downloadToken = uid(32)
const downloadUrl = `https://example.com/download?token=${downloadToken}`
console.log(downloadUrl) // 'https://example.com/download?token=abc123def456ghi7jkl890mno123pqr456stu789vwx012'
Generate Database Records
typescript
import { uid } from 'radash'
// Generate user record
const userRecord = {
id: uid(8),
username: `user_${uid(6)}`,
email: `user_${uid(8)}@example.com`,
createdAt: new Date(),
updatedAt: new Date()
}
console.log(userRecord)
// {
// id: 'a1b2c3d4',
// username: 'user_a1b2c3',
// email: 'user_a1b2c3d4@example.com',
// createdAt: 2023-12-31T12:00:00.000Z,
// updatedAt: 2023-12-31T12:00:00.000Z
// }
// Generate order record
const orderRecord = {
id: uid(12, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'),
customerId: uid(8),
orderNumber: `ORD-${uid(8, '0123456789')}`,
total: Math.random() * 1000,
status: 'pending'
}
console.log(orderRecord)
// {
// id: 'ABC123DEF456',
// customerId: 'a1b2c3d4',
// orderNumber: 'ORD-12345678',
// total: 456.78,
// status: 'pending'
// }
Generate Test Cases
typescript
import { uid } from 'radash'
// Generate test case ID
const testCaseId = uid(8)
const testCase = {
id: testCaseId,
name: `Test Case ${testCaseId}`,
description: `Automated test case ${testCaseId}`,
steps: [
`Step 1: Navigate to ${uid(6)}`,
`Step 2: Click on ${uid(4)}`,
`Step 3: Verify ${uid(8)}`
]
}
console.log(testCase)
// {
// id: 'a1b2c3d4',
// name: 'Test Case a1b2c3d4',
// description: 'Automated test case a1b2c3d4',
// steps: [
// 'Step 1: Navigate to a1b2c3',
// 'Step 2: Click on d4e5',
// 'Step 3: Verify f6g7h8i9'
// ]
// }
Generate Configuration Identifiers
typescript
import { uid } from 'radash'
// Generate environment identifier
const environmentId = uid(8, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
console.log(environmentId) // 'ABCDEFGH'
// Generate deployment identifier
const deploymentId = uid(16)
console.log(deploymentId) // 'abc123def456ghi7'
// Generate version identifier
const versionId = uid(12, '0123456789ABCDEF')
console.log(versionId) // '123456789ABC'
// Generate configuration hash
const configHash = uid(32)
console.log(configHash) // 'abc123def456ghi7jkl890mno123pqr456stu789vwx012'
Generate Security Identifiers
typescript
import { uid } from 'radash'
// Generate password reset token
const resetToken = uid(32)
console.log(resetToken) // 'abc123def456ghi7jkl890mno123pqr456stu789vwx012'
// Generate email verification token
const emailToken = uid(24)
console.log(emailToken) // 'abc123def456ghi7jkl890mno123'
// Generate two-factor authentication code
const twoFactorCode = uid(6, '0123456789')
console.log(twoFactorCode) // '123456'
// Generate API secret
const apiSecret = uid(64)
console.log(apiSecret) // 'abc123def456ghi7jkl890mno123pqr456stu789vwx012abc123def456ghi7jkl890mno123pqr456stu789vwx012'
Generate Log Identifiers
typescript
import { uid } from 'radash'
// Generate request ID
const requestId = uid(16)
console.log(requestId) // 'abc123def456ghi7'
// Generate session ID
const sessionId = uid(24)
console.log(sessionId) // 'abc123def456ghi7jkl890mno123'
// Generate error ID
const errorId = uid(12, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789')
console.log(errorId) // 'ABC123DEF456'
// Generate trace ID
const traceId = uid(32)
console.log(traceId) // 'abc123def456ghi7jkl890mno123pqr456stu789vwx012'
Notes
- Uniqueness: Generated UIDs are statistically unique, but theoretically may have duplicates
- Character Set: Larger character sets reduce the probability of duplicates
- Length: Longer lengths result in better uniqueness
- Performance: Generation is very fast, suitable for high-frequency use
- Security: Does not contain sensitive information, suitable for public use
Differences from Other Methods
uid()
: Generates a unique identifierrandom()
: Generates a random numberdraw()
: Randomly selects an element from an arrayshuffle()
: Randomly shuffles an array
Practical Applications
- Database IDs: Generates unique primary keys
- Session Management: Generates session identifiers
- File Naming: Generates unique file names
- API Tokens: Generates access tokens
- Test Data: Generates test case identifiers
- Cache Keys: Generates cache identifiers
- Trace IDs: Generates request trace identifiers