{"version":3,"sources":["../src/books.ts","../src/cache/interface.ts","../src/exceptions.ts","../src/models.ts","../src/parser.ts","../src/validators.ts","../src/client.ts","../src/cache/memory.ts","../src/cache/noop.ts"],"names":["Testament","BibleSection","BookName","z","parseHTML","bookName"],"mappings":"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I,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,CAAA;AAAA,MAAG,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,CAAA;AAAA,MAAG,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MACzF,EAAA;AAAA,MAAI,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,CAAA;AAAA,MAAG,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,CAAA;AAAA,MAAG,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,CAAA;AAAA,MAAG,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAC1F,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,CAAA;AAAA,MAAG,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,CAAA;AAAA,MAAG,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,CAAA;AAAA,MAAG,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,CAAA;AAAA,MAAG,CAAA;AAAA,MAAG,CAAA;AAAA,MAC3F,CAAA;AAAA,MAAG,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,CAAA;AAAA,MAAG,EAAA;AAAA,MAAI,EAAA;AAAA,MAAI,CAAA;AAAA,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","file":"index.cjs","sourcesContent":["/**\n * Bible structure data for all 66 books.\n *\n * Contains complete chapter and verse counts for validation and reference building.\n */\n\n/** Bible testaments */\nexport enum Testament {\n  OLD_TESTAMENT = \"OT\",\n  NEW_TESTAMENT = \"NT\",\n}\n\n/** Bible sections for search result organization */\nexport enum BibleSection {\n  PENTATEUCH = \"Pentateuch\",\n  HISTORY = \"History\",\n  WISDOM_AND_POETRY = \"Wisdom and Poetry\",\n  MAJOR_PROPHETS = \"Major Prophets\",\n  MINOR_PROPHETS = \"Minor Prophets\",\n  GOSPELS_AND_ACTS = \"Gospels and Acts\",\n  PAULINE_EPISTLES = \"Pauline Epistles\",\n  GENERAL_EPISTLES = \"General Epistles\",\n}\n\n/** Information about a Bible book */\nexport interface BookInfo {\n  number: number;\n  name: string;\n  testament: Testament;\n  chapters: number;\n  verses: number[]; // Verse count per chapter\n}\n\n/** Complete Bible structure with all 66 books */\nexport const BIBLE_STRUCTURE: Record<number, BookInfo> = {\n  1: {\n    number: 1,\n    name: \"Genesis\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 50,\n    verses: [\n      31, 25, 24, 26, 32, 22, 24, 22, 29, 32, 32, 20, 18, 24, 21, 16, 27, 33, 38, 18, 34, 24, 20,\n      67, 34, 35, 46, 22, 35, 43, 55, 32, 20, 31, 29, 43, 36, 30, 23, 23, 57, 38, 34, 34, 28, 34,\n      31, 22, 33, 26,\n    ],\n  },\n  2: {\n    number: 2,\n    name: \"Exodus\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 40,\n    verses: [\n      22, 25, 22, 31, 23, 30, 25, 32, 35, 29, 10, 51, 22, 31, 27, 36, 16, 27, 25, 26, 36, 31, 33,\n      18, 40, 37, 21, 43, 46, 38, 18, 35, 23, 35, 35, 38, 29, 31, 43, 38,\n    ],\n  },\n  3: {\n    number: 3,\n    name: \"Leviticus\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 27,\n    verses: [\n      17, 16, 17, 35, 19, 30, 38, 36, 24, 20, 47, 8, 59, 57, 33, 34, 16, 30, 37, 27, 24, 33, 44, 23,\n      55, 46, 34,\n    ],\n  },\n  4: {\n    number: 4,\n    name: \"Numbers\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 36,\n    verses: [\n      54, 34, 51, 49, 31, 27, 89, 26, 23, 36, 35, 16, 33, 45, 41, 50, 13, 32, 22, 29, 35, 41, 30,\n      25, 18, 65, 23, 31, 40, 16, 54, 42, 56, 29, 34, 13,\n    ],\n  },\n  5: {\n    number: 5,\n    name: \"Deuteronomy\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 34,\n    verses: [\n      46, 37, 29, 49, 33, 25, 26, 20, 29, 22, 32, 32, 18, 29, 23, 22, 20, 22, 21, 20, 23, 30, 25,\n      22, 19, 19, 26, 68, 29, 20, 30, 52, 29, 12,\n    ],\n  },\n  6: {\n    number: 6,\n    name: \"Joshua\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 24,\n    verses: [\n      18, 24, 17, 24, 15, 27, 26, 35, 27, 43, 23, 24, 33, 15, 63, 10, 18, 28, 51, 9, 45, 34, 16, 33,\n    ],\n  },\n  7: {\n    number: 7,\n    name: \"Judges\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 21,\n    verses: [36, 23, 31, 24, 31, 40, 25, 35, 57, 18, 40, 15, 25, 20, 20, 31, 13, 31, 30, 48, 25],\n  },\n  8: {\n    number: 8,\n    name: \"Ruth\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 4,\n    verses: [22, 23, 18, 22],\n  },\n  9: {\n    number: 9,\n    name: \"1 Samuel\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 31,\n    verses: [\n      28, 36, 21, 22, 12, 21, 17, 22, 27, 27, 15, 25, 23, 52, 35, 23, 58, 30, 24, 42, 15, 23, 29,\n      22, 44, 25, 12, 25, 11, 31, 13,\n    ],\n  },\n  10: {\n    number: 10,\n    name: \"2 Samuel\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 24,\n    verses: [\n      27, 32, 39, 12, 25, 23, 29, 18, 13, 19, 27, 31, 39, 33, 37, 23, 29, 33, 43, 26, 22, 51, 39,\n      25,\n    ],\n  },\n  11: {\n    number: 11,\n    name: \"1 Kings\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 22,\n    verses: [\n      53, 46, 28, 34, 18, 38, 51, 66, 28, 29, 43, 33, 34, 31, 34, 34, 24, 46, 21, 43, 29, 53,\n    ],\n  },\n  12: {\n    number: 12,\n    name: \"2 Kings\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 25,\n    verses: [\n      18, 25, 27, 44, 27, 33, 20, 29, 37, 36, 21, 21, 25, 29, 38, 20, 41, 37, 37, 21, 26, 20, 37,\n      20, 30,\n    ],\n  },\n  13: {\n    number: 13,\n    name: \"1 Chronicles\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 29,\n    verses: [\n      54, 55, 24, 43, 26, 81, 40, 40, 44, 14, 47, 40, 14, 17, 29, 43, 27, 17, 19, 8, 30, 19, 32, 31,\n      31, 32, 34, 21, 30,\n    ],\n  },\n  14: {\n    number: 14,\n    name: \"2 Chronicles\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 36,\n    verses: [\n      17, 18, 17, 22, 14, 42, 22, 18, 31, 19, 23, 16, 22, 15, 19, 14, 19, 34, 11, 37, 20, 12, 21,\n      27, 28, 23, 9, 27, 36, 27, 21, 33, 25, 33, 27, 23,\n    ],\n  },\n  15: {\n    number: 15,\n    name: \"Ezra\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 10,\n    verses: [11, 70, 13, 24, 17, 22, 28, 36, 15, 44],\n  },\n  16: {\n    number: 16,\n    name: \"Nehemiah\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 13,\n    verses: [11, 20, 32, 23, 19, 19, 73, 18, 38, 39, 36, 47, 31],\n  },\n  17: {\n    number: 17,\n    name: \"Esther\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 10,\n    verses: [22, 23, 15, 17, 14, 14, 10, 17, 32, 3],\n  },\n  18: {\n    number: 18,\n    name: \"Job\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 42,\n    verses: [\n      22, 13, 26, 21, 27, 30, 21, 22, 35, 22, 20, 25, 28, 22, 35, 22, 16, 21, 29, 29, 34, 30, 17,\n      25, 6, 14, 23, 28, 25, 31, 40, 22, 33, 37, 16, 33, 24, 41, 30, 24, 34, 17,\n    ],\n  },\n  19: {\n    number: 19,\n    name: \"Psalms\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 150,\n    verses: [\n      6, 12, 8, 8, 12, 10, 17, 9, 20, 18, 7, 8, 6, 7, 5, 11, 15, 50, 14, 9, 13, 31, 6, 10, 22, 12,\n      14, 9, 11, 12, 24, 11, 22, 22, 28, 12, 40, 22, 13, 17, 13, 11, 5, 26, 17, 11, 9, 14, 20, 23,\n      19, 9, 6, 7, 23, 13, 11, 11, 17, 12, 8, 12, 11, 10, 13, 20, 7, 35, 36, 5, 24, 20, 28, 23, 10,\n      12, 20, 72, 13, 19, 16, 8, 18, 12, 13, 17, 7, 18, 52, 17, 16, 15, 5, 23, 11, 13, 12, 9, 9, 5,\n      8, 28, 22, 35, 45, 48, 43, 13, 31, 7, 10, 10, 9, 8, 18, 19, 2, 29, 176, 7, 8, 9, 4, 8, 5, 6,\n      5, 6, 8, 8, 3, 18, 3, 3, 21, 26, 9, 8, 24, 13, 10, 7, 12, 15, 21, 10, 20, 14, 9, 6,\n    ],\n  },\n  20: {\n    number: 20,\n    name: \"Proverbs\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 31,\n    verses: [\n      33, 22, 35, 27, 23, 35, 27, 36, 18, 32, 31, 28, 25, 35, 33, 33, 28, 24, 29, 30, 31, 29, 35,\n      34, 28, 28, 27, 28, 27, 33, 31,\n    ],\n  },\n  21: {\n    number: 21,\n    name: \"Ecclesiastes\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 12,\n    verses: [18, 26, 22, 16, 20, 12, 29, 17, 18, 20, 10, 14],\n  },\n  22: {\n    number: 22,\n    name: \"Song of Songs\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 8,\n    verses: [17, 17, 11, 16, 16, 13, 13, 14],\n  },\n  23: {\n    number: 23,\n    name: \"Isaiah\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 66,\n    verses: [\n      31, 22, 26, 6, 30, 13, 25, 22, 21, 34, 16, 6, 22, 32, 9, 14, 14, 7, 25, 6, 17, 25, 18, 23, 12,\n      21, 13, 29, 24, 33, 9, 20, 24, 17, 10, 22, 38, 22, 8, 31, 29, 25, 28, 28, 25, 13, 15, 22, 26,\n      11, 23, 15, 12, 17, 13, 12, 21, 14, 21, 22, 11, 12, 19, 12, 25, 24,\n    ],\n  },\n  24: {\n    number: 24,\n    name: \"Jeremiah\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 52,\n    verses: [\n      19, 37, 25, 31, 31, 30, 34, 22, 26, 25, 23, 17, 27, 22, 21, 21, 27, 23, 15, 18, 14, 30, 40,\n      10, 38, 24, 22, 17, 32, 24, 40, 44, 26, 22, 19, 32, 21, 28, 18, 16, 18, 22, 13, 30, 5, 28, 7,\n      47, 39, 46, 64, 34,\n    ],\n  },\n  25: {\n    number: 25,\n    name: \"Lamentations\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 5,\n    verses: [22, 22, 66, 22, 22],\n  },\n  26: {\n    number: 26,\n    name: \"Ezekiel\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 48,\n    verses: [\n      28, 10, 27, 17, 17, 14, 27, 18, 11, 22, 25, 28, 23, 23, 8, 63, 24, 32, 14, 49, 32, 31, 49, 27,\n      17, 21, 36, 26, 21, 26, 18, 32, 33, 31, 15, 38, 28, 23, 29, 49, 26, 20, 27, 31, 25, 24, 23,\n      35,\n    ],\n  },\n  27: {\n    number: 27,\n    name: \"Daniel\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 12,\n    verses: [21, 49, 30, 37, 31, 28, 28, 27, 27, 21, 45, 13],\n  },\n  28: {\n    number: 28,\n    name: \"Hosea\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 14,\n    verses: [11, 23, 5, 19, 15, 11, 16, 14, 17, 15, 12, 14, 16, 9],\n  },\n  29: {\n    number: 29,\n    name: \"Joel\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 3,\n    verses: [20, 32, 21],\n  },\n  30: {\n    number: 30,\n    name: \"Amos\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 9,\n    verses: [15, 16, 15, 13, 27, 14, 17, 14, 15],\n  },\n  31: {\n    number: 31,\n    name: \"Obadiah\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 1,\n    verses: [21],\n  },\n  32: {\n    number: 32,\n    name: \"Jonah\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 4,\n    verses: [17, 10, 10, 11],\n  },\n  33: {\n    number: 33,\n    name: \"Micah\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 7,\n    verses: [16, 13, 12, 13, 15, 16, 20],\n  },\n  34: {\n    number: 34,\n    name: \"Nahum\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 3,\n    verses: [15, 13, 19],\n  },\n  35: {\n    number: 35,\n    name: \"Habakkuk\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 3,\n    verses: [17, 20, 19],\n  },\n  36: {\n    number: 36,\n    name: \"Zephaniah\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 3,\n    verses: [18, 15, 20],\n  },\n  37: {\n    number: 37,\n    name: \"Haggai\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 2,\n    verses: [15, 23],\n  },\n  38: {\n    number: 38,\n    name: \"Zechariah\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 14,\n    verses: [21, 13, 10, 14, 11, 15, 14, 23, 17, 12, 17, 14, 9, 21],\n  },\n  39: {\n    number: 39,\n    name: \"Malachi\",\n    testament: Testament.OLD_TESTAMENT,\n    chapters: 4,\n    verses: [14, 17, 18, 6],\n  },\n  40: {\n    number: 40,\n    name: \"Matthew\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 28,\n    verses: [\n      25, 23, 17, 25, 48, 34, 29, 34, 38, 42, 30, 50, 58, 36, 39, 28, 27, 35, 30, 34, 46, 46, 39,\n      51, 46, 75, 66, 20,\n    ],\n  },\n  41: {\n    number: 41,\n    name: \"Mark\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 16,\n    verses: [45, 28, 35, 41, 43, 56, 37, 38, 50, 52, 33, 44, 37, 72, 47, 20],\n  },\n  42: {\n    number: 42,\n    name: \"Luke\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 24,\n    verses: [\n      80, 52, 38, 44, 39, 49, 50, 56, 62, 42, 54, 59, 35, 35, 32, 31, 37, 43, 48, 47, 38, 71, 56,\n      53,\n    ],\n  },\n  43: {\n    number: 43,\n    name: \"John\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 21,\n    verses: [51, 25, 36, 54, 47, 71, 53, 59, 41, 42, 57, 50, 38, 31, 27, 33, 26, 40, 42, 31, 25],\n  },\n  44: {\n    number: 44,\n    name: \"Acts\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 28,\n    verses: [\n      26, 47, 26, 37, 42, 15, 60, 40, 43, 48, 30, 25, 52, 28, 41, 40, 34, 28, 41, 38, 40, 30, 35,\n      27, 27, 32, 44, 31,\n    ],\n  },\n  45: {\n    number: 45,\n    name: \"Romans\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 16,\n    verses: [32, 29, 31, 25, 21, 23, 25, 39, 33, 21, 36, 21, 14, 23, 33, 27],\n  },\n  46: {\n    number: 46,\n    name: \"1 Corinthians\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 16,\n    verses: [31, 16, 23, 21, 13, 20, 40, 13, 27, 33, 34, 31, 13, 40, 58, 24],\n  },\n  47: {\n    number: 47,\n    name: \"2 Corinthians\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 13,\n    verses: [24, 17, 18, 18, 21, 18, 16, 24, 15, 18, 33, 21, 14],\n  },\n  48: {\n    number: 48,\n    name: \"Galatians\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 6,\n    verses: [24, 21, 29, 31, 26, 18],\n  },\n  49: {\n    number: 49,\n    name: \"Ephesians\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 6,\n    verses: [23, 22, 21, 32, 33, 24],\n  },\n  50: {\n    number: 50,\n    name: \"Philippians\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 4,\n    verses: [30, 30, 21, 23],\n  },\n  51: {\n    number: 51,\n    name: \"Colossians\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 4,\n    verses: [29, 23, 25, 18],\n  },\n  52: {\n    number: 52,\n    name: \"1 Thessalonians\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 5,\n    verses: [10, 20, 13, 18, 28],\n  },\n  53: {\n    number: 53,\n    name: \"2 Thessalonians\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 3,\n    verses: [12, 17, 18],\n  },\n  54: {\n    number: 54,\n    name: \"1 Timothy\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 6,\n    verses: [20, 15, 16, 16, 25, 21],\n  },\n  55: {\n    number: 55,\n    name: \"2 Timothy\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 4,\n    verses: [18, 26, 17, 22],\n  },\n  56: {\n    number: 56,\n    name: \"Titus\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 3,\n    verses: [16, 15, 15],\n  },\n  57: {\n    number: 57,\n    name: \"Philemon\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 1,\n    verses: [25],\n  },\n  58: {\n    number: 58,\n    name: \"Hebrews\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 13,\n    verses: [14, 18, 19, 16, 14, 20, 28, 13, 28, 39, 40, 29, 25],\n  },\n  59: {\n    number: 59,\n    name: \"James\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 5,\n    verses: [27, 26, 18, 17, 20],\n  },\n  60: {\n    number: 60,\n    name: \"1 Peter\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 5,\n    verses: [25, 25, 22, 19, 14],\n  },\n  61: {\n    number: 61,\n    name: \"2 Peter\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 3,\n    verses: [21, 22, 18],\n  },\n  62: {\n    number: 62,\n    name: \"1 John\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 5,\n    verses: [10, 29, 24, 21, 21],\n  },\n  63: {\n    number: 63,\n    name: \"2 John\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 1,\n    verses: [13],\n  },\n  64: {\n    number: 64,\n    name: \"3 John\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 1,\n    verses: [14],\n  },\n  65: {\n    number: 65,\n    name: \"Jude\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 1,\n    verses: [25],\n  },\n  66: {\n    number: 66,\n    name: \"Revelation\",\n    testament: Testament.NEW_TESTAMENT,\n    chapters: 22,\n    verses: [20, 29, 22, 11, 14, 17, 17, 13, 21, 11, 19, 17, 18, 20, 8, 21, 18, 24, 21, 15, 27, 21],\n  },\n};\n\n/** Quick lookup by book number to name */\nexport const BOOK_NAMES: Record<number, string> = Object.fromEntries(\n  Object.values(BIBLE_STRUCTURE).map((book) => [book.number, book.name])\n);\n\n/** Reverse lookup by name to book number (lowercase keys) */\nexport const BOOK_NUMBERS: Record<string, number> = Object.fromEntries(\n  Object.values(BIBLE_STRUCTURE).map((book) => [book.name.toLowerCase(), book.number])\n);\n\n/** Bible sections for search result organization */\nexport const SECTION_NAMES: Record<number, BibleSection> = {\n  1: BibleSection.PENTATEUCH,\n  2: BibleSection.HISTORY,\n  3: BibleSection.WISDOM_AND_POETRY,\n  4: BibleSection.MAJOR_PROPHETS,\n  5: BibleSection.MINOR_PROPHETS,\n  6: BibleSection.GOSPELS_AND_ACTS,\n  7: BibleSection.PAULINE_EPISTLES,\n  8: BibleSection.GENERAL_EPISTLES,\n};\n","/**\n * Cache provider interface for LSBible SDK.\n *\n * Allows users to implement custom caching strategies for different\n * deployment environments (Cloudflare Workers, Redis, in-memory, etc.)\n */\n\n/**\n * Cache provider interface.\n *\n * Implement this interface to provide custom caching for the LSBible client.\n *\n * @example\n * ```ts\n * class RedisCacheProvider implements CacheProvider {\n *   async get<T>(key: string): Promise<T | undefined> {\n *     const value = await redis.get(key);\n *     return value ? JSON.parse(value) : undefined;\n *   }\n *\n *   async set<T>(key: string, value: T, ttl: number): Promise<void> {\n *     await redis.set(key, JSON.stringify(value), 'EX', ttl);\n *   }\n * }\n * ```\n */\nexport interface CacheProvider {\n  /**\n   * Get a value from the cache.\n   *\n   * @param key - Cache key\n   * @returns Cached value or undefined if not found/expired\n   */\n  get<T>(key: string): Promise<T | undefined>;\n\n  /**\n   * Set a value in the cache.\n   *\n   * @param key - Cache key\n   * @param value - Value to cache\n   * @param ttl - Time to live in seconds\n   */\n  set<T>(key: string, value: T, ttl: number): Promise<void>;\n}\n\n/**\n * Cache configuration options.\n */\nexport interface CacheOptions {\n  /**\n   * Cache provider implementation.\n   *\n   * If not provided, caching is disabled.\n   */\n  provider?: CacheProvider;\n\n  /**\n   * Default TTL for cache entries (in seconds).\n   *\n   * Can be overridden per-operation.\n   * @default 2592000 (30 days)\n   */\n  defaultTtl?: number;\n\n  /**\n   * Per-operation TTL overrides.\n   */\n  ttl?: {\n    /** TTL for verse lookups */\n    verse?: number;\n    /** TTL for passage lookups */\n    passage?: number;\n    /** TTL for chapter lookups */\n    chapter?: number;\n    /** TTL for search queries */\n    search?: number;\n  };\n}\n\n/**\n * Recommended cache TTL values (in seconds).\n */\nexport const CacheTTL = {\n  /** 1 month - for immutable Bible content (verses, passages, chapters) */\n  BIBLE_CONTENT: 2_592_000,\n  /** 1 week - for search results that may change with API updates */\n  SEARCH_RESULTS: 604_800,\n  /** 1 year - for static resources that never change */\n  STATIC: 31_536_000,\n} as const;\n","/**\n * Custom exceptions for LSBible SDK.\n */\n\n/**\n * Base exception for LSBible SDK errors.\n */\nexport class LSBibleError extends Error {\n  constructor(message: string) {\n    super(message);\n    this.name = \"LSBibleError\";\n    // Maintains proper stack trace for where our error was thrown (only available on V8)\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, this.constructor);\n    }\n  }\n}\n\n/**\n * Raised when a Bible reference is invalid.\n *\n * Examples:\n * - Invalid book name\n * - Chapter number exceeds book's chapter count\n * - Verse number exceeds chapter's verse count\n */\nexport class InvalidReferenceError extends LSBibleError {\n  constructor(message: string) {\n    super(message);\n    this.name = \"InvalidReferenceError\";\n  }\n}\n\n/**\n * Raised when an API request fails.\n *\n * Examples:\n * - HTTP errors (4xx, 5xx)\n * - Network failures\n * - Malformed responses\n */\nexport class APIError extends LSBibleError {\n  constructor(message: string) {\n    super(message);\n    this.name = \"APIError\";\n  }\n}\n\n/**\n * Raised when build ID cannot be determined.\n *\n * The Next.js build ID is required for API requests but may change\n * with deployments. This error indicates the SDK couldn't auto-detect it.\n */\nexport class BuildIDError extends LSBibleError {\n  constructor(message: string) {\n    super(message);\n    this.name = \"BuildIDError\";\n  }\n}\n","/**\n * Zod schemas and TypeScript types for LSBible API data structures.\n *\n * Provides runtime validation and type inference for all API responses.\n */\n\nimport { z } from \"zod\";\nimport { BIBLE_STRUCTURE, BOOK_NAMES } from \"./books.js\";\n\n/**\n * Enumeration of all 66 Bible books for type-safe API calls.\n */\nexport enum BookName {\n  // Old Testament\n  GENESIS = \"Genesis\",\n  EXODUS = \"Exodus\",\n  LEVITICUS = \"Leviticus\",\n  NUMBERS = \"Numbers\",\n  DEUTERONOMY = \"Deuteronomy\",\n  JOSHUA = \"Joshua\",\n  JUDGES = \"Judges\",\n  RUTH = \"Ruth\",\n  SAMUEL_1 = \"1 Samuel\",\n  SAMUEL_2 = \"2 Samuel\",\n  KINGS_1 = \"1 Kings\",\n  KINGS_2 = \"2 Kings\",\n  CHRONICLES_1 = \"1 Chronicles\",\n  CHRONICLES_2 = \"2 Chronicles\",\n  EZRA = \"Ezra\",\n  NEHEMIAH = \"Nehemiah\",\n  ESTHER = \"Esther\",\n  JOB = \"Job\",\n  PSALMS = \"Psalms\",\n  PROVERBS = \"Proverbs\",\n  ECCLESIASTES = \"Ecclesiastes\",\n  SONG_OF_SONGS = \"Song of Songs\",\n  ISAIAH = \"Isaiah\",\n  JEREMIAH = \"Jeremiah\",\n  LAMENTATIONS = \"Lamentations\",\n  EZEKIEL = \"Ezekiel\",\n  DANIEL = \"Daniel\",\n  HOSEA = \"Hosea\",\n  JOEL = \"Joel\",\n  AMOS = \"Amos\",\n  OBADIAH = \"Obadiah\",\n  JONAH = \"Jonah\",\n  MICAH = \"Micah\",\n  NAHUM = \"Nahum\",\n  HABAKKUK = \"Habakkuk\",\n  ZEPHANIAH = \"Zephaniah\",\n  HAGGAI = \"Haggai\",\n  ZECHARIAH = \"Zechariah\",\n  MALACHI = \"Malachi\",\n  // New Testament\n  MATTHEW = \"Matthew\",\n  MARK = \"Mark\",\n  LUKE = \"Luke\",\n  JOHN = \"John\",\n  ACTS = \"Acts\",\n  ROMANS = \"Romans\",\n  CORINTHIANS_1 = \"1 Corinthians\",\n  CORINTHIANS_2 = \"2 Corinthians\",\n  GALATIANS = \"Galatians\",\n  EPHESIANS = \"Ephesians\",\n  PHILIPPIANS = \"Philippians\",\n  COLOSSIANS = \"Colossians\",\n  THESSALONIANS_1 = \"1 Thessalonians\",\n  THESSALONIANS_2 = \"2 Thessalonians\",\n  TIMOTHY_1 = \"1 Timothy\",\n  TIMOTHY_2 = \"2 Timothy\",\n  TITUS = \"Titus\",\n  PHILEMON = \"Philemon\",\n  HEBREWS = \"Hebrews\",\n  JAMES = \"James\",\n  PETER_1 = \"1 Peter\",\n  PETER_2 = \"2 Peter\",\n  JOHN_1 = \"1 John\",\n  JOHN_2 = \"2 John\",\n  JOHN_3 = \"3 John\",\n  JUDE = \"Jude\",\n  REVELATION = \"Revelation\",\n}\n\n/**\n * Zod schema for VerseReference with validation.\n *\n * Validates that:\n * - Book number is 1-66\n * - Chapter exists in the book\n * - Verse exists in the chapter\n */\nexport const VerseReferenceSchema = z\n  .object({\n    bookNumber: z.number().int().min(1).max(66),\n    chapter: z.number().int().min(1),\n    verse: z.number().int().min(1),\n  })\n  .refine(\n    (data) => {\n      const bookInfo = BIBLE_STRUCTURE[data.bookNumber];\n      if (!bookInfo) return false;\n      return data.chapter <= bookInfo.chapters;\n    },\n    (data) => {\n      const bookInfo = BIBLE_STRUCTURE[data.bookNumber];\n      const bookName = BOOK_NAMES[data.bookNumber];\n      return {\n        message: `${bookName} only has ${bookInfo?.chapters} chapters, but chapter ${data.chapter} was requested`,\n        path: [\"chapter\"],\n      };\n    }\n  )\n  .refine(\n    (data) => {\n      const bookInfo = BIBLE_STRUCTURE[data.bookNumber];\n      if (!bookInfo) return false;\n      const maxVerse = bookInfo.verses[data.chapter - 1];\n      if (!maxVerse) return false;\n      return data.verse <= maxVerse;\n    },\n    (data) => {\n      const bookInfo = BIBLE_STRUCTURE[data.bookNumber];\n      const bookName = BOOK_NAMES[data.bookNumber];\n      const maxVerse = bookInfo?.verses[data.chapter - 1];\n      return {\n        message: `${bookName} ${data.chapter} only has ${maxVerse} verses, but verse ${data.verse} was requested`,\n        path: [\"verse\"],\n      };\n    }\n  );\n\n/** Type for VerseReference inferred from Zod schema */\nexport type VerseReference = z.infer<typeof VerseReferenceSchema> & {\n  /** Get the book name from the book number */\n  readonly bookName: BookName;\n  /** String representation (e.g., \"John 3:16\") */\n  toString(): string;\n};\n\n/**\n * Create a VerseReference with computed properties.\n */\nexport function createVerseReference(data: z.infer<typeof VerseReferenceSchema>): VerseReference {\n  const validated = VerseReferenceSchema.parse(data);\n  return {\n    ...validated,\n    get bookName(): BookName {\n      return (\n        BookName[BOOK_NAMES[this.bookNumber] as keyof typeof BookName] ||\n        (BOOK_NAMES[this.bookNumber] as BookName)\n      );\n    },\n    toString(): string {\n      return `${BOOK_NAMES[this.bookNumber]} ${this.chapter}:${this.verse}`;\n    },\n  };\n}\n\n/**\n * Zod schema for TextSegment.\n */\nexport const TextSegmentSchema = z.object({\n  text: z.string(),\n  isRedLetter: z.boolean().default(false), // Words of Jesus in red\n  isItalic: z.boolean().default(false), // Italicized text (clarifications)\n  isBold: z.boolean().default(false), // Bold text\n  isSmallCaps: z.boolean().default(false), // LORD (Yahweh) in small caps\n});\n\n/** Type for TextSegment */\nexport type TextSegment = z.infer<typeof TextSegmentSchema>;\n\n/**\n * Zod schema for VerseContent.\n */\nexport const VerseContentSchema = z.object({\n  reference: VerseReferenceSchema,\n  verseNumber: z.number().int().min(1),\n  segments: z.array(TextSegmentSchema),\n  hasSubheading: z.boolean().default(false),\n  subheadingText: z.string().nullable().default(null),\n  isPoetry: z.boolean().default(false),\n  isProse: z.boolean().default(false),\n  chapterStart: z.boolean().default(false), // First verse of chapter\n});\n\n/** Type for VerseContent with computed properties */\nexport type VerseContent = Omit<z.infer<typeof VerseContentSchema>, \"reference\"> & {\n  reference: VerseReference;\n  /** Get plain text without formatting */\n  readonly plainText: string;\n  /** Get text with simple formatting markers */\n  readonly formattedText: string;\n};\n\n/**\n * Create a VerseContent with computed properties.\n */\nexport function createVerseContent(data: z.infer<typeof VerseContentSchema>): VerseContent {\n  const validated = VerseContentSchema.parse(data);\n  const reference = createVerseReference(validated.reference);\n\n  return {\n    ...validated,\n    reference,\n    get plainText(): string {\n      return this.segments.map((seg) => seg.text).join(\" \");\n    },\n    get formattedText(): string {\n      const parts = this.segments.map((seg) => {\n        let text = seg.text;\n        if (seg.isItalic) text = `[${text}]`;\n        if (seg.isRedLetter) text = `\"${text}\"`;\n        return text;\n      });\n      return parts.join(\" \");\n    },\n  };\n}\n\n/**\n * Zod schema for Passage.\n */\nexport const PassageSchema = z.object({\n  fromRef: VerseReferenceSchema,\n  toRef: VerseReferenceSchema,\n  title: z.string(),\n  verses: z.array(VerseContentSchema),\n});\n\n/** Type for Passage with computed properties */\nexport type Passage = Omit<z.infer<typeof PassageSchema>, \"fromRef\" | \"toRef\" | \"verses\"> & {\n  fromRef: VerseReference;\n  toRef: VerseReference;\n  verses: VerseContent[];\n  /** Check if this passage is a single verse */\n  readonly isSingleVerse: boolean;\n  /** Get the number of verses in this passage */\n  readonly verseCount: number;\n};\n\n/**\n * Create a Passage with computed properties.\n */\nexport function createPassage(data: z.infer<typeof PassageSchema>): Passage {\n  const validated = PassageSchema.parse(data);\n  const fromRef = createVerseReference(validated.fromRef);\n  const toRef = createVerseReference(validated.toRef);\n  const verses = validated.verses.map((v) => createVerseContent(v));\n\n  return {\n    ...validated,\n    fromRef,\n    toRef,\n    verses,\n    get isSingleVerse(): boolean {\n      return (\n        this.fromRef.bookNumber === this.toRef.bookNumber &&\n        this.fromRef.chapter === this.toRef.chapter &&\n        this.fromRef.verse === this.toRef.verse\n      );\n    },\n    get verseCount(): number {\n      return this.verses.length;\n    },\n  };\n}\n\n/**\n * Zod schema for SearchResponse.\n *\n * For text searches, includes rich metadata about result distribution across\n * Bible sections and books. For Bible reference lookups, these fields are undefined.\n */\nexport const SearchResponseSchema = z.object({\n  query: z.string(),\n  matchCount: z.number().int().min(0),\n  passages: z.array(PassageSchema),\n  durationMs: z.number().int().min(0),\n  timestamp: z.number().int(),\n  // Optional metadata for text searches\n  totalCount: z.number().int().min(0).optional(),\n  filteredCount: z.number().int().min(0).optional(),\n  countsByBook: z.record(z.string(), z.number()).optional(),\n  countsBySection: z.record(z.string(), z.number()).optional(),\n});\n\n/** Type for SearchResponse with computed properties */\nexport type SearchResponse = Omit<z.infer<typeof SearchResponseSchema>, \"passages\"> & {\n  passages: Passage[];\n  /** Get the number of passages returned */\n  readonly passageCount: number;\n  /** Get total number of verses across all passages */\n  readonly totalVerses: number;\n  /** Check if this response includes search distribution metadata */\n  readonly hasSearchMetadata: boolean;\n};\n\n/**\n * Create a SearchResponse with computed properties.\n */\nexport function createSearchResponse(data: z.infer<typeof SearchResponseSchema>): SearchResponse {\n  const validated = SearchResponseSchema.parse(data);\n  const passages = validated.passages.map((p) => createPassage(p));\n\n  return {\n    ...validated,\n    passages,\n    get passageCount(): number {\n      return this.passages.length;\n    },\n    get totalVerses(): number {\n      return this.passages.reduce((sum, p) => sum + p.verseCount, 0);\n    },\n    get hasSearchMetadata(): boolean {\n      return this.totalCount !== undefined;\n    },\n  };\n}\n","/**\n * HTML parser for LSBible passages.\n */\n\nimport { parseHTML } from \"linkedom\";\nimport {\n  type TextSegment,\n  type VerseContent,\n  createVerseContent,\n  createVerseReference,\n} from \"./models.js\";\n\n// Type aliases for linkedom DOM elements\ntype DOMElement = ReturnType<typeof parseHTML>[\"document\"][\"body\"];\ntype DOMNode = ReturnType<typeof parseHTML>[\"document\"][\"body\"][\"childNodes\"][number];\ntype DOMDocument = ReturnType<typeof parseHTML>[\"document\"];\n\n/**\n * Parse search result HTML snippet into plain text.\n *\n * Search results include HTML snippets with <b> tags highlighting\n * matched terms. This function strips the tags but preserves the text.\n *\n * @param html - HTML snippet from search results (e.g., \"For God so <b>loved</b> the world\")\n * @returns Plain text with highlighting removed (e.g., \"For God so loved the world\")\n */\nexport function parseSearchResultHtml(html: string): string {\n  // Wrap in proper HTML structure for linkedom to parse correctly\n  const { document } = parseHTML(`<!DOCTYPE html><html><body>${html}</body></html>`);\n  // Get text content, which automatically strips tags but preserves text\n  return document.body.textContent?.trim() ?? \"\";\n}\n\n/**\n * Parse passageHtml into structured verse objects.\n *\n * Extracts:\n * - Verse references from data-key attributes\n * - Verse numbers from data-verse attributes\n * - Text formatting (red-letter, italic, bold)\n * - Subheadings and chapter markers\n * - Poetry vs prose structure\n *\n * @param html - The passageHtml string from API\n * @returns List of VerseContent objects\n */\nexport function parsePassageHtml(html: string): VerseContent[] {\n  // Wrap in proper HTML structure for linkedom to parse correctly\n  const { document } = parseHTML(`<!DOCTYPE html><html><body>${html}</body></html>`);\n  const verses: VerseContent[] = [];\n\n  const verseSpans = document.querySelectorAll(\"span.verse\");\n  for (const verseSpan of verseSpans) {\n    const verse = parseVerse(verseSpan as DOMElement, document);\n    verses.push(verse);\n  }\n\n  return verses;\n}\n\n/**\n * Parse a single verse span into VerseContent.\n */\nfunction parseVerse(verseSpan: DOMElement, _document: DOMDocument): VerseContent {\n  // Extract verse reference from data-key attribute\n  const dataKey = verseSpan.getAttribute(\"data-key\");\n  if (!dataKey) {\n    throw new Error(\"Verse span missing data-key attribute\");\n  }\n  const reference = parseVerseReference(dataKey);\n\n  // Extract verse number\n  const verseNumElem = verseSpan.querySelector(\"small[data-verse]\");\n  let verseNumber: number;\n  if (verseNumElem) {\n    verseNumber = Number.parseInt(verseNumElem.getAttribute(\"data-verse\") ?? \"0\", 10);\n  } else {\n    // First verses lack <small> tag - fallback to data-key reference\n    verseNumber = reference.verse;\n  }\n\n  // Check for subheading\n  let hasSubheading = false;\n  let subheadingText: string | null = null;\n  const prevSibling = verseSpan.previousElementSibling;\n  if (prevSibling?.classList.contains(\"subhead\")) {\n    hasSubheading = true;\n    subheadingText = prevSibling.textContent?.trim() ?? null;\n  }\n\n  // Check for poetry vs prose\n  let currentNode: DOMElement | null = verseSpan;\n  let isPoetry = false;\n  while (currentNode) {\n    if (currentNode.classList?.contains(\"poetry\")) {\n      isPoetry = true;\n      break;\n    }\n    currentNode = currentNode.parentElement as DOMElement | null;\n  }\n\n  const isProse = verseSpan.querySelector(\".prose\") !== null;\n\n  // Check if chapter start (first verses have element with class \"chapter-number\")\n  const chapterStart = verseSpan.querySelector(\".chapter-number\") !== null;\n\n  // Extract text segments\n  const segments = extractSegments(verseSpan);\n\n  return createVerseContent({\n    reference,\n    verseNumber,\n    segments,\n    hasSubheading,\n    subheadingText,\n    isPoetry,\n    isProse,\n    chapterStart,\n  });\n}\n\n/**\n * Parse data-key attribute into VerseReference.\n * Format: \"43-003-016\" (book-chapter-verse)\n */\nfunction parseVerseReference(dataKey: string) {\n  const parts = dataKey.split(\"-\");\n  if (parts.length !== 3) {\n    throw new Error(`Invalid data-key format: ${dataKey}`);\n  }\n\n  const bookNumber = Number.parseInt(parts[0] ?? \"0\", 10);\n  const chapter = Number.parseInt(parts[1] ?? \"0\", 10);\n  const verse = Number.parseInt(parts[2] ?? \"0\", 10);\n\n  return createVerseReference({ bookNumber, chapter, verse });\n}\n\n/**\n * Extract text segments with formatting metadata.\n */\nfunction extractSegments(element: DOMElement): TextSegment[] {\n  const segments: TextSegment[] = [];\n\n  // Remove verse number element to avoid including it in text\n  for (const smallElem of element.querySelectorAll(\"small[data-verse]\")) {\n    smallElem.remove();\n  }\n\n  // Remove chapter number elements\n  for (const chapterElem of element.querySelectorAll(\".chapter-number\")) {\n    chapterElem.remove();\n  }\n\n  // Remove subheading elements\n  for (const subheadElem of element.querySelectorAll(\".subhead\")) {\n    subheadElem.remove();\n  }\n\n  // Process remaining text and formatting\n  extractTextNodes(element, segments);\n\n  return segments;\n}\n\n/**\n * Recursively extract text nodes with formatting.\n */\nfunction extractTextNodes(node: DOMNode, segments: TextSegment[]): void {\n  for (const child of node.childNodes) {\n    if (child.nodeType === 3) {\n      // Text node\n      const text = child.textContent?.trim();\n      if (!text) continue;\n\n      // Determine formatting based on parent elements\n      let isRedLetter = false;\n      let isItalic = false;\n      let isBold = false;\n      let isSmallCaps = false;\n\n      let parent = child.parentElement;\n      while (parent) {\n        if (parent.classList.contains(\"red-letter\")) {\n          isRedLetter = true;\n        }\n        if (parent.tagName === \"I\" || parent.classList.contains(\"italic\")) {\n          isItalic = true;\n        }\n        if (parent.tagName === \"B\" || parent.classList.contains(\"bold\")) {\n          isBold = true;\n        }\n        if (parent.classList.contains(\"small-caps\")) {\n          isSmallCaps = true;\n        }\n        parent = parent.parentElement;\n      }\n\n      segments.push({\n        text,\n        isRedLetter,\n        isItalic,\n        isBold,\n        isSmallCaps,\n      });\n    } else if (child.nodeType === 1) {\n      // Element node - recurse\n      extractTextNodes(child, segments);\n    }\n  }\n}\n","/**\n * Validators for Bible references and book names.\n */\n\nimport { BIBLE_STRUCTURE, BOOK_NUMBERS } from \"./books.js\";\nimport { InvalidReferenceError } from \"./exceptions.js\";\nimport { BookName, type VerseReference, createVerseReference } from \"./models.js\";\n\n/**\n * Normalize book name for API calls.\n *\n * @param book - BookName enum or string\n * @returns Normalized book name string\n * @throws InvalidReferenceError if book name is invalid\n *\n * @example\n * ```ts\n * normalizeBookName(BookName.JOHN)  // \"John\"\n * normalizeBookName(\"john\")         // \"John\"\n * normalizeBookName(\"1 john\")       // \"1 John\"\n * ```\n */\nexport function normalizeBookName(book: BookName | string): string {\n  if (typeof book === \"string\" && Object.values(BookName).includes(book as BookName)) {\n    // It's already a valid BookName value\n    return book;\n  }\n\n  if (typeof book !== \"string\") {\n    throw new InvalidReferenceError(`Invalid book type: ${typeof book}`);\n  }\n\n  // Normalize string input\n  const bookStr = book.trim();\n  const bookLower = bookStr.toLowerCase();\n\n  // Try direct lookup\n  if (bookLower in BOOK_NUMBERS) {\n    const bookNum = BOOK_NUMBERS[bookLower];\n    if (bookNum) {\n      return BIBLE_STRUCTURE[bookNum]?.name ?? book;\n    }\n  }\n\n  // Try fuzzy matching (handle \"1John\" vs \"1 John\", \"1john\" vs \"1 John\")\n  const normalized = bookLower.split(/\\s+/).join(\" \");\n  if (normalized in BOOK_NUMBERS) {\n    const bookNum = BOOK_NUMBERS[normalized];\n    if (bookNum) {\n      return BIBLE_STRUCTURE[bookNum]?.name ?? book;\n    }\n  }\n\n  // Try adding space after leading digit (e.g., \"1john\" -> \"1 john\")\n  if (/^\\d/.test(bookLower)) {\n    const spaced = bookLower.replace(/^(\\d+)([a-z])/, \"$1 $2\");\n    if (spaced in BOOK_NUMBERS) {\n      const bookNum = BOOK_NUMBERS[spaced];\n      if (bookNum) {\n        return BIBLE_STRUCTURE[bookNum]?.name ?? book;\n      }\n    }\n  }\n\n  throw new InvalidReferenceError(`Unknown book: ${book}`);\n}\n\n/**\n * Get book number from book name.\n *\n * @param book - BookName enum or string\n * @returns Book number (1-66)\n * @throws InvalidReferenceError if book name is invalid\n */\nexport function getBookNumber(book: BookName | string): number {\n  const normalized = normalizeBookName(book);\n  const bookNum = BOOK_NUMBERS[normalized.toLowerCase()];\n  if (!bookNum) {\n    throw new InvalidReferenceError(`Unknown book: ${book}`);\n  }\n  return bookNum;\n}\n\n/**\n * Validate and create a VerseReference.\n *\n * @param book - Book name\n * @param chapter - Chapter number\n * @param verse - Verse number\n * @returns Validated VerseReference object\n * @throws InvalidReferenceError if reference is invalid\n */\nexport function validateReference(\n  book: BookName | string,\n  chapter: number,\n  verse: number\n): VerseReference {\n  try {\n    const bookNumber = getBookNumber(book);\n\n    // Create VerseReference (Zod validates chapter/verse)\n    return createVerseReference({\n      bookNumber,\n      chapter,\n      verse,\n    });\n  } catch (error) {\n    if (error instanceof Error) {\n      throw new InvalidReferenceError(error.message);\n    }\n    throw error;\n  }\n}\n","/**\n * LSBible API client.\n */\n\nimport { BIBLE_STRUCTURE } from \"./books.js\";\nimport { type CacheOptions, type CacheProvider, CacheTTL } from \"./cache/interface.js\";\nimport { APIError, BuildIDError } from \"./exceptions.js\";\nimport {\n  type BookName,\n  type Passage,\n  type SearchResponse,\n  type TextSegment,\n  createPassage,\n  createSearchResponse,\n  createVerseContent,\n  createVerseReference,\n} from \"./models.js\";\nimport { parsePassageHtml, parseSearchResultHtml } from \"./parser.js\";\nimport { getBookNumber, normalizeBookName, validateReference } from \"./validators.js\";\n\n/** Client configuration options */\nexport interface LSBibleClientOptions {\n  /** Request timeout in seconds (default: 30) */\n  timeout?: number;\n  /** Optional build ID (auto-detected if not provided) */\n  buildId?: string;\n  /** Optional custom headers */\n  headers?: Record<string, string>;\n  /** Optional cache configuration */\n  cache?: CacheOptions;\n}\n\n/**\n * Get SDK version for User-Agent header.\n */\nfunction getSdkVersion(): string {\n  // In production, this would be replaced by the actual version\n  // For now, return a placeholder\n  return \"0.1.0\";\n}\n\n/**\n * Build User-Agent string for SDK requests.\n *\n * Format: lsbible-typescript/VERSION (Runtime; +https://github.com/kdcokenny/lsbible)\n */\nfunction getUserAgent(): string {\n  const version = getSdkVersion();\n  // Detect runtime safely using 'in' operator\n  const runtime = \"Bun\" in globalThis ? \"Bun\" : \"Deno\" in globalThis ? \"Deno\" : \"Node.js\";\n  return `lsbible-typescript/${version} (${runtime}; +https://github.com/kdcokenny/lsbible)`;\n}\n\n/**\n * Client for interacting with the LSBible API.\n *\n * @example\n * ```ts\n * const client = new LSBibleClient();\n *\n * // Get a single verse\n * const verse = await client.getVerse(BookName.JOHN, 3, 16);\n *\n * // Search for text\n * const results = await client.search(\"love\");\n * ```\n */\nexport class LSBibleClient {\n  private static readonly BASE_URL = \"https://read.lsbible.org\";\n\n  private cacheProvider: CacheProvider | undefined;\n  private cacheTtls: Required<NonNullable<CacheOptions[\"ttl\"]>>;\n  private timeout: number;\n  private buildId: string | undefined;\n  private buildIdFetched: boolean;\n  private headers: Record<string, string>;\n\n  /**\n   * Create a new LSBible client.\n   *\n   * @param options - Client configuration options\n   */\n  constructor(options: LSBibleClientOptions = {}) {\n    this.cacheProvider = options.cache?.provider ?? undefined;\n    this.cacheTtls = {\n      verse: options.cache?.ttl?.verse ?? CacheTTL.BIBLE_CONTENT,\n      passage: options.cache?.ttl?.passage ?? CacheTTL.BIBLE_CONTENT,\n      chapter: options.cache?.ttl?.chapter ?? CacheTTL.BIBLE_CONTENT,\n      search: options.cache?.ttl?.search ?? CacheTTL.SEARCH_RESULTS,\n    };\n    this.timeout = (options.timeout ?? 30) * 1000; // Convert to milliseconds\n    this.buildId = options.buildId;\n    this.buildIdFetched = options.buildId !== undefined;\n\n    // Build default headers\n    this.headers = {\n      \"User-Agent\": getUserAgent(),\n      Accept: \"*/*\",\n      ...options.headers,\n    };\n  }\n\n  /**\n   * Get the Next.js build ID.\n   *\n   * Strategies:\n   * 1. Use cached/provided build ID\n   * 2. Extract from homepage HTML (__NEXT_DATA__ script)\n   * 3. Try to find it in script tags\n   *\n   * @throws BuildIDError if build ID cannot be determined\n   */\n  private async getBuildId(): Promise<string> {\n    if (this.buildId && this.buildIdFetched) {\n      return this.buildId;\n    }\n\n    // Try to extract from homepage\n    try {\n      const controller = new AbortController();\n      const timeoutId = setTimeout(() => controller.abort(), this.timeout);\n\n      const response = await fetch(LSBibleClient.BASE_URL, {\n        signal: controller.signal,\n        headers: this.headers,\n      });\n\n      clearTimeout(timeoutId);\n\n      if (!response.ok) {\n        throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n      }\n\n      const html = await response.text();\n\n      // Look for __NEXT_DATA__ script tag\n      const buildIdMatch = html.match(/\"buildId\":\"([^\"]+)\"/);\n      if (buildIdMatch?.[1]) {\n        this.buildId = buildIdMatch[1];\n        this.buildIdFetched = true;\n        return this.buildId;\n      }\n\n      // Fallback: Try to find build ID in any script tag\n      const scriptMatch = html.match(/\\/_next\\/data\\/([^/]+)\\//);\n      if (scriptMatch?.[1]) {\n        this.buildId = scriptMatch[1];\n        this.buildIdFetched = true;\n        return this.buildId;\n      }\n    } catch (error) {\n      throw new BuildIDError(\n        `Failed to fetch build ID: ${error instanceof Error ? error.message : String(error)}`\n      );\n    }\n\n    throw new BuildIDError(\"Could not determine build ID from homepage\");\n  }\n\n  /**\n   * Cache wrapper for async operations.\n   *\n   * @param key - Cache key\n   * @param ttl - Time to live in seconds\n   * @param fetcher - Function to fetch fresh data\n   * @returns Cached or fresh data\n   */\n  private async withCache<T>(key: string, ttl: number, fetcher: () => Promise<T>): Promise<T> {\n    // If no cache provider, just fetch\n    if (!this.cacheProvider) {\n      return fetcher();\n    }\n\n    // Try to get from cache\n    const cached = await this.cacheProvider.get<T>(key);\n    if (cached !== undefined) {\n      return cached;\n    }\n\n    // Fetch fresh data\n    const data = await fetcher();\n\n    // Store in cache\n    await this.cacheProvider.set(key, data, ttl);\n\n    return data;\n  }\n\n  /**\n   * Make a request to the LSBible API.\n   *\n   * @param query - Search query or verse reference\n   * @returns API response JSON\n   * @throws APIError if request fails\n   */\n  private async makeRequest(query: string): Promise<unknown> {\n    // Get build ID\n    const buildId = await this.getBuildId();\n\n    // Construct URL\n    const url = new URL(`${LSBibleClient.BASE_URL}/_next/data/${buildId}/index.json`);\n    url.searchParams.set(\"q\", query);\n\n    // Make request\n    try {\n      const controller = new AbortController();\n      const timeoutId = setTimeout(() => controller.abort(), this.timeout);\n\n      const response = await fetch(url.toString(), {\n        signal: controller.signal,\n        headers: {\n          ...this.headers,\n          referer: `${LSBibleClient.BASE_URL}/`,\n          \"x-nextjs-data\": \"1\",\n        },\n      });\n\n      clearTimeout(timeoutId);\n\n      if (!response.ok) {\n        throw new APIError(\n          `API request failed with status ${response.status}: ${response.statusText}`\n        );\n      }\n\n      return await response.json();\n    } catch (error) {\n      if (error instanceof APIError) {\n        throw error;\n      }\n      throw new APIError(\n        `API request failed: ${error instanceof Error ? error.message : String(error)}`\n      );\n    }\n  }\n\n  /**\n   * Detect if response is from text search or Bible reference lookup.\n   *\n   * Text searches have initialItems array with metadata.\n   * Bible reference lookups have passages array with full HTML.\n   */\n  private isTextSearch(pageProps: Record<string, unknown>): boolean {\n    return \"initialItems\" in pageProps && \"totalCount\" in pageProps;\n  }\n\n  /**\n   * Parse text search results from initialItems format.\n   */\n  private parseSearchResults(pageProps: Record<string, unknown>, query: string): SearchResponse {\n    const passages: Passage[] = [];\n    const initialItems = (pageProps.initialItems as Array<Record<string, unknown>>) ?? [];\n\n    // Parse each search result item\n    for (const item of initialItems) {\n      // Parse the key (e.g., \"43-003-016\" -> John 3:16)\n      const key = item.key as string;\n      const parts = key.split(\"-\");\n      if (parts.length !== 3) continue;\n\n      const bookNumber = Number.parseInt(parts[0] ?? \"0\", 10);\n      const chapter = Number.parseInt(parts[1] ?? \"0\", 10);\n      const verse = Number.parseInt(parts[2] ?? \"0\", 10);\n\n      // Create verse reference\n      const verseRef = createVerseReference({ bookNumber, chapter, verse });\n\n      // Parse HTML snippet to plain text\n      const htmlSnippet = (item.html as string) ?? \"\";\n      const plainText = parseSearchResultHtml(htmlSnippet);\n\n      // Create a minimal VerseContent\n      const segment: TextSegment = {\n        text: plainText,\n        isRedLetter: false,\n        isItalic: false,\n        isBold: false,\n        isSmallCaps: false,\n      };\n      const verseContent = createVerseContent({\n        reference: verseRef,\n        verseNumber: verse,\n        segments: [segment],\n        hasSubheading: false,\n        subheadingText: null,\n        isPoetry: false,\n        isProse: false,\n        chapterStart: false,\n      });\n\n      // Create a single-verse passage\n      passages.push(\n        createPassage({\n          fromRef: verseRef,\n          toRef: verseRef,\n          title: verseRef.toString(),\n          verses: [verseContent],\n        })\n      );\n    }\n\n    // Extract metadata\n    const totalCount = (pageProps.totalCount as number) ?? 0;\n    const filteredCount = (pageProps.filteredCount as number) ?? 0;\n    const countsByBook = pageProps.countsByBook as Record<string, number> | undefined;\n    const countsBySection = pageProps.countsBySection as Record<string, number> | undefined;\n\n    return createSearchResponse({\n      query,\n      matchCount: totalCount,\n      passages,\n      durationMs: (pageProps.duration as number) ?? 0,\n      timestamp: (pageProps.start as number) ?? 0,\n      totalCount,\n      filteredCount,\n      countsByBook,\n      countsBySection,\n    });\n  }\n\n  /**\n   * Parse Bible reference lookup results from passages format.\n   */\n  private parseReferenceResults(pageProps: Record<string, unknown>, query: string): SearchResponse {\n    const passages: Passage[] = [];\n    const passagesData = (pageProps.passages as Array<Record<string, unknown>>) ?? [];\n\n    for (const passageData of passagesData) {\n      const fromData = passageData.from as Record<string, number>;\n      const toData = passageData.to as Record<string, number>;\n\n      const fromRef = createVerseReference({\n        bookNumber: fromData.bn ?? 0,\n        chapter: fromData.cn ?? 0,\n        verse: fromData.vn ?? 0,\n      });\n\n      const toRef = createVerseReference({\n        bookNumber: toData.bn ?? 0,\n        chapter: toData.cn ?? 0,\n        verse: toData.vn ?? 0,\n      });\n\n      // Parse HTML to get verse content\n      const passageHtml = (passageData.passageHtml as string) ?? \"\";\n      const verses = parsePassageHtml(passageHtml);\n\n      passages.push(\n        createPassage({\n          fromRef,\n          toRef,\n          title: (passageData.title as string) ?? \"\",\n          verses,\n        })\n      );\n    }\n\n    return createSearchResponse({\n      query,\n      matchCount: (pageProps.searchMatchCount as number) ?? 0,\n      passages,\n      durationMs: (pageProps.duration as number) ?? 0,\n      timestamp: (pageProps.start as number) ?? 0,\n    });\n  }\n\n  /**\n   * Parse API response into SearchResponse.\n   */\n  private parseResponse(data: unknown, query: string): SearchResponse {\n    const responseData = data as Record<string, unknown>;\n    const pageProps = (responseData.pageProps as Record<string, unknown>) ?? {};\n\n    if (this.isTextSearch(pageProps)) {\n      return this.parseSearchResults(pageProps, query);\n    }\n    return this.parseReferenceResults(pageProps, query);\n  }\n\n  /**\n   * Search for passages containing text.\n   *\n   * @param query - Search text (e.g., \"love\", \"faith\")\n   * @returns SearchResponse with structured passage data\n   * @throws APIError if API request fails\n   */\n  async search(query: string): Promise<SearchResponse> {\n    return this.withCache(`search:${query}`, this.cacheTtls.search, async () => {\n      const data = await this.makeRequest(query);\n      return this.parseResponse(data, query);\n    });\n  }\n\n  /**\n   * Get a specific verse with validated parameters.\n   *\n   * @param book - Book name as enum or string\n   * @param chapter - Chapter number (validated against book)\n   * @param verse - Verse number (validated against chapter)\n   * @returns Single Passage containing the verse\n   * @throws InvalidReferenceError if book/chapter/verse combination is invalid\n   * @throws APIError if API request fails\n   *\n   * @example\n   * ```ts\n   * // Using enum (recommended - type-safe with autocomplete)\n   * const passage = await client.getVerse(BookName.JOHN, 3, 16);\n   *\n   * // Using string (validated at runtime)\n   * const passage2 = await client.getVerse(\"John\", 3, 16);\n   * ```\n   */\n  async getVerse(book: BookName | string, chapter: number, verse: number): Promise<Passage> {\n    // Validate reference\n    validateReference(book, chapter, verse);\n\n    // Construct query\n    const bookName = normalizeBookName(book);\n    const query = `${bookName} ${chapter}:${verse}`;\n\n    return this.withCache(`verse:${query}`, this.cacheTtls.verse, async () => {\n      // Make request\n      const response = await this.search(query);\n\n      // Return first passage (should be only one for single verse)\n      if (response.passages.length === 0) {\n        throw new APIError(`No passage found for ${query}`);\n      }\n\n      const passage = response.passages[0];\n      if (!passage) {\n        throw new APIError(`No passage found for ${query}`);\n      }\n\n      return passage;\n    });\n  }\n\n  /**\n   * Get a passage spanning multiple verses.\n   *\n   * @param fromBook - Starting book\n   * @param fromChapter - Starting chapter\n   * @param fromVerse - Starting verse\n   * @param toBook - Ending book\n   * @param toChapter - Ending chapter\n   * @param toVerse - Ending verse\n   * @returns Passage containing all verses in range\n   * @throws InvalidReferenceError if any reference is invalid\n   * @throws APIError if API request fails\n   *\n   * @example\n   * ```ts\n   * // Get John 3:16-18\n   * const passage = await client.getPassage(\n   *   BookName.JOHN, 3, 16,\n   *   BookName.JOHN, 3, 18\n   * );\n   * ```\n   */\n  async getPassage(\n    fromBook: BookName | string,\n    fromChapter: number,\n    fromVerse: number,\n    toBook: BookName | string,\n    toChapter: number,\n    toVerse: number\n  ): Promise<Passage> {\n    // Validate references\n    const fromRef = validateReference(fromBook, fromChapter, fromVerse);\n    const toRef = validateReference(toBook, toChapter, toVerse);\n\n    // Construct query\n    const fromBookName = normalizeBookName(fromBook);\n    const toBookName = normalizeBookName(toBook);\n\n    let query: string;\n    if (fromRef.bookNumber === toRef.bookNumber) {\n      // Same book\n      if (fromChapter === toChapter) {\n        // Same chapter\n        query = `${fromBookName} ${fromChapter}:${fromVerse}-${toVerse}`;\n      } else {\n        // Different chapters\n        query = `${fromBookName} ${fromChapter}:${fromVerse}-${toChapter}:${toVerse}`;\n      }\n    } else {\n      // Different books\n      query = `${fromBookName} ${fromChapter}:${fromVerse}-${toBookName} ${toChapter}:${toVerse}`;\n    }\n\n    return this.withCache(`passage:${query}`, this.cacheTtls.passage, async () => {\n      // Make request\n      const response = await this.search(query);\n\n      // Return first passage\n      if (response.passages.length === 0) {\n        throw new APIError(`No passage found for ${query}`);\n      }\n\n      const passage = response.passages[0];\n      if (!passage) {\n        throw new APIError(`No passage found for ${query}`);\n      }\n\n      return passage;\n    });\n  }\n\n  /**\n   * Get an entire chapter.\n   *\n   * @param book - Book name\n   * @param chapter - Chapter number\n   * @returns Passage containing all verses in the chapter\n   * @throws InvalidReferenceError if book/chapter is invalid\n   * @throws APIError if API request fails\n   *\n   * @example\n   * ```ts\n   * // Get all of John chapter 3\n   * const passage = await client.getChapter(BookName.JOHN, 3);\n   * ```\n   */\n  async getChapter(book: BookName | string, chapter: number): Promise<Passage> {\n    // Validate book and chapter exist\n    const bookNumber = getBookNumber(book);\n    const bookInfo = BIBLE_STRUCTURE[bookNumber];\n\n    if (!bookInfo) {\n      throw new APIError(`Invalid book number: ${bookNumber}`);\n    }\n\n    const maxChapter = bookInfo.chapters;\n    if (chapter < 1 || chapter > maxChapter) {\n      const bookName = normalizeBookName(book);\n      throw new APIError(\n        `${bookName} only has ${maxChapter} chapters, but chapter ${chapter} was requested`\n      );\n    }\n\n    // Construct query\n    const bookName = normalizeBookName(book);\n    const query = `${bookName} ${chapter}`;\n\n    return this.withCache(`chapter:${query}`, this.cacheTtls.chapter, async () => {\n      // Make request\n      const response = await this.search(query);\n\n      // Return first passage\n      if (response.passages.length === 0) {\n        throw new APIError(`No passage found for ${query}`);\n      }\n\n      const passage = response.passages[0];\n      if (!passage) {\n        throw new APIError(`No passage found for ${query}`);\n      }\n\n      return passage;\n    });\n  }\n\n  /**\n   * Clear all cached data.\n   *\n   * This method calls the cache provider's clear method if one is configured.\n   * If the cache provider doesn't implement a clear method, this is a no-op.\n   *\n   * @example\n   * ```ts\n   * const client = new LSBibleClient({\n   *   cache: { provider: new MemoryCacheProvider() }\n   * });\n   *\n   * // Clear all cached data\n   * client.clearCache();\n   * ```\n   */\n  clearCache(): void {\n    if (this.cacheProvider && \"clear\" in this.cacheProvider) {\n      (this.cacheProvider as { clear(): void }).clear();\n    }\n  }\n}\n","/**\n * In-memory cache provider for local development and testing.\n *\n * Stores cache entries in a Map with TTL support. Cache is not\n * shared across processes or requests.\n */\n\nimport type { CacheProvider } from \"./interface.js\";\n\ninterface CacheEntry<T> {\n  data: T;\n  expires: number;\n}\n\n/**\n * In-memory cache provider using Map.\n *\n * Suitable for:\n * - Local development\n * - Testing\n * - Single-process applications\n * - MCP stdio servers\n *\n * Not suitable for:\n * - Multi-process applications\n * - Cloudflare Workers (use CloudflareCacheProvider)\n * - Production high-traffic servers (use Redis/Memcached)\n *\n * @example\n * ```ts\n * import { LSBibleClient, MemoryCacheProvider } from 'lsbible';\n *\n * const client = new LSBibleClient({\n *   cache: {\n *     provider: new MemoryCacheProvider()\n *   }\n * });\n * ```\n */\nexport class MemoryCacheProvider implements CacheProvider {\n  private cache = new Map<string, CacheEntry<unknown>>();\n\n  async get<T>(key: string): Promise<T | undefined> {\n    const entry = this.cache.get(key) as CacheEntry<T> | undefined;\n\n    if (!entry) {\n      return undefined;\n    }\n\n    // Check if expired\n    if (Date.now() > entry.expires) {\n      this.cache.delete(key);\n      return undefined;\n    }\n\n    return entry.data;\n  }\n\n  async set<T>(key: string, value: T, ttl: number): Promise<void> {\n    const expires = Date.now() + ttl * 1000;\n    this.cache.set(key, { data: value, expires });\n  }\n\n  /**\n   * Clear all cache entries.\n   *\n   * Useful for testing or manual cache invalidation.\n   */\n  clear(): void {\n    this.cache.clear();\n  }\n\n  /**\n   * Get the number of entries in the cache.\n   *\n   * Includes expired entries that haven't been accessed yet.\n   */\n  size(): number {\n    return this.cache.size;\n  }\n}\n","/**\n * No-op cache provider that disables caching.\n *\n * Use this when you want to disable caching entirely.\n */\n\nimport type { CacheProvider } from \"./interface.js\";\n\n/**\n * No-op cache provider.\n *\n * All get() calls return undefined (cache miss).\n * All set() calls do nothing.\n *\n * Use when you want to disable caching for testing,\n * debugging, or when caching isn't beneficial for your use case.\n *\n * @example\n * ```ts\n * import { LSBibleClient, NoopCacheProvider } from 'lsbible';\n *\n * const client = new LSBibleClient({\n *   cache: {\n *     provider: new NoopCacheProvider()\n *   }\n * });\n * ```\n */\nexport class NoopCacheProvider implements CacheProvider {\n  async get<T>(_key: string): Promise<T | undefined> {\n    return undefined;\n  }\n\n  async set<T>(_key: string, _value: T, _ttl: number): Promise<void> {\n    // No-op\n  }\n}\n"]}