- 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>
287 lines
13 KiB
TypeScript
Executable file
287 lines
13 KiB
TypeScript
Executable file
#!/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`);
|