kaabalah
Version:
The de-facto library for any esoteric calculations and tooling
394 lines • 7.47 kB
JavaScript
// 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