UNPKG

kaabalah

Version:

The de-facto library for any esoteric calculations and tooling

394 lines 7.47 kB
// src/kaabalah/index.ts var hebrewLetterMapping = /* @__PURE__ */ new Map([ [ "A", { letter: "A", hebrewName: "Aleph", hebrewCharacter: "\u05D0", numericValue: 1, majorArcana: 1 } ], [ "B", { letter: "B", hebrewName: "Beth", hebrewCharacter: "\u05D1", numericValue: 2, majorArcana: 2 } ], [ "G", { letter: "G", hebrewName: "Gimel", hebrewCharacter: "\u05D2", numericValue: 3, majorArcana: 3 } ], [ "D", { letter: "D", hebrewName: "Daleth", hebrewCharacter: "\u05D3", numericValue: 4, majorArcana: 4 } ], [ "E", { letter: "E", hebrewName: "He", hebrewCharacter: "\u05D4", numericValue: 5, majorArcana: 5 } ], [ "V", { letter: "V", hebrewName: "Vav", hebrewCharacter: "\u05D5", numericValue: 6, majorArcana: 6 } ], [ "U", { letter: "U", hebrewName: "Vav", hebrewCharacter: "\u05D5", numericValue: 6, majorArcana: 6 } ], [ "W", { letter: "W", hebrewName: "Vav", hebrewCharacter: "\u05D5", numericValue: 6, majorArcana: 6 } ], [ "Z", { letter: "Z", hebrewName: "Zayin", hebrewCharacter: "\u05D6", numericValue: 7, majorArcana: 7 } ], [ "H", { letter: "H", hebrewName: "Cheth", hebrewCharacter: "\u05D7", numericValue: 8, majorArcana: 8 } ], [ "T", { letter: "T", hebrewName: "Teth", hebrewCharacter: "\u05D8", numericValue: 9, majorArcana: 9 } ], [ "TH", { letter: "Th", hebrewName: "Tav", hebrewCharacter: "\u05EA", numericValue: 400, majorArcana: 22 } ], [ "TZ", { letter: "Tz", hebrewName: "Tzaddi", hebrewCharacter: "\u05E6", numericValue: 90, numericValueWhenEnding: 900, majorArcana: 18 } ], [ "I", { letter: "I", hebrewName: "Yod", hebrewCharacter: "\u05D9", numericValue: 10, majorArcana: 10 } ], [ "J", { letter: "J", hebrewName: "Yod", hebrewCharacter: "\u05D9", numericValue: 10, majorArcana: 10 } ], [ "Y", { letter: "Y", hebrewName: "Yod", hebrewCharacter: "\u05D9", numericValue: 10, majorArcana: 10 } ], [ "C", { letter: "C", hebrewName: "Kaph", hebrewCharacter: "\u05DB", numericValue: 20, numericValueWhenEnding: 500, majorArcana: 11 } ], [ "L", { letter: "L", hebrewName: "Lamed", hebrewCharacter: "\u05DC", numericValue: 30, majorArcana: 12 } ], [ "M", { letter: "M", hebrewName: "Mem", hebrewCharacter: "\u05DE", numericValue: 40, numericValueWhenEnding: 600, majorArcana: 13 } ], [ "N", { letter: "N", hebrewName: "Nun", hebrewCharacter: "\u05E0", numericValue: 50, numericValueWhenEnding: 700, majorArcana: 14 } ], [ "S", { letter: "S", hebrewName: "Samekh", hebrewCharacter: "\u05E1", numericValue: 60, majorArcana: 15 } ], [ "SH", { letter: "Sh", hebrewName: "Shin", hebrewCharacter: "\u05E9", numericValue: 300, majorArcana: 21 } ], [ "\xC7", { letter: "\xC7", hebrewName: "Samekh", hebrewCharacter: "\u05E1", numericValue: 60, majorArcana: 15 } ], [ "O", { letter: "O", hebrewName: "Ayin", hebrewCharacter: "\u05E2", numericValue: 6, numericValueWhenStarting: 70, majorArcana: 16 } ], [ "P", { letter: "P", hebrewName: "Pe", hebrewCharacter: "\u05E4", numericValue: 80, numericValueWhenEnding: 800, majorArcana: 17 } ], [ "PH", { letter: "Ph", hebrewName: "Pe", hebrewCharacter: "\u05E4", numericValue: 80, majorArcana: 17 } ], [ "K", { letter: "K", hebrewName: "Qoph", hebrewCharacter: "\u05E7", numericValue: 100, majorArcana: 19 } ], [ "KH", { letter: "Kh", hebrewName: "Qoph", hebrewCharacter: "\u05E7", numericValue: 100, majorArcana: 19 } ], [ "Q", { letter: "Q", hebrewName: "Qoph", hebrewCharacter: "\u05E7", numericValue: 100, majorArcana: 19 } ], [ "R", { letter: "R", hebrewName: "Resh", hebrewCharacter: "\u05E8", numericValue: 200, majorArcana: 20 } ], [ "X", { letter: "X", hebrewName: "Shin", hebrewCharacter: "\u05E9", numericValue: 300, majorArcana: 21 } ] ]); var reduceToSingleDigitWithSteps = (num) => { const steps = [num]; let currentNum = num; while (currentNum > 9) { currentNum = String(currentNum).split("").reduce((acc, digit) => acc + parseInt(digit), 0); steps.push(currentNum); } return { steps, finalValue: currentNum }; }; var isVowel = (letter) => { return ["A", "E", "I", "O", "U", "Y"].includes(letter); }; var calculateGematria = (word) => { const letters = word.toUpperCase().split(""); let vowelsSum = 0; let consonantsSum = 0; for (let i = 0; i < letters.length; i++) { const letter = letters[i]; const nextLetter = letters[i + 1] || ""; const isStarting = i === 0; const isEnding = i > 0 && i === letters.length - 1; if (["P", "T", "K", "S"].includes(letter) && nextLetter) { const combinedLetter = (letter + nextLetter).toUpperCase(); if (hebrewLetterMapping.has(combinedLetter)) { const value = hebrewLetterMapping.get(combinedLetter).numericValue; consonantsSum += value; i++; continue; } } const mapping = hebrewLetterMapping.get(letter); if (mapping) { let value = mapping.numericValue; if (isStarting && mapping.numericValueWhenStarting !== void 0) { value = mapping.numericValueWhenStarting; } else if (isEnding && mapping.numericValueWhenEnding !== void 0) { value = mapping.numericValueWhenEnding; } if (isVowel(letter)) { vowelsSum += value; } else { consonantsSum += value; } } } const vowelsReduction = reduceToSingleDigitWithSteps(vowelsSum); const consonantsReduction = reduceToSingleDigitWithSteps(consonantsSum); const synthesisReduction = reduceToSingleDigitWithSteps( vowelsReduction.finalValue + consonantsReduction.finalValue ); return { vowels: { originalSum: vowelsSum, reductionSteps: vowelsReduction.steps, finalValue: vowelsReduction.finalValue }, consonants: { originalSum: consonantsSum, reductionSteps: consonantsReduction.steps, finalValue: consonantsReduction.finalValue }, synthesis: { originalSum: vowelsReduction.finalValue + consonantsReduction.finalValue, reductionSteps: synthesisReduction.steps, finalValue: synthesisReduction.finalValue } }; }; export { calculateGematria }; //# sourceMappingURL=index.mjs.map