numerology/name-change.ts
rpriven fd6e171586
Add comprehensive numerology calculator with 10 specialized tools
- Core calculations (Life Path, Expression, Soul Urge, Birthday)
- Advanced numbers (Maturity, Personality, Hidden Passion, Karmic Lessons)
- Timing cycles and optimal days finder
- Compatibility analysis and name optimizer
- Telos integration for personal development
- Professional PDF report generation
- Profile management system
- Security fix: Add .claude/ to .gitignore

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-01 14:00:15 -06:00

287 lines
13 KiB
TypeScript
Executable file
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bun
/**
* Name Change Analyzer
*
* Compare how your numerology numbers change with different name variations.
* Perfect for testing nicknames, stage names, married names, or professional brands.
*
* Usage:
* bun name-change.ts --birthdate "5/13/1982" --current "John Smith" --alternative "John Smith"
* bun name-change.ts -b "5/13/1982" -c "Jane Smith" -a "Jane Doe" -a "J Smith"
*/
import { calculateCoreNumbers, calculateAdditionalNumbers } from './core-calculator';
import { expression, soulUrge } from './meanings';
import { personalityMeanings } from './additional-meanings';
// Parse command line arguments
const args = process.argv.slice(2);
let birthdate = '';
let currentName = '';
let alternativeNames: string[] = [];
for (let i = 0; i < args.length; i++) {
if ((args[i] === '--birthdate' || args[i] === '-b') && args[i + 1]) {
birthdate = args[i + 1];
i++;
} else if ((args[i] === '--current' || args[i] === '-c') && args[i + 1]) {
currentName = args[i + 1];
i++;
} else if ((args[i] === '--alternative' || args[i] === '-a') && args[i + 1]) {
alternativeNames.push(args[i + 1]);
i++;
} else if (args[i] === '--help' || args[i] === '-h') {
console.log(`
Name Change Analyzer
Compare how your numerology changes with different name variations.
Test nicknames, stage names, married names, or professional brands.
USAGE:
bun name-change.ts --birthdate "mm/dd/yyyy" --current "Current Name" --alternative "Alt Name" [OPTIONS]
OPTIONS:
-b, --birthdate DATE Your birthdate (mm/dd/yyyy) [required]
-c, --current NAME Your current/legal name [required]
-a, --alternative NAME Alternative name to compare [can use multiple times]
-h, --help Show this help message
EXAMPLES:
# Compare two name variations
bun name-change.ts -b "5/13/1982" -c "John Smith" -a "John Smith"
# Compare multiple alternatives
bun name-change.ts -b "11/22/1990" -c "Jane Smith" -a "Jane Doe" -a "J Smith"
# Test stage name vs real name
bun name-change.ts -b "3/14/1985" -c "Robert Johnson" -a "Rob J" -a "RJ"
WHAT IT SHOWS:
- Expression Number changes (your talents/abilities)
- Soul Urge changes (your inner desires)
- Personality Number changes (how others see you)
- Maturity Number shifts
- Hidden Passion changes
- Karmic Lessons differences
- Energy shift analysis
- Recommendations for which contexts to use each name
NOTE: Life Path and Birthday don't change (they're from your birthdate).
Only name-based numbers are compared.
`);
process.exit(0);
}
}
if (!birthdate || !currentName || alternativeNames.length === 0) {
console.error('Error: --birthdate, --current, and at least one --alternative are required');
console.error('Try: bun name-change.ts --help');
process.exit(1);
}
interface NameAnalysis {
name: string;
expression: number;
soulUrge: number;
personality: number;
maturity: number;
hiddenPassion: number | null;
karmicLessons: number[];
balance: number;
}
function analyzeName(name: string, birthdate: string): NameAnalysis {
const coreNumbers = calculateCoreNumbers(name, birthdate);
const additionalNumbers = calculateAdditionalNumbers(name, coreNumbers);
return {
name,
expression: coreNumbers.expression,
soulUrge: coreNumbers.soulUrge,
personality: additionalNumbers.personality,
maturity: additionalNumbers.maturity,
hiddenPassion: additionalNumbers.hiddenPassion,
karmicLessons: additionalNumbers.karmicLessons,
balance: additionalNumbers.balance
};
}
function getNumberDifference(num1: number, num2: number): string {
const diff = num2 - num1;
if (diff === 0) return '';
if (diff > 0) return `⬆️ +${diff}`;
return `⬇️ ${diff}`;
}
function getEnergyShift(fromNum: number, toNum: number, type: 'expression' | 'soulUrge'): string[] {
if (fromNum === toNum) return ['No change in energy'];
const shifts: string[] = [];
// Energy level descriptors
const energyLevels: Record<number, string> = {
1: 'Independent/Leadership',
2: 'Cooperative/Diplomatic',
3: 'Creative/Expressive',
4: 'Stable/Practical',
5: 'Dynamic/Freedom-seeking',
6: 'Nurturing/Responsible',
7: 'Analytical/Spiritual',
8: 'Powerful/Material Success',
9: 'Humanitarian/Universal',
11: 'Inspirational/Intuitive',
22: 'Master Builder/Visionary',
33: 'Master Teacher/Healer'
};
shifts.push(`${energyLevels[fromNum]}${energyLevels[toNum]}`);
// Specific shift interpretations
if (toNum === 8 && fromNum !== 8) {
shifts.push('• Stronger business/leadership energy');
shifts.push('• Better for professional success and authority');
}
if (toNum === 3 && fromNum !== 3) {
shifts.push('• More creative and expressive energy');
shifts.push('• Better for communication and social presence');
}
if (toNum === 7 && fromNum !== 7) {
shifts.push('• More introspective and analytical');
shifts.push('• Better for deep work and spiritual pursuits');
}
if (toNum === 1 && fromNum !== 1) {
shifts.push('• Stronger independent/pioneering energy');
shifts.push('• Better for solo ventures and leadership');
}
if ([11, 22, 33].includes(toNum) && ![11, 22, 33].includes(fromNum)) {
shifts.push('• ✨ Activates master number energy!');
shifts.push('• Higher spiritual potential and responsibility');
}
return shifts;
}
// Analyze all names
console.log(`\n═══════════════════════════════════════════════════════════════`);
console.log(`📝 NAME CHANGE ANALYSIS`);
console.log(`═══════════════════════════════════════════════════════════════\n`);
console.log(`Birthdate: ${birthdate}`);
console.log(`Life Path: ${calculateCoreNumbers(currentName, birthdate).lifePath} (unchanging)\n`);
const currentAnalysis = analyzeName(currentName, birthdate);
console.log(`═══════════════════════════════════════════════════════════════`);
console.log(`CURRENT NAME: ${currentName}`);
console.log(`───────────────────────────────────────────────────────────────`);
console.log(`Expression: ${currentAnalysis.expression} (${expression[currentAnalysis.expression].keywords.slice(0, 3).join(', ')})`);
console.log(`Soul Urge: ${currentAnalysis.soulUrge} (${soulUrge[currentAnalysis.soulUrge].keywords.slice(0, 3).join(', ')})`);
console.log(`Personality: ${currentAnalysis.personality} (${personalityMeanings[currentAnalysis.personality].keywords.slice(0, 3).join(', ')})`);
console.log(`Maturity: ${currentAnalysis.maturity}`);
console.log(`Hidden Passion: ${currentAnalysis.hiddenPassion || 'None'}`);
console.log(`Karmic Lessons: ${currentAnalysis.karmicLessons.length > 0 ? currentAnalysis.karmicLessons.join(', ') : 'None'}`);
console.log(`Balance: ${currentAnalysis.balance}\n`);
// Compare each alternative
alternativeNames.forEach((altName, index) => {
const altAnalysis = analyzeName(altName, birthdate);
console.log(`═══════════════════════════════════════════════════════════════`);
console.log(`ALTERNATIVE ${index + 1}: ${altName}`);
console.log(`───────────────────────────────────────────────────────────────`);
console.log(`Expression: ${altAnalysis.expression} (${expression[altAnalysis.expression].keywords.slice(0, 3).join(', ')}) ${getNumberDifference(currentAnalysis.expression, altAnalysis.expression)}`);
console.log(`Soul Urge: ${altAnalysis.soulUrge} (${soulUrge[altAnalysis.soulUrge].keywords.slice(0, 3).join(', ')}) ${getNumberDifference(currentAnalysis.soulUrge, altAnalysis.soulUrge)}`);
console.log(`Personality: ${altAnalysis.personality} (${personalityMeanings[altAnalysis.personality].keywords.slice(0, 3).join(', ')}) ${getNumberDifference(currentAnalysis.personality, altAnalysis.personality)}`);
console.log(`Maturity: ${altAnalysis.maturity} ${getNumberDifference(currentAnalysis.maturity, altAnalysis.maturity)}`);
console.log(`Hidden Passion: ${altAnalysis.hiddenPassion || 'None'}`);
console.log(`Karmic Lessons: ${altAnalysis.karmicLessons.length > 0 ? altAnalysis.karmicLessons.join(', ') : 'None'}`);
console.log(`Balance: ${altAnalysis.balance} ${getNumberDifference(currentAnalysis.balance, altAnalysis.balance)}\n`);
// Key differences
console.log(`📊 KEY DIFFERENCES:`);
if (altAnalysis.expression !== currentAnalysis.expression) {
const shifts = getEnergyShift(currentAnalysis.expression, altAnalysis.expression, 'expression');
console.log(`\n🎯 Expression shift (talents/abilities):`);
shifts.forEach(s => console.log(` ${s}`));
}
if (altAnalysis.soulUrge !== currentAnalysis.soulUrge) {
const shifts = getEnergyShift(currentAnalysis.soulUrge, altAnalysis.soulUrge, 'soulUrge');
console.log(`\n💫 Soul Urge shift (inner desires):`);
shifts.forEach(s => console.log(` ${s}`));
}
if (altAnalysis.personality !== currentAnalysis.personality) {
console.log(`\n👤 Personality shift (how others see you):`);
console.log(` From: ${personalityMeanings[currentAnalysis.personality].description}`);
console.log(` To: ${personalityMeanings[altAnalysis.personality].description}`);
}
// Karmic Lessons comparison
const gainedLessons = altAnalysis.karmicLessons.filter(l => !currentAnalysis.karmicLessons.includes(l));
const resolvedLessons = currentAnalysis.karmicLessons.filter(l => !altAnalysis.karmicLessons.includes(l));
if (resolvedLessons.length > 0) {
console.log(`\n✅ Karmic Lessons resolved: ${resolvedLessons.join(', ')}`);
}
if (gainedLessons.length > 0) {
console.log(`\n⚠ New Karmic Lessons: ${gainedLessons.join(', ')}`);
}
// Recommendations
console.log(`\n💡 RECOMMENDATIONS:`);
const expressionHigher = altAnalysis.expression > currentAnalysis.expression;
const soulUrgeHigher = altAnalysis.soulUrge > currentAnalysis.soulUrge;
const hasMaturity8 = altAnalysis.maturity === 8;
const hasMasterNumber = [11, 22, 33].includes(altAnalysis.expression) || [11, 22, 33].includes(altAnalysis.soulUrge);
if (altAnalysis.expression === 8 || altAnalysis.expression === 1) {
console.log(` → Use "${altName}" for: Business, leadership, professional contexts`);
}
if (altAnalysis.expression === 3 || altAnalysis.expression === 5) {
console.log(` → Use "${altName}" for: Creative work, social media, public speaking`);
}
if (altAnalysis.expression === 7) {
console.log(` → Use "${altName}" for: Writing, research, spiritual work`);
}
if (altAnalysis.expression === 6) {
console.log(` → Use "${altName}" for: Teaching, counseling, service work`);
}
if (hasMasterNumber) {
console.log(` → "${altName}" activates master number potential - use for your highest calling`);
}
if (resolvedLessons.length > 0 && gainedLessons.length === 0) {
console.log(` → "${altName}" resolves karmic lessons - energetically cleaner`);
}
if (altAnalysis.expression === currentAnalysis.expression &&
altAnalysis.soulUrge === currentAnalysis.soulUrge &&
altAnalysis.personality === currentAnalysis.personality) {
console.log(` → No significant energy difference - use whichever feels right`);
}
console.log('');
});
// Overall summary
console.log(`═══════════════════════════════════════════════════════════════`);
console.log(`📋 SUMMARY`);
console.log(`═══════════════════════════════════════════════════════════════\n`);
console.log(`Compared "${currentName}" with ${alternativeNames.length} alternative(s).\n`);
console.log(`Remember:`);
console.log(`• Legal name for official documents`);
console.log(`• Professional name for career/public presence`);
console.log(`• Personal nicknames for close relationships`);
console.log(`• Different contexts can use different name energies\n`);
console.log(`✨ Your core Life Path never changes - names only affect your expression\n`);