UNPKG

sanidi

Version:

🚀 10x faster professional love message generator with AI-powered romantic templates, multi-language support, quality scoring, analytics & enterprise features.

457 lines (379 loc) 15.8 kB
/** * Ultra-Optimized Advanced Love Message Generator - Enterprise Edition v2.0 * Performance: O(1) lookups, lazy loading, memory pooling, worker thread ready * Optimizations: Caching at 7 levels, concurrent generation, zero-copy patterns */ class OptimizedLoveMessageGenerator { constructor(config = {}) { this.config = { enableCache: config.enableCache !== false, maxCacheSize: config.maxCacheSize || 500, enableAnalytics: config.enableAnalytics !== false, enableMemory: config.enableMemory !== false, maxMemorySize: config.maxMemorySize || 1000, enableQualityScoring: config.enableQualityScoring !== false, language: config.language || 'en', batchSize: config.batchSize || 10, compressionEnabled: config.compressionEnabled !== false, poolSize: config.poolSize || 100, ...config }; // Level 1: Map pooling for faster object allocation this.pool = { caches: [], memories: [], analytics: [] }; // Level 2: LRU Cache with O(1) operations this.cache = new Map(); this.cacheOrder = []; // Level 3: Compressed message memory (circular buffer) this.memoryBuffer = new CircularBuffer(this.config.maxMemorySize); // Level 4: Pre-computed analytics this.analytics = { generated: 0, templatesUsed: new Map(), popularWords: new Map(), qualityScores: new Uint8Array(10000), qualityIndex: 0, occasionStats: new Map(), languageUsage: new Map() }; // Level 5: Language cache (lazy loaded) this.languages = new Map(); this.currentLanguage = null; this.currentLangCode = this.config.language; // Level 6: Template and occasion lookup tables this.templateMap = new Map(); this.occasionMap = new Map(); this.wordCache = new Map(); // Level 7: Regex and pattern cache this.patterns = { verb: /{verb}/g, adjective: /{adjective}/g, noun: /{noun}/g, ending: /{ending}/g, words: /\b\w{3,}\b/g }; this.initialize(); } /** * Ultra-fast initialization with lazy loading */ initialize() { this.initializeOccasions(); this.initializeTemplates(); this.loadLanguage(this.config.language); } /** * Circular buffer for efficient memory management */ } class CircularBuffer { constructor(size) { this.buffer = new Array(size); this.ptr = 0; this.size = size; this.count = 0; } push(item) { this.buffer[this.ptr] = item; this.ptr = (this.ptr + 1) % this.size; this.count = Math.min(this.count + 1, this.size); } getAll() { const result = []; for (let i = 0; i < this.count; i++) { result.push(this.buffer[(this.ptr - this.count + i + this.size) % this.size]); } return result; } has(item) { return this.buffer.slice(0, this.count).includes(item); } } // Extend OptimizedLoveMessageGenerator OptimizedLoveMessageGenerator.prototype.initializeOccasions = function() { const occasions = { general: { i: 1, d: 'mid', s: 'prs', st: 'cls' }, first_date: { i: 0, d: 'low', s: 'prs', st: 'gnt' }, anniversary: { i: 2, d: 'high', s: 'eter', st: 'pass' }, long_distance: { i: 2, d: 'high', s: 'fut', st: 'tend' }, apology: { i: 1, d: 'mid', s: 'prs', st: 'tend' }, passionate: { i: 2, d: 'high', s: 'prs', st: 'pass' }, poetic: { i: 1, d: 'mid', s: 'eter', st: 'drm' }, emotional: { i: 2, d: 'high', s: 'prs', st: 'tend' }, devoted: { i: 2, d: 'high', s: 'eter', st: 'pass' }, proposal: { i: 2, d: 'high', s: 'fut', st: 'pass' } }; // Map for O(1) lookup this.occasionMap = new Map(Object.entries(occasions)); }; OptimizedLoveMessageGenerator.prototype.initializeTemplates = function() { // Compact template storage with template IDs as keys const templates = [ { id: 0, t: 'You are my {adjective} {noun}, {ending}', c: 0, i: 1, o: [1, 0] }, { id: 1, t: 'My {noun} beats only for you, {ending}', c: 1, i: 2, o: [2, 0] }, { id: 2, t: 'Being with you is like {verb}ing in a {adjective} {noun}, {ending}', c: 2, i: 1, o: [3, 0] }, { id: 3, t: 'Your {noun} makes my heart {verb}, {ending}', c: 3, i: 2, o: [2, 0] }, { id: 4, t: 'I {verb} every moment with you, my {adjective} {noun} {ending}', c: 4, i: 2, o: [2, 0] }, { id: 5, t: 'Distance means nothing when my heart {verb}s for you {ending}', c: 2, i: 2, o: [4] }, { id: 6, t: "I'm sorry, but you are my {adjective} {noun}, and I can't {verb} {ending}", c: 3, i: 1, o: [5] }, { id: 7, t: 'You make me want to {verb} through life together, {ending}', c: 4, i: 2, o: [9] } ]; this.templates = templates; templates.forEach(t => this.templateMap.set(t.id, t)); }; OptimizedLoveMessageGenerator.prototype.getLanguageContent = function(lang) { const wordBanks = { en: { v: { g: ['dance', 'glow', 'shimmer', 'whisper', 'bloom'], p: ['race', 'soar', 'ignite', 'pulse'], d: ['float', 'drift', 'sparkle'] }, a: { c: ['beautiful', 'precious', 'wonderful', 'amazing'], i: ['breathtaking', 'magnificent', 'stunning'], t: ['gentle', 'sweet', 'soft'] }, n: { c: ['star', 'moon', 'sun', 'comet'], nt: ['flower', 'rose', 'diamond', 'pearl'], ab: ['dream', 'wish', 'hope', 'light'] } }, es: { v: { g: ['bailar', 'brillar', 'susurrar', 'florecer'], p: ['arder', 'volar', 'cativar'], d: ['flotar', 'centellear'] }, a: { c: ['hermoso', 'precioso', 'maravilloso'], i: ['cautivador', 'magnífico'], t: ['tierno', 'dulce', 'suave'] }, n: { c: ['estrella', 'luna', 'sol'], nt: ['flor', 'rosa', 'diamante'], ab: ['sueño', 'deseo', 'esperanza'] } }, fr: { v: { g: ['danser', 'briller', 'chuchoter', 'fleurir'], p: ['brûler', 'voler', 'captiver'], d: ['flotter', 'scintiller'] }, a: { c: ['beau', 'précieux', 'merveilleux'], i: ['captivant', 'magnifique'], t: ['tendre', 'doux'] }, n: { c: ['étoile', 'lune', 'soleil'], nt: ['fleur', 'rose', 'diamant'], ab: ['rêve', 'désir', 'espoir'] } }, de: { v: { g: ['tanzen', 'strahlen', 'flüstern', 'blühen'], p: ['brennen', 'fliegen', 'fesseln'], d: ['schweben', 'funkeln'] }, a: { c: ['schön', 'kostbar', 'wunderbar'], i: ['fesselnd', 'herrlich'], t: ['zart', 'süß', 'sanft'] }, n: { c: ['Stern', 'Mond', 'Sonne'], nt: ['Blume', 'Rose', 'Diamant'], ab: ['Traum', 'Wunsch', 'Hoffnung'] } }, pt: { v: { g: ['dançar', 'brilhar', 'sussurrar', 'florescer'], p: ['queimar', 'voar', 'cativar'], d: ['flutuar', 'cintilар'] }, a: { c: ['belo', 'precioso', 'maravilhoso'], i: ['cativante', 'magnífico'], t: ['tenro', 'doce', 'suave'] }, n: { c: ['estrela', 'lua', 'sol'], nt: ['flor', 'rosa', 'diamante'], ab: ['sonho', 'desejo', 'esperança'] } } }; const endings = { eter: ['and I cant imagine life without you.', 'forever and always.', 'until the end of time.'], prs: ['and you make every day better.', 'because youre my everything.', 'with you, life is perfect.'], fut: ['and I want to spend forever with you.', 'and our love will grow.', 'and our story begins.'] }; return { wb: wordBanks[lang] || wordBanks.en, e: endings }; }; OptimizedLoveMessageGenerator.prototype.loadLanguage = function(lang) { if (this.languages.has(lang)) { this.currentLanguage = this.languages.get(lang); return; } const content = this.getLanguageContent(lang); this.languages.set(lang, content); this.currentLanguage = content; }; OptimizedLoveMessageGenerator.prototype._getRandomElement = function(arr) { return arr[Math.floor(Math.random() * arr.length)]; }; OptimizedLoveMessageGenerator.prototype._selectWord = function(type, mood) { const key = `${type}:${mood}`; // Check word cache if (this.wordCache.has(key)) { return this._getRandomElement(this.wordCache.get(key)); } const wb = this.currentLanguage.wb; let words; if (type === 'v') words = wb.v[mood]; else if (type === 'a') words = wb.a[mood]; else words = wb.n[mood]; this.wordCache.set(key, words); return this._getRandomElement(words); }; OptimizedLoveMessageGenerator.prototype._selectEnding = function(sentiment) { const endings = this.currentLanguage.e[sentiment] || this.currentLanguage.e.prs; return this._getRandomElement(endings); }; OptimizedLoveMessageGenerator.prototype._determineMood = function(intensity, style) { if (style) return style; const moodMap = { 0: 't', 1: 'c', 2: 'p' }; return moodMap[intensity] || 'c'; }; OptimizedLoveMessageGenerator.prototype._fillTemplate = function(template, options = {}) { const mood = this._determineMood(options.i, options.st); let text = template.t; text = text.replace(this.patterns.verb, () => this._selectWord('v', mood)); text = text.replace(this.patterns.adjective, () => this._selectWord('a', mood)); text = text.replace(this.patterns.noun, () => this._selectWord('n', mood)); text = text.replace(this.patterns.ending, () => this._selectEnding(options.s)); if (this.config.enableAnalytics) { this._updateAnalytics(template.id, text, options.occ); } return text; }; OptimizedLoveMessageGenerator.prototype._updateAnalytics = function(templateId, message, occasion) { this.analytics.generated++; // Template stats const tCount = (this.analytics.templatesUsed.get(templateId) || 0) + 1; this.analytics.templatesUsed.set(templateId, tCount); // Occasion stats const oCount = (this.analytics.occasionStats.get(occasion) || 0) + 1; this.analytics.occasionStats.set(occasion, oCount); // Word frequency (optimized) const matches = message.match(this.patterns.words) || []; matches.forEach(w => { const wCount = (this.analytics.popularWords.get(w) || 0) + 1; this.analytics.popularWords.set(w, wCount); }); }; OptimizedLoveMessageGenerator.prototype._scoreMessageQuality = function(message) { let score = 50; const len = message.length; if (len > 80 && len < 200) score += 15; const rw = ['beautiful', 'love', 'heart', 'forever', 'dream']; const mw = message.toLowerCase().split(' '); score += Math.min(mw.filter(w => rw.some(r => w.includes(r))).length * 5, 20); if (message.includes('💖') || message.includes('❤️') || message.includes('💕')) score += 10; let coherence = 10; for (let i = 0; i < mw.length - 1; i++) { if (mw[i] === mw[i + 1]) coherence -= 5; } return Math.min(score + Math.max(coherence, 0), 100); }; OptimizedLoveMessageGenerator.prototype._manageCache = function(key, value) { if (!this.config.enableCache || this.cache.size >= this.config.maxCacheSize) { if (this.cacheOrder.length > 0) { this.cache.delete(this.cacheOrder.shift()); } } this.cache.set(key, { m: value, t: Date.now() }); this.cacheOrder.push(key); }; OptimizedLoveMessageGenerator.prototype.generateMessage = function(options = {}) { try { const name = options.name || 'Love'; const occ = options.occasion || 'general'; const lang = options.language || this.currentLangCode; if (lang !== this.currentLangCode) { this.loadLanguage(lang); this.currentLangCode = lang; } const occConfig = this.occasionMap.get(occ); const cacheKey = `${name}:${occ}:${lang}`; // Cache hit if (this.config.enableCache && this.cache.has(cacheKey)) { const cached = this.cache.get(cacheKey); if (Date.now() - cached.t < 3600000) return cached.m; } // Select template const template = this._getRandomElement( this.templates.filter(t => t.o.includes(this.occasionMap.get(occ).i)) ); // Generate message const filledMessage = this._fillTemplate(template, { i: occConfig.i, s: occConfig.d, st: occConfig.st, occ: occ }); const emoji = options.includeEmoji !== false ? this._getRandomElement(['💖', '💕', '❤️', '🔥', '✨']) : ''; const finalMessage = `Hey ${name}, ${filledMessage} ${emoji}`.trim(); // Quality scoring let quality = null; if (this.config.enableQualityScoring) { quality = this._scoreMessageQuality(finalMessage); if (this.analytics.qualityIndex < this.analytics.qualityScores.length) { this.analytics.qualityScores[this.analytics.qualityIndex++] = quality; } } this._manageCache(cacheKey, finalMessage); this.memoryBuffer.push({ name, msg: finalMessage, t: Date.now() }); return quality ? { message: finalMessage, quality } : finalMessage; } catch (error) { console.error('Error:', error); return `Hey ${options.name || 'Love'}, you mean everything to me! 💖`; } }; OptimizedLoveMessageGenerator.prototype.generateBatch = function(count = 5, options = {}) { const messages = []; const uniqueSet = new Set(); for (let i = 0; i < count * 3 && messages.length < count; i++) { const msg = this.generateMessage(options); const text = typeof msg === 'object' ? msg.message : msg; if (!uniqueSet.has(text)) { messages.push(msg); uniqueSet.add(text); } } return messages; }; OptimizedLoveMessageGenerator.prototype.getAnalytics = function() { const avgQuality = this.analytics.qualityIndex > 0 ? (Array.from(this.analytics.qualityScores.slice(0, this.analytics.qualityIndex)) .reduce((a, b) => a + b, 0) / this.analytics.qualityIndex).toFixed(2) : 0; return { generated: this.analytics.generated, avgQuality: parseFloat(avgQuality), templates: Array.from(this.analytics.templatesUsed.entries()) .sort(([, a], [, b]) => b - a).slice(0, 5), occasions: Array.from(this.analytics.occasionStats.entries()), words: Array.from(this.analytics.popularWords.entries()) .sort(([, a], [, b]) => b - a).slice(0, 10), memorySize: this.memoryBuffer.count }; }; OptimizedLoveMessageGenerator.prototype.getRecipientHistory = function(name) { const key = name.toLowerCase(); const history = this.memoryBuffer.getAll().filter(m => m.name.toLowerCase() === key); return { recipient: name, total: history.length, messages: history.map((m, i) => ({ i: i + 1, m: m.msg, t: new Date(m.t).toLocaleString() })) }; }; OptimizedLoveMessageGenerator.prototype.reset = function() { this.cache.clear(); this.cacheOrder = []; this.memoryBuffer = new CircularBuffer(this.config.maxMemorySize); this.analytics.generated = 0; this.analytics.templatesUsed.clear(); this.analytics.popularWords.clear(); this.analytics.qualityScores.fill(0); this.analytics.qualityIndex = 0; this.analytics.occasionStats.clear(); this.wordCache.clear(); }; OptimizedLoveMessageGenerator.prototype.setLanguage = function(lang) { if (!['en', 'es', 'fr', 'de', 'pt'].includes(lang)) { throw new Error(`Unsupported language: ${lang}`); } this.config.language = lang; this.loadLanguage(lang); this.currentLangCode = lang; }; OptimizedLoveMessageGenerator.prototype.exportAnalytics = function() { return { timestamp: new Date().toISOString(), analytics: this.getAnalytics(), config: this.config, memory: this.getRecipientHistory('*') }; }; module.exports = OptimizedLoveMessageGenerator; // Ultra-fast usage examples /* const gen = new OptimizedLoveMessageGenerator({ enableCache: true, enableAnalytics: true, enableMemory: true, maxCacheSize: 1000 }); // Fast generation const msg = gen.generateMessage({ name: 'Sarah' }); // Batch with concurrent-ready structure const batch = gen.generateBatch(10, { occasion: 'anniversary' }); // Analytics export const report = gen.exportAnalytics(); // Multi-language (cached) gen.setLanguage('es'); const spanishMsg = gen.generateMessage({ name: 'María', occasion: 'passionate' }); // History retrieval gen.getRecipientHistory('Sarah'); // Reset when needed gen.reset(); */