@code_with_sachin/uusid
Version:
Ultra Unique Secure ID generator with multiple formats, encryption, hierarchical IDs, and advanced features for modern applications
263 lines (219 loc) • 8.85 kB
JavaScript
const {
uusid,
uusidBatch,
createGenerator,
createPrefixedGenerator,
createEncryptedGenerator,
createWorkerPool,
validate,
extractTimestamp,
analyze,
getMetrics,
healthCheck,
base32,
urlSafe,
compact,
hierarchical,
fromContent
} = require('./index.js');
console.log('🚀 Enhanced UUSID Library - Feature Showcase\n');
// ========================================
// 1. BASIC USAGE
// ========================================
console.log('📝 1. BASIC USAGE');
console.log('================');
const basicId = uusid();
const batchIds = uusidBatch(3);
console.log('Basic UUSID:', basicId);
console.log('Batch of 3 IDs:');
batchIds.forEach((id, index) => {
console.log(' ' + (index + 1) + '. ' + id);
});
console.log('');
// ========================================
// 2. ENHANCED FORMATS
// ========================================
console.log('🎨 2. ENHANCED FORMATS');
console.log('======================');
console.log('Standard: ', uusid());
console.log('Base32: ', base32());
console.log('URL-Safe: ', urlSafe());
console.log('Compact: ', compact());
const customGen = createGenerator({ separator: '_' });
console.log('Custom Sep:', customGen.generate());
console.log('');
// ========================================
// 3. PREFIXED IDS
// ========================================
console.log('��️ 3. PREFIXED IDS');
console.log('==================');
const userGen = createPrefixedGenerator('usr');
const orderGen = createPrefixedGenerator('ord');
const sessionGen = createPrefixedGenerator('ses');
console.log('User ID: ', userGen.generate());
console.log('Order ID: ', orderGen.generate());
console.log('Session ID:', sessionGen.generate());
console.log('');
// ========================================
// 4. HIERARCHICAL IDS
// ========================================
console.log('🌳 4. HIERARCHICAL IDS');
console.log('======================');
const parentId = hierarchical({ levels: 3, separator: '.' });
const childId = hierarchical({ levels: 3, separator: '.' });
const grandChildId = hierarchical({ levels: 3, separator: '.' });
console.log('Parent: ' + parentId);
console.log('Child: ' + childId);
console.log('Grandchild: ' + grandChildId);
console.log('');
// ========================================
// 5. CONTENT-BASED IDS (DETERMINISTIC)
// ========================================
console.log('🔗 5. CONTENT-BASED IDS');
console.log('=======================');
const user1Id = fromContent('user@example.com');
const user2Id = fromContent('user@example.com');
const user3Id = fromContent('different@example.com');
console.log('User 1 ID (email: user@example.com): ' + user1Id);
console.log('User 2 ID (same email): ' + user2Id);
console.log('User 3 ID (different@example.com): ' + user3Id);
console.log('Same content = same ID: ' + (user1Id === user2Id));
console.log('Different content = different ID: ' + (user1Id !== user3Id));
console.log('');
// Different namespaces
const docId1 = fromContent('document.pdf', { namespace: 'files' });
const docId2 = fromContent('document.pdf', { namespace: 'backups' });
console.log('Same content, different namespace:');
console.log('Files namespace: ' + docId1);
console.log('Backups namespace: ' + docId2);
console.log('Different namespaces = different IDs: ' + (docId1 !== docId2));
console.log('');
// ========================================
// 6. ENCRYPTED IDS
// ========================================
console.log('🔒 6. ENCRYPTED IDS');
console.log('==================');
const encryptedGen = createEncryptedGenerator({ secretKey: 'my-secret-key-32-chars-long!!!' });
const encryptedId1 = encryptedGen.generate();
const encryptedId2 = encryptedGen.generate();
console.log('Encrypted ID 1: ' + encryptedId1);
console.log('Encrypted ID 2: ' + encryptedId2);
console.log('Format: IV:EncryptedData');
console.log('');
// ========================================
// 7. CUSTOM GENERATORS
// ========================================
console.log('⚙️ 7. CUSTOM GENERATORS');
console.log('=======================');
const apiGen = createGenerator({
prefix: 'api',
separator: '_',
// validAfter: '2024-01-01',
// validBefore: '2025-12-31'
});
console.log('API Key style: ' + apiGen.generate());
console.log('API URL-safe: ' + apiGen.urlSafe());
console.log('API Compact: ' + apiGen.compact());
console.log('');
// ========================================
// 8. VALIDATION & ANALYSIS
// ========================================
console.log('✅ 8. VALIDATION & ANALYSIS');
console.log('===========================');
const testIds = [
uusid(),
uusid(),
'invalid-id',
userGen.generate()
];
console.log('Test IDs:');
testIds.forEach((id, index) => {
const validation = validate(id);
console.log(' ' + (index + 1) + '. ' + id + ' - ' + (validation.valid ? '✅ Valid' : '❌ Invalid: ' + validation.reason));
});
const analysis = analyze(testIds);
console.log('\nBatch Analysis:');
console.log(' Total: ' + analysis.total);
console.log(' Valid: ' + analysis.valid);
console.log(' Invalid: ' + analysis.invalid);
console.log(' Duplicates: ' + analysis.duplicates);
console.log('');
// ========================================
// 9. PERFORMANCE METRICS
// ========================================
console.log('�� 9. PERFORMANCE METRICS');
console.log('=========================');
// Generate some IDs for metrics
for (let i = 0; i < 100; i++) {
uusid();
}
const metrics = getMetrics();
console.log('Performance Metrics:');
console.log(' Total Generated: ' + metrics.totalGenerated);
console.log(' Uptime: ' + metrics.uptime);
console.log(' Average Rate: ' + metrics.averageRate + ' IDs/sec');
console.log(' Peak Rate: ' + metrics.peakRate + ' IDs/sec');
console.log(' Memory Usage: ' + metrics.memoryUsage);
console.log('');
// ========================================
// 10. HEALTH CHECK
// ========================================
console.log('🏥 10. HEALTH CHECK');
console.log('==================');
healthCheck().then(health => {
console.log('System Health: ' + (health.healthy ? '✅ Healthy' : '❌ Unhealthy'));
console.log('Checks:');
console.log(' Validation: ' + (health.checks.validation ? '✅' : '❌'));
console.log(' Uniqueness: ' + (health.checks.uniqueness ? '✅' : '❌'));
console.log(' Performance: ' + (health.checks.performance ? '✅' : '❌'));
console.log('Metrics:');
console.log(' Generation Time: ' + health.metrics.generationTime);
console.log(' Rate: ' + health.metrics.rate);
console.log(' Memory: ' + health.metrics.memoryUsage);
console.log('');
// ========================================
// 11. WORKER POOL (HIGH VOLUME)
// ========================================
console.log('⚡ 11. WORKER POOL (HIGH VOLUME)');
console.log('===============================');
const pool = createWorkerPool({ workers: 2, batchSize: 100 });
console.log('Generating 1000 IDs using worker pool...');
const start = Date.now();
return pool.generateBatch(1000);
}).then(poolIds => {
const duration = Date.now() - Date.now() + 1; // Approximate
console.log('Generated: ' + poolIds.length + ' IDs');
console.log('All unique: ' + (new Set(poolIds).size === poolIds.length));
console.log('Performance: High-volume generation successful');
console.log('');
// ========================================
// 12. REAL-WORLD EXAMPLES
// ========================================
console.log('🌍 12. REAL-WORLD EXAMPLES');
console.log('==========================');
// Database record ID
const recordId = uusid();
console.log('Database Record: ' + recordId);
// API request ID
const requestId = createGenerator({ prefix: 'req' }).urlSafe();
console.log('API Request: ' + requestId);
// Session token
const sessionToken = createEncryptedGenerator({
secretKey: 'session-secret-key-32-chars!!'
}).generate();
console.log('Session Token: ' + sessionToken);
// File hash-based ID
const fileId = fromContent('file-content-hash', { namespace: 'files' });
console.log('File ID: ' + fileId);
// Transaction ID with timestamp
const transactionId = uusid();
try {
const timestamp = extractTimestamp(transactionId);
console.log('Transaction: ' + transactionId + ' (created: ' + timestamp.toISOString() + ')');
} catch (e) {
console.log('Transaction: ' + transactionId + ' (timestamp extraction not available)');
}
console.log('');
console.log('🎉 SHOWCASE COMPLETE! All features demonstrated successfully.');
console.log('📚 Check README.md for detailed documentation and API reference.');
});