quran-meta
Version:
Library with meta data and functionality related to Holy Quran
10,923 lines • 169 kB
JavaScript
var quranMeta = (function(exports) {
//#region src/lists/HafsLists.ts
const HizbQuarterList$2 = [
0,
1,
33,
51,
67,
82,
99,
113,
131,
149,
165,
184,
196,
210,
226,
240,
250,
260,
270,
279,
290,
308,
326,
345,
368,
386,
406,
426,
446,
464,
479,
494,
505,
517,
529,
551,
567,
581,
593,
607,
628,
641,
656,
670,
681,
696,
710,
720,
736,
751,
766,
778,
802,
825,
848,
863,
884,
900,
916,
930,
940,
955,
985,
1001,
1019,
1042,
1071,
1096,
1110,
1125,
1143,
1161,
1182,
1201,
1221,
1236,
1254,
1269,
1281,
1295,
1310,
1328,
1346,
1357,
1375,
1390,
1417,
1435,
1454,
1479,
1497,
1514,
1534,
1557,
1581,
1603,
1626,
1649,
1673,
1697,
1712,
1726,
1742,
1760,
1778,
1803,
1852,
1902,
1931,
1952,
1976,
1991,
2012,
2030,
2052,
2079,
2099,
2128,
2157,
2172,
2191,
2215,
2239,
2272,
2309,
2349,
2403,
2431,
2459,
2484,
2512,
2534,
2566,
2596,
2614,
2633,
2655,
2674,
2709,
2748,
2792,
2812,
2826,
2844,
2856,
2876,
2908,
2933,
2984,
3043,
3113,
3160,
3186,
3215,
3241,
3264,
3281,
3303,
3328,
3341,
3366,
3386,
3410,
3440,
3463,
3491,
3514,
3534,
3551,
3564,
3584,
3593,
3616,
3630,
3652,
3675,
3701,
3733,
3765,
3810,
3871,
3933,
3991,
4022,
4066,
4090,
4111,
4134,
4154,
4174,
4199,
4227,
4243,
4265,
4285,
4299,
4323,
4349,
4382,
4431,
4485,
4511,
4531,
4555,
4578,
4601,
4613,
4626,
4657,
4706,
4759,
4810,
4855,
4902,
4980,
5054,
5091,
5105,
5118,
5137,
5157,
5178,
5192,
5218,
5230,
5242,
5272,
5324,
5394,
5448,
5495,
5552,
5610,
5673,
5759,
5830,
5885,
5949,
6024,
6091,
6155,
6237
];
const JuzList$2 = [
0,
1,
149,
260,
386,
517,
641,
751,
900,
1042,
1201,
1328,
1479,
1649,
1803,
2030,
2215,
2484,
2674,
2876,
3215,
3386,
3564,
3733,
4090,
4265,
4511,
4706,
5105,
5242,
5673,
6237
];
const ManzilList$2 = [
0,
1,
670,
1365,
2030,
2933,
3789,
4631,
6237
];
const PageList$2 = [
0,
1,
8,
13,
24,
32,
37,
45,
56,
65,
69,
77,
84,
91,
96,
101,
109,
113,
120,
127,
134,
142,
149,
153,
161,
171,
177,
184,
189,
194,
198,
204,
210,
218,
223,
227,
232,
238,
241,
245,
253,
256,
260,
264,
267,
272,
277,
282,
289,
290,
294,
303,
309,
316,
323,
331,
339,
346,
355,
364,
371,
377,
385,
394,
402,
409,
415,
426,
434,
442,
447,
451,
459,
467,
474,
480,
488,
494,
500,
505,
508,
513,
517,
520,
527,
531,
538,
545,
553,
559,
568,
573,
580,
585,
588,
595,
599,
607,
615,
621,
628,
634,
641,
648,
656,
664,
669,
672,
675,
679,
683,
687,
693,
701,
706,
711,
715,
720,
727,
734,
740,
746,
752,
759,
765,
773,
778,
783,
790,
798,
808,
817,
825,
834,
842,
849,
858,
863,
871,
880,
884,
891,
900,
908,
914,
921,
927,
932,
936,
941,
947,
955,
966,
977,
985,
992,
998,
1006,
1012,
1022,
1028,
1036,
1042,
1050,
1059,
1075,
1085,
1092,
1098,
1104,
1110,
1114,
1118,
1125,
1133,
1142,
1150,
1161,
1169,
1177,
1186,
1194,
1201,
1206,
1213,
1222,
1230,
1236,
1242,
1249,
1256,
1262,
1267,
1272,
1276,
1283,
1290,
1297,
1304,
1308,
1315,
1322,
1329,
1335,
1342,
1347,
1353,
1358,
1365,
1371,
1379,
1385,
1390,
1398,
1407,
1418,
1426,
1435,
1443,
1453,
1462,
1471,
1479,
1486,
1493,
1502,
1511,
1519,
1527,
1536,
1545,
1555,
1562,
1571,
1582,
1591,
1601,
1611,
1619,
1627,
1634,
1640,
1649,
1660,
1666,
1675,
1683,
1692,
1700,
1708,
1713,
1721,
1726,
1736,
1742,
1750,
1756,
1761,
1769,
1775,
1784,
1793,
1803,
1818,
1834,
1854,
1873,
1893,
1908,
1916,
1928,
1936,
1944,
1956,
1966,
1974,
1981,
1989,
1995,
2004,
2012,
2020,
2030,
2037,
2047,
2057,
2068,
2079,
2088,
2096,
2105,
2116,
2126,
2134,
2145,
2156,
2161,
2168,
2175,
2186,
2194,
2202,
2215,
2224,
2238,
2251,
2262,
2276,
2289,
2302,
2315,
2327,
2346,
2361,
2386,
2400,
2413,
2425,
2436,
2447,
2462,
2474,
2484,
2494,
2508,
2519,
2528,
2541,
2556,
2565,
2574,
2585,
2596,
2601,
2611,
2619,
2626,
2634,
2642,
2651,
2660,
2668,
2674,
2691,
2701,
2716,
2733,
2748,
2763,
2778,
2792,
2802,
2812,
2819,
2823,
2828,
2835,
2845,
2850,
2853,
2858,
2867,
2876,
2888,
2899,
2911,
2923,
2933,
2952,
2972,
2993,
3016,
3044,
3069,
3092,
3116,
3139,
3160,
3173,
3182,
3195,
3204,
3215,
3223,
3236,
3248,
3258,
3266,
3274,
3281,
3288,
3296,
3303,
3312,
3323,
3330,
3337,
3347,
3355,
3364,
3371,
3379,
3386,
3393,
3404,
3415,
3425,
3434,
3442,
3451,
3460,
3470,
3481,
3489,
3498,
3504,
3515,
3524,
3534,
3540,
3549,
3556,
3564,
3569,
3577,
3584,
3588,
3596,
3607,
3614,
3621,
3629,
3638,
3646,
3655,
3664,
3672,
3679,
3691,
3699,
3705,
3718,
3733,
3746,
3760,
3776,
3789,
3813,
3840,
3865,
3891,
3915,
3942,
3971,
3987,
3997,
4013,
4032,
4054,
4064,
4069,
4080,
4090,
4099,
4106,
4115,
4126,
4133,
4141,
4150,
4159,
4167,
4174,
4183,
4192,
4200,
4211,
4219,
4230,
4239,
4248,
4257,
4265,
4273,
4283,
4288,
4295,
4304,
4317,
4324,
4336,
4348,
4359,
4373,
4386,
4399,
4415,
4433,
4454,
4474,
4487,
4496,
4506,
4516,
4525,
4531,
4539,
4546,
4557,
4565,
4575,
4584,
4593,
4599,
4607,
4612,
4617,
4624,
4631,
4646,
4666,
4682,
4706,
4727,
4750,
4767,
4785,
4811,
4829,
4853,
4874,
4896,
4918,
4942,
4969,
4996,
5030,
5056,
5079,
5087,
5094,
5100,
5105,
5111,
5116,
5126,
5130,
5136,
5143,
5151,
5156,
5162,
5169,
5178,
5186,
5193,
5200,
5209,
5218,
5223,
5230,
5237,
5242,
5254,
5268,
5287,
5314,
5332,
5358,
5386,
5415,
5430,
5448,
5461,
5476,
5495,
5513,
5543,
5571,
5597,
5617,
5642,
5673,
5703,
5728,
5759,
5801,
5830,
5855,
5883,
5910,
5932,
5964,
5994,
6017,
6044,
6073,
6099,
6126,
6138,
6156,
6177,
6194,
6208,
6222,
6237
];
const RukuList$2 = [
0,
1,
8,
15,
28,
37,
47,
54,
67,
69,
79,
90,
94,
104,
111,
120,
129,
137,
149,
155,
160,
171,
175,
184,
190,
196,
204,
218,
224,
229,
236,
239,
243,
250,
256,
261,
265,
268,
274,
281,
289,
291,
294,
303,
314,
324,
335,
348,
357,
365,
374,
385,
395,
403,
414,
423,
437,
442,
449,
465,
474,
483,
494,
504,
508,
516,
519,
527,
536,
544,
553,
564,
570,
581,
585,
590,
594,
598,
606,
609,
620,
628,
635,
646,
656,
665,
670,
675,
681,
689,
696,
704,
713,
720,
726,
736,
747,
756,
763,
770,
778,
785,
790,
800,
810,
820,
831,
840,
845,
850,
860,
872,
880,
884,
890,
900,
911,
919,
930,
934,
940,
944,
955,
965,
980,
986,
994,
1002,
1008,
1013,
1019,
1027,
1039,
1048,
1054,
1063,
1081,
1084,
1096,
1102,
1106,
1112,
1117,
1126,
1136,
1143,
1161,
1171,
1180,
1189,
1198,
1205,
1209,
1219,
1225,
1230,
1236,
1242,
1252,
1260,
1265,
1273,
1278,
1295,
1302,
1308,
1316,
1325,
1335,
1346,
1354,
1358,
1365,
1375,
1385,
1395,
1405,
1418,
1425,
1435,
1447,
1457,
1468,
1474,
1482,
1498,
1509,
1523,
1534,
1542,
1557,
1569,
1583,
1597,
1603,
1617,
1626,
1632,
1639,
1646,
1654,
1665,
1676,
1690,
1701,
1708,
1715,
1726,
1734,
1739,
1745,
1751,
1757,
1763,
1772,
1778,
1785,
1792,
1803,
1818,
1828,
1847,
1863,
1882,
1902,
1911,
1923,
1927,
1936,
1942,
1952,
1962,
1967,
1972,
1978,
1985,
1991,
2002,
2012,
2021,
2030,
2040,
2052,
2060,
2070,
2082,
2090,
2100,
2107,
2114,
2123,
2130,
2141,
2153,
2158,
2163,
2172,
2185,
2190,
2194,
2200,
2211,
2223,
2242,
2251,
2266,
2291,
2301,
2316,
2333,
2349,
2373,
2403,
2425,
2438,
2453,
2464,
2477,
2484,
2494,
2513,
2525,
2534,
2559,
2577,
2596,
2606,
2618,
2621,
2629,
2634,
2644,
2653,
2660,
2668,
2674,
2696,
2706,
2724,
2751,
2766,
2792,
2802,
2812,
2818,
2826,
2832,
2842,
2849,
2853,
2856,
2865,
2876,
2890,
2900,
2916,
2933,
2942,
2966,
2985,
3002,
3037,
3055,
3073,
3092,
3108,
3124,
3160,
3174,
3191,
3204,
3218,
3226,
3242,
3253,
3266,
3274,
3281,
3295,
3303,
3313,
3328,
3341,
3354,
3363,
3371,
3385,
3392,
3404,
3410,
3420,
3429,
3437,
3450,
3463,
3470,
3481,
3489,
3504,
3515,
3526,
3534,
3542,
3554,
3561,
3568,
3574,
3586,
3592,
3602,
3607,
3616,
3628,
3637,
3643,
3652,
3661,
3668,
3675,
3687,
3698,
3706,
3718,
3738,
3756,
3773,
3789,
3810,
3863,
3902,
3927,
3971,
3985,
3997,
4011,
4035,
4059,
4068,
4080,
4090,
4100,
4111,
4122,
4129,
4134,
4143,
4154,
4161,
4171,
4184,
4194,
4202,
4212,
4219,
4227,
4237,
4244,
4251,
4263,
4273,
4282,
4292,
4302,
4316,
4326,
4341,
4351,
4361,
4371,
4382,
4393,
4415,
4444,
4457,
4474,
4485,
4495,
4500,
4511,
4521,
4531,
4537,
4546,
4557,
4565,
4574,
4584,
4594,
4601,
4610,
4613,
4623,
4631,
4646,
4660,
4676,
4699,
4722,
4736,
4764,
4785,
4810,
4817,
4847,
4869,
4887,
4902,
4927,
4947,
4980,
5018,
5054,
5076,
5086,
5095,
5101,
5105,
5111,
5118,
5127,
5137,
5144,
5151,
5157,
5164,
5173,
5178,
5186,
5189,
5197,
5200,
5210,
5218,
5225,
5230,
5237,
5242,
5256,
5272,
5305,
5324,
5361,
5376,
5411,
5420,
5440,
5448,
5467,
5476,
5495,
5496,
5527,
5552,
5582,
5592,
5614,
5623,
5663,
5673,
5703,
5713,
5739,
5759,
5801,
5830,
5849,
5885,
5910,
5932,
5949,
5968,
5994,
6024,
6044,
6059,
6080,
6091,
6099,
6107,
6126,
6131,
6139,
6147,
6158,
6169,
6177,
6180,
6189,
6194,
6198,
6205,
6208,
6214,
6217,
6222,
6226,
6231,
6237
];
const SajdaList$2 = [
1160,
1722,
1951,
2138,
2308,
2613,
2672,
2915,
3185,
3518,
3994,
4256,
4846,
5905,
6125
];
const SurahList$2 = [
[
-1,
1,
1,
1,
"",
false
],
[
1,
7,
5,
1,
"الفَاتِحة",
true
],
[
8,
286,
87,
40,
"البَقَرَة",
false
],
[
294,
200,
89,
20,
"آل عِمران",
false
],
[
494,
176,
92,
24,
"النِّسَاء",
false
],
[
670,
120,
112,
16,
"المَائدة",
false
],
[
790,
165,
55,
20,
"الأنعَام",
true
],
[
955,
206,
39,
24,
"الأعرَاف",
true
],
[
1161,
75,
88,
10,
"الأنفَال",
false
],
[
1236,
129,
113,
16,
"التوبَة",
false
],
[
1365,
109,
51,
11,
"يُونس",
true
],
[
1474,
123,
52,
10,
"هُود",
true
],
[
1597,
111,
53,
12,
"يُوسُف",
true
],
[
1708,
43,
96,
6,
"الرَّعد",
false
],
[
1751,
52,
72,
7,
"إبراهِيم",
true
],
[
1803,
99,
54,
6,
"الحِجر",
true
],
[
1902,
128,
70,
16,
"النَّحل",
true
],
[
2030,
111,
50,
12,
"الإسرَاء",
true
],
[
2141,
110,
69,
12,
"الكَهف",
true
],
[
2251,
98,
44,
6,
"مَريَم",
true
],
[
2349,
135,
45,
8,
"طه",
true
],
[
2484,
112,
73,
7,
"الأنبيَاء",
true
],
[
2596,
78,
103,
10,
"الحج",
false
],
[
2674,
118,
74,
6,
"المؤمنُون",
true
],
[
2792,
64,
102,
9,
"النور",
false
],
[
2856,
77,
42,
6,
"الفُرقَان",
true
],
[
2933,
227,
47,
11,
"الشعراء",
true
],
[
3160,
93,
48,
7,
"النَّمل",
true
],
[
3253,
88,
49,
8,
"القَصَص",
true
],
[
3341,
69,
85,
7,
"العَنكبُوت",
true
],
[
3410,
60,
84,
6,
"الرُّوم",
true
],
[
3470,
34,
57,
3,
"لُقمَان",
true
],
[
3504,
30,
75,
3,
"السَّجدة",
true
],
[
3534,
73,
90,
9,
"الأحزَاب",
false
],
[
3607,
54,
58,
6,
"سَبإ",
true
],
[
3661,
45,
43,
5,
"فَاطِر",
true
],
[
3706,
83,
41,
5,
"يسٓ",
true
],
[
3789,
182,
56,
5,
"الصَّافَات",
true
],
[
3971,
88,
38,
5,
"صٓ",
true
],
[
4059,
75,
59,
8,
"الزُّمَر",
true
],
[
4134,
85,
60,
9,
"غَافِر",
true
],
[
4219,
54,
61,
6,
"فُصِّلَت",
true
],
[
4273,
53,
62,
5,
"الشُّوري",
true
],
[
4326,
89,
63,
7,
"الزُّخرُف",
true
],
[
4415,
59,
64,
3,
"الدُّخان",
true
],
[
4474,
37,
65,
4,
"الجاثِية",
true
],
[
4511,
35,
66,
4,
"الأحقَاف",
true
],
[
4546,
38,
95,
4,
"مُحمد",
false
],
[
4584,
29,
111,
4,
"الفَتح",
false
],
[
4613,
18,
106,
2,
"الحُجُرَات",
false
],
[
4631,
45,
34,
3,
"قٓ",
true
],
[
4676,
60,
67,
3,
"الذَّاريَات",
true
],
[
4736,
49,
76,
2,
"الطُّور",
true
],
[
4785,
62,
23,
3,
"النَّجم",
true
],
[
4847,
55,
37,
3,
"القَمَر",
true
],
[
4902,
78,
97,
3,
"الرَّحمٰن",
false
],
[
4980,
96,
46,
3,
"الوَاقِعة",
true
],
[
5076,
29,
94,
4,
"الحدِيد",
false
],
[
5105,
22,
105,
3,
"المُجَادلة",
false
],
[
5127,
24,
101,
3,
"الحَشر",
false
],
[
5151,
13,
91,
2,
"المُمتَحنَة",
false
],
[
5164,
14,
109,
2,
"الصَّف",
false
],
[
5178,
11,
110,
2,
"الجُمعَة",
false
],
[
5189,
11,
104,
2,
"المُنَافِقُونَ",
false
],
[
5200,
18,
108,
2,
"التغَابُن",
false
],
[
5218,
12,
99,
2,
"الطَّلَاق",
false
],
[
5230,
12,
107,
2,
"التَّحرِيم",
false
],
[
5242,
30,
77,
2,
"المُلك",
true
],
[
5272,
52,
2,
2,
"القَلَم",
true
],
[
5324,
52,
78,
2,
"الحَاقة",
true
],
[
5376,
44,
79,
2,
"المَعَارج",
true
],
[
5420,
28,
71,
2,
"نُوح",
true
],
[
5448,
28,
40,
2,
"الجِن",
true
],
[
5476,
20,
3,
2,
"المُزمل",
true
],
[
5496,
56,
4,
2,
"المُدثر",
true
],
[
5552,
40,
31,
2,
"القِيَامة",
true
],
[
5592,
31,
98,
2,
"الإنسَان",
false
],
[
5623,
50,
33,
2,
"المُرسَلات",
true
],
[
5673,
40,
80,
2,
"النَّبَإ",
true
],
[
5713,
46,
81,
2,
"النَّازعَات",
true
],
[
5759,
42,
24,
1,
"عَبَسَ",
true
],
[
5801,
29,
7,
1,
"التَّكوير",
true
],
[
5830,
19,
82,
1,
"الانفِطَار",
true
],
[
5849,
36,
86,
1,
"المُطَففين",
true
],
[
5885,
25,
83,
1,
"الانشِقَاق",
true
],
[
5910,
22,
27,
1,
"البُرُوج",
true
],
[
5932,
17,
36,
1,
"الطَّارق",
true
],
[
5949,
19,
8,
1,
"الأعلى",
true
],
[
5968,
26,
68,
1,
"الغَاشِية",
true
],
[
5994,
30,
10,
1,
"الفَجر",
true
],
[
6024,
20,
35,
1,
"البَلَد",
true
],
[
6044,
15,
26,
1,
"الشَّمس",
true
],
[
6059,
21,
9,
1,
"اللَّيل",
true
],
[
6080,
11,
11,
1,
"الضُّحى",
true
],
[
6091,
8,
12,
1,
"الشَّرح",
true
],
[
6099,
8,
28,
1,
"التِّين",
true
],
[
6107,
19,
1,
1,
"العَلَق",
true
],
[
6126,
5,
25,
1,
"القَدر",
true
],
[
6131,
8,
100,
1,
"البَينَة",
false
],
[
6139,
8,
93,
1,
"الزَّلزَلة",
false
],
[
6147,
11,
14,
1,
"العَاديَات",
true
],
[
6158,
11,
30,
1,
"القَارعَة",
true
],
[
6169,
8,
16,
1,
"التَّكاثُر",
true
],
[
6177,
3,
13,
1,
"العَصر",
true
],
[
6180,
9,
32,
1,
"الهُمَزة",
true
],
[
6189,
5,
19,
1,
"الفِيل",
true
],
[
6194,
4,
29,
1,
"قُرَيش",
true
],
[
6198,
7,
17,
1,
"المَاعُون",
true
],
[
6205,
3,
15,
1,
"الكَوثر",
true
],
[
6208,
6,
18,
1,
"الكافِرون",
true
],
[
6214,
3,
114,
1,
"النَّصر",
false
],
[
6217,
5,
6,
1,
"المَسَد",
true
],
[
6222,
4,
22,
1,
"الإخلَاص",
true
],
[
6226,
5,
20,
1,
"الفَلَق",
true
],
[
6231,
6,
21,
1,
"النَّاس",
true
],
[
6237,
1,
1,
1,
"",
false
]
];
/**
* Hafs riwaya metadata
*/
const HafsMeta = {
riwayaName: "Hafs",
numAyahs: 6236,
numSurahs: 114,
numPages: 604,
numJuzs: 30,
numHizbs: 60,
numRubAlHizbs: 240,
numThumunAlHizbs: 0,
numRubsInJuz: 8,
numSajdas: 15,
numRukus: 556,
numManzils: 7
};
const HafsLists = {
meta: HafsMeta,
HizbQuarterList: HizbQuarterList$2,
JuzList: JuzList$2,
ManzilList: ManzilList$2,
PageList: PageList$2,
RukuList: RukuList$2,
SajdaList: SajdaList$2,
SurahList: SurahList$2
};
//#endregion
//#region src/lists/QalunLists.ts
const HizbEighthList = [
0,
1,
20,
32,
40,
50,
60,
66,
73,
82,
91,
98,
108,
112,
121,
130,
139,
148,
154,
164,
174,
183,
191,
195,
203,
208,
218,
224,
233,
238,
241,
248,
253,
258,
264,
269,
273,
278,
288,
289,
297,
307,
318,
325,
334,
343,
355,
366,
374,
383,
396,
405,
413,
425,
436,
445,
452,
463,
471,
478,
487,
498,
503,
505,
511,
516,
523,
528,
538,
549,
555,
565,
569,
578,
584,
591,
596,
605,
614,
621,
629,
639,
650,
657,
663,
671,
674,
680,
686,
692,
701,
710,
714,
718,
728,
736,
744,
751,
759,
766,
775,
780,
790,
803,
815,
826,
840,
849,
859,
870,
881,
885,
890,
901,
910,
917,
926,
931,
935,
941,
948,
957,
974,
984,
992,
1002,
1010,
1020,
1030,
1043,
1055,
1072,
1087,
1098,
1104,
1112,
1119,
1127,
1136,
1144,
1155,
1167,
1174,
1184,
1194,
1203,
1212,
1223,
1235,
1243,
1250,
1257,
1263,
1272,
1278,
1284,
1292,
1299,
1308,
1314,
1323,
1332,
1340,
1350,
1356,
1362,
1371,
1379,
1387,
1394,
1405,
1417,
1429,
1439,
1451,
1461,
1472,
1483,
1492,
1501,
1509,
1518,
1527,
1538,
1550,
1560,
1571,
1582,
1596,
1608,
1620,
1631,
1641,
1651,
1665,
1675,
1686,
1699,
1708,
1714,
1726,
1730,
1740,
1745,
1754,
1766,
1775,
1783,
1794,
1808,
1833,
1856,
1887,
1907,
1921,
1936,
1944,
1957,
1969,
1977,
1985,
1996,
2004,
2017,
2026,
2035,
2045,
2057,
2070,
2084,
2095,
2104,
2119,
2133,
2145,
2161,
2167,
2176,
2188,
2197,
2207,
2218,
2226,
2239,
2250,
2270,
2289,
2308,
2327,
2349,
2372,
2402,
2419,
2429,
2441,
2456,
2474,
2483,
2498,
2512,
2524,
2533,
2555,
2568,
2582,
2594,
2604,
2612,
2621,
2629,
2640,
2651,
2661,
2670,
2690,
2705,
2727,
2745,
2767,
2785,
2799,
2809,
2818,
2823,
2830,
2839,
2846,
2849,
2860,
2871,
2882,
2895,
2911,
2928,
2949,
2977,
3005,
3038,
3073,
3108,
3135,
3159,
3171,
3180,
3195,
3211,
3222,
3237,
3249,
3259,
3267,
3277,
3286,
3299,
3309,
3324,
3331,
3343,
3351,
3361,
3372,
3382,
3396,
3413,
3426,
3435,
3445,
3458,
3475,
3485,
3495,
3508,
3520,
3533,
3540,
3547,
3555,
3558,
3567,
3578,
3582,
3587,
3599,
3607,
3615,
3624,
3634,
3646,
3659,
3669,
3685,
3694,
3701,
3727,
3744,
3759,
3776,
3804,
3833,
3865,
3896,
3927,
3965,
3984,
3993,
4015,
4047,
4059,
4068,
4081,
4090,
4100,
4114,
4123,
4131,
4143,
4152,
4163,
4175,
4188,
4200,
4214,
4222,
4231,
4243,
4252,
4260,
4270,
4278,
4290,
4299,
4307,
4320,
4332,
4351,
4372,
4393,
4422,
4446,
4464,
4476,
4491,
4504,
4510,
4522,
4535,
4545,
4558,
4571,
4581,
4590,
4593,
4601,
4606,
4616,
4637,
4656,
4686,
4711,
4737,
4757,
4788,
4817,
4841,
4864,
4879,
4909,
4937,
4984,
5033,
5061,
5069,
5075,
5083,
5090,
5096,
5108,
5114,
5128,
5134,
5141,
5155,
5163,
5174,
5183,
5190,
5200,
5206,
5214,
5219,
5238,
5268,
5297,
5339,
5372,
5393,
5412,
5428,
5445,
5473,
5504,
5529,
5568,
5586,
5614,
5649,
5689,
5729,
5766,
5790,
5830,
5875,
5896,
5924,
5959,
6001,
6036,
6068,
6104,
6134,
6167,
6215
];
const HizbQuarterList$1 = [
0,
1,
32,
50,
66,
82,
98,
112,
130,
148,
164,
183,
195,
208,
224,
238,
248,
258,
269,
278,
289,
307,
325,
343,
366,
383,
405,
425,
445,
463,
478,
498,
505,
516,
528,
549,
565,
578,
591,
605,
621,
639,
657,
671,
680,
692,
710,
718,
736,
751,
766,
780,
803,
826,
849,
870,
885,
901,
917,
931,
941,
957,
984,
1002,
1020,
1043,
1072,
1098,
1112,
1127,
1144,
1167,
1184,
1203,
1223,
1243,
1257,
1272,
1284,
1299,
1314,
1332,
1350,
1362,
1379,
1394,
1417,
1439,
1461,
1483,
1501,
1518,
1538,
1560,
1582,
1608,
1631,
1651,
1675,
1699,
1714,
1730,
1745,
1766,
1783,
1808,
1856,
1907,
1936,
1957,
1977,
1996,
2017,
2035,
2057,
2084,
2104,
2133,
2161,
2176,
2197,
2218,
2239,
2270,
2308,
2349,
2402,
2429,
2456,
2483,
2512,
2533,
2568,
2594,
2612,
2629,
2651,
2670,
2705,
2745,
2785,
2809,
2823,
2839,
2849,
2871,
2895,
2928,
2977,
3038,
3108,
3159,
3180,
3211,
3237,
3259,
3277,
3299,
3324,
3343,
3361,
3382,
3413,
3435,
3458,
3485,
3508,
3533,
3547,
3558,
3578,
3587,
3607,
3624,
3646,
3669,
3694,
3727,
3759,
3804,
3865,
3927,
3984,
4015,
4059,
4081,
4100,
4123,
4143,
4163,
4188,
4214,
4231,
4252,
4270,
4290,
4307,
4332,
4372,
4422,
4464,
4491,
4510,
4535,
4558,
4581,
4593,
4606,
4637,
4686,
4737,
4788,
4841,
4879,
4937,
5033,
5069,
5083,
5096,
5114,
5134,
5155,
5174,
5190,
5206,
5219,
5268,
5339,
5393,
5428,
5473,
5529,
5586,
5649,
5729,
5790,
5875,
5924,
6001,
6068,
6134,
6215
];
const JuzList$1 = [
0,
1,
148,
258,
383,
516,
639,
751,
901,
1043,
1203,
1332,
1483,
1651,
1808,
2035,
2218,
2483,
2670,
2871,
3211,
3382,
3558,
3727,
4081,
4252,
4491,
4686,
5083,
5219,
5649,
6215
];
const ManzilList$1 = [
0,
1,
668,
1369,
2035,
2928,
3783,
4611,
6215
];
const PageList$1 = [
0,
1,
8,
12,
23,
31,
36,
44,
55,
64,
68,
76,
83,
90,
95,
100,
108,
112,
119,
126,
133,
141,
148,
152,
160,
170,
176,
183,
188,
193,
197,
203,
208,
216,
221,
225,
230,
236,
239,
243,
251,
254,
258,
263,
266,
271,
276,
281,
288,
289,
293,
302,
308,
315,
322,
330,
338,
344,
353,
362,
369,
375,
383,
393,
401,
408,
414,
425,
433,
441,
446,
450,
458,
466,
473,
479,
487,
493,
499,
504,
507,
512,
516,
519,
526,
530,
537,
543,
551,
557,
566,
571,
578,
583,
586,
593,
597,
605,
613,
619,
626,
632,
639,
646,
654,
662,
667,
671,
674,
678,
682,
687,
693,
701,
706,
711,
715,
720,
727,
734,
740,
747,
753,
760,
765,
773,
778,
783,
790,
799,
809,
818,
826,
835,
843,
850,
858,
864,
872,
881,
885,
892,
901,
909,
915,
921,
928,
933,
937,
942,
948,
957,
967,
978,
985,
992,
999,
1007,
1013,
1023,
1029,
1037,
1043,
1051,
1060,
1076,
1086,
1094,
1100,
1106,
1112,
1116,
1120,
1127,
1135,
1144,
1152,
1163,
1171,
1179,
1188,
1196,
1203,
1209,
1216,
1225,
1233,
1239,
1245,
1252,
1259,
1265,
1270,
1275,
1279,
1286,
1293,
1300,
1307,
1312,
1319,
1326,
1333,
1339,
1346,
1351,
1357,
1362,
1369,
1375,
1383,
1389,
1394,
1402,
1411,
1422,
1430,
1439,
1447,
1457,
1466,
1475,
1483,
1490,
1497,
1506,
1515,
1523,
1531,
1539,
1548,
1558,
1566,
1575,
1586,
1595,
1603,
1613,
1621,
1629,
1636,
1642,
1651,
1662,
1668,
1677,
1685,
1694,
1702,
1710,
1716,
1724,
1730,
1739,
1745,
1753,
1761,
1767,
1775,
1780,
1789,
1798,
1808,
1823,
1839,
1859,
1878,
1898,
1913,
1921,
1933,
1941,
1949,
1961,
1971,
1979,
1986,
1994,
2e3,
2009,
2017,
2025,
2035,
2042,
2052,
2062,
2073,
2084,
2093,
2101,
2110,
2121,
2131,
2139,
2149,
2160,
2165,
2172,
2179,
2189,
2197,
2205,
2218,
2227,
2238,
2250,
2260,
2274,
2287,
2301,
2314,
2327,
2346,
2360,
2385,
2399,
2412,
2424,
2435,
2445,
2459,
2472,
2483,
2493,
2507,
2518,
2527,
2540,
2554,
2563,
2572,
2583,
2594,
2599,
2609,
2615,
2622,
2630,
2638,
2647,
2656,
2664,
2670,
2687,
2697,
2712,
2730,
2745,
2760,
2775,
2789,
2799,
2809,
2816,
2820,
2825,
2831,
2840,
2845,
2848,
2853,
2862,
2871,
2883,
2894,
2906,
2918,
2928,
2946,
2966,
2988,
3011,
3039,
3064,
3087,
3111,
3134,
3154,
3167,
3176,
3190,
3200,
3211,
3219,
3232,
3244,
3253,
3261,
3269,
3277,
3284,
3292,
3299,
3308,
3319,
3326,
3333,
3342,
3350,
3359,
3367,
3375,
3382,
3389,
3400,
3410,
3420,
3429,
3437,
3446,
3455,
3465,
3475,
3483,
3492,
3498,
3509,
3518,
3528,
3534,
3543,
3550,
3558,
3563,
3571,
3578,
3582,
3590,
3601,
3608,
3615,
3623,
3632,
3640,
3649,
3658,
3666,
3673,
3685,
3693,
3700,
3712,
3727,
3740,
3754,
3770,
3783,
3807,
3834,
3859,
3885,
3909,
3936,
3965,
3980,
3990,
4006,
4025,
4047,
4057,
4062,
4071,
4081,
4088,
4095,
4104,
4115,
4122,
4129,
4138,
4148,
4156,
4163,
4172,
4181,
4189,
4199,
4207,
4217,
4226,
4235,
4244,
4252,
4260,
4268,
4273,
4280,
4289,
4301,
4308,
4319,
4331,
4342,
4356,
4370,
4383,
4399,
4416,
4436,
4455,
4467,
4476,
4486,
4495,
4504,
4510,
4518,
4525,
4537,
4545,
4555,
4564,
4573,
4579,
4587,
4592,
4597,
4604,
4611,
4626,
4646,
4662,
4686,
4707,
4728,
4745,
4763,
4789,
4806,
4830,
4851,
4873,
4895,
4919,
4947,
4974,
5009,
5035,
5058,
5066,
5072,
5078,
5083,
5089,
5094,
5103,
5107,
5113,
5120,
5128,
5133,
5139,
5146,
5155,
5163,
5170,
5177,
5186,
5195,
5200,
5207,
5214,
5219,
5232,
5246,
5266,
5292,
5309,
5337,
5364,
5394,
5408,
5428,
5441,
5456,
5473,
5492,
5520,
5547,
5573,
5593,
5618,
5649,
5679,
5705,
5734,
5774,
5805,
5828,
5857,
5884,
5907,
5934,
5965,
5993,
6019,
6045,
6070,
6096,
6114,
6131,
6155,
6172,
6186,
6200,
6215
];
const RukuList$1 = [
0,
1,
8,
14,
27,
36,
46,
53,
66,
68,
78,
90,
93,
103,
110,
119,
128,
136,
148,
154,
159,
170,
174,
183,
189,
195,
203,
216,
224,
227,
234,
237,
241,
251,
254,
259,
264,
267,
273,
280,
288,
290,
293,
302,
313,
323,
334,
346,
355,
363,
372,
383,
394,
402,
413,
422,
436,
441,
448,
464,
473,
482,
493,
503,
507,
515,
518,
526,
535,
542,
551,
562,
568,
579,
583,
588,
592,
596,
604,
607,
618,
627,
633,
644,
654,
663,
668,
674,
680,
689,
696,
704,
713,
720,
723,
736,
747,
756,
759,
770,
778,
785,
790,
801,
811,
821,
832,
841,
846,
851,
860,
873,
881,
885,
891,
901,
912,
920,
931,
935,
941,
945,
957,
966,
981,
986,
995,
1003,
1009,
1014,
1020,
1028,
1040,
1049,
1055,
1064,
1082,
1085,
1098,
1104,
1108,
1114,
1119,
1128,
1138,
1145,
1163,
1173,
1182,
1191,
1200,
1208,
1212,
1222,
1227,
1233,
1239,
1245,
1255,
1263,
1268,
1276,
1281,
1298,
1305,
1312,
1320,
1329,
1339,
1350,
1358,
1362,
1369,
1379,
1389,
1399,
1409,
1422,
1429,
1439,
1451,
1461,
1472,
1478,
1486,
1502,
1513,
1527,
1537,
1545,
1560,
1573,
1587,
1599,
1605,
1619,
1628,
1634,
1641,
1648,
1656,
1667,
1678,
1692,
1703,
1710,
1718,
1730,
1737,
1742,
1748,
1754,
1762,
1769,
1777,
1783,
1790,
1797,
1808,
1823,
1833,
1852,
1868,
1887,
1907,
1916,
1928,
1932,
1941,
1947,
1957,
1967,
1972,
1977,
1983,
1990,
1996,
2007,
2017,
2026,
2035,
2045,
2057,
2065,
2075,
2087,
2095,
2105,
2112,
2119,
2128,
2135,
2145,
2157,
2162,
2168,
2176,
2188,
2193,
2197,
2203,
2214,
2226,
2242,
2250,
2264,
2289,
2300,
2315,
2333,
2349,
2372,
2402,
2424,
2437,
2451,
2461,
2475,
2483,
2493,
2512,
2524,
2533,
2557,
2575,
2594,
2604,
2614,
2617,
2625,
2630,
2640,
2649,
2656,
2664,
2670,
2692,
2702,
2721,
2748,
2763,
2789,
2799,
2809,
2815,
2823,
2828,
2837,
2844,
2848,
2851,
2860,
2871,
2885,
2895,
2911,
2928,
2936,
2960,
2980,
2997,
3032,
3050,
3068,
3087,
3103,
3119,
3154,
3168,
3185,
3200,
3211,
3222,
3238,
3249,
3261,
3269,
3277,
3291,
3299,
3309,
3324,
3337,
3349,
3358,
3367,
3381,
3388,
3400,
3406,
3415,
3425,
3432,
3445,
3458,
3465,
3475,
3483,
3498,
3509,
3520,
3528,
3536,
3548,
3555,
3558,
3568,
3580,
3586,
3596,
3601,
3610,
3622,
3631,
3637,
3646,
3655,
3662,
3669,
3681,
3692,
3701,
3712,
3732,
3750,
3767,
3783,
3804,
3857,
3896,
3921,
3965,
3978,
3990,
4004,
4028,
4051,
4061,
4071,
4081,
4089,
4100,
4111,
4118,
4123,
4131,
4143,
4150,
4160,
4173,
4183,
4191,
4200,
4207,
4214,
4224,
4231,
4238,
4250,
4260,
4267,
4277,
4287,
4300,
4310,
4324,
4334,
4344,
4354,
4366,
4377,
4399,
4427,
4439,
4455,
4465,
4475,
4480,
4491,
4500,
4510,
4516,
4525,
4537,
4545,
4554,
4564,
4574,
4581,
4590,
4593,
4603,
4611,
4626,
4640,
4656,
4679,
4702,
4716,
4742,
4763,
4788,
4794,
4824,
4846,
4864,
4879,
4902,
4923,
4956,
4996,
5033,
5055,
5065,
5073,
5079,
5083,
5089,
5096,
5104,
5114,
5121,
5128,
5134,
5141,
5150,
5155,
5163,
5166,
5174,
5177,
5187,
5195,
5202,
5207,
5214,
5219,
5234,
5250,
5283,
5302,
5339,
5354,
5389,
5398,
5418,
5428,
5447,
5456,
5473,
5474,
5505,
5529,
5558,
5568,
5590,
5599,
5639,
5649,
5679,
5689,
5715,
5734,
5776,
5805,
5824,
5860,
5885,
5907,
5924,
5943,
5969,
6001,
6021,
6036,
6057,
6068,
6076,
6084,
6104,
6109,
6117,
6126,
6137,
6147,
6155,
6158,
6167,
6172,
6177,
6183,
6186,
6192,
6195,
6200,
6204,
6209,
6215
];
const SajdaList$1 = [
1162,
1725,
1956,
2142,
2307,
2611,
2910,
3179,
3512,
3987,
4242,
4823
];
const SurahList$1 = [
[
-1,
1,
1,
1,
"",
false
],
[
1,
7,
5,
1,
"الفَاتِحة",
true
],
[
8,
285,
87,
40,
"البَقَرَة",
false
],
[
293,
200,
89,
20,
"آل عِمران",
false
],
[
493,
175,
92,
24,
"النِّسَاء",
false
],
[
668,
122,
112,
16,
"المَائدة",
false
],
[
790,
167,
55,
20,
"الأنعَام",
true
],
[
957,
206,
39,
24,
"الأعرَاف",
true
],
[
1163,
76,
88,
10,
"الأنفَال",
false
],
[
1239,
130,
113,
16,
"التوبَة",
false
],
[
1369,
109,
51,
11,
"يُونس",
true
],
[
1478,
121,
52,
10,
"هُود",
true
],
[
1599,
111,
53,
12,
"يُوسُف",
true
],
[
1710,
44,
96,
6,
"الرَّعد",
false
],
[
1754,
54,
72,
7,
"إبراهِيم",
true
],
[
1808,
99,
54,
6,
"الحِجر",
true
],
[
1907,
128,
70,
16,
"النَّحل",
true
],
[
2035,
110,
50,
12,
"الإسرَاء",
true
],
[
2145,
105,
69,
12,
"الكَهف",
true
],
[
2250,
99,
44,
6,
"مَريَم",
true
],
[
2349,
134,
45,
8,
"طه",
true
],
[
2483,
111,
73,
7,
"الأنبيَاء",
true
],
[
2594,
76,
103,
10,
"الحج",
false
],
[
2670,
119,
74,
6,
"المؤمنُون",
true
],
[
2789,
62,
102,
9,
"النور",
false
],
[
2851,
77,
42,
6,
"الفُرقَان",
true
],
[
2928,
226,
47,
11,
"الشعراء",
true
],
[
3154,
95,
48,
7,
"النَّمل",
true
],
[
3249,
88,
49,
8,
"القَصَص",
true
],
[
3337,
69,
85,
7,
"العَنكبُوت",
true
],
[
3406,
59,
84,
6,
"الرُّوم",
true
],
[
3465,
33,
57,
3,
"لُقمَان",
true
],
[
3498,
30,
75,
3,
"السَّجدة",
true
],
[
3528,
73,
90,
9,
"الأحزَاب",
false
],
[
3601,
54,
58,
6,
"سَبإ",
true
],
[
3655,
46,
43,
5,
"فَاطِر",
true
],
[
3701,
82,
41,
5,
"يسٓ",
true
],
[
3783,
182,
56,
5,
"الصَّافَات",
true
],
[
3965,
86,
38,
5,
"صٓ",
true
],
[
4051,
72,
59,
8,
"الزُّمَر",
true
],
[
4123,
84,
60,
9,
"غَافِر",
true
],
[
4207,
53,
61,
6,
"فُصِّلَت",
true
],
[
4260,
50,
62,
5,
"الشُّوري",
true
],
[
4310,
89,
63,
7,
"الزُّخرُف",
true
],
[
4399,
56,
64,
3,
"الدُّخان",
true
],
[
4455,
36,
65,
4,
"الجاثِية",
true
],
[
4491,
34,
66,
4,
"الأحقَاف",
true
],
[
4525,
39,
95,
4,
"مُحمد",
false
],
[
4564,
29,
111,
4,
"الفَتح",
false
],
[
4593,
18,
106,
2,
"الحُجُرَات",
false
],
[
4611,
45,
34,
3,
"قٓ",
true
],
[
4656,
60,
67,
3,
"الذَّاريَات",
true
],
[
4716,
47,
76,
2,
"الطُّور",
true
],
[
4763,
61,
23,
3,
"النَّجم",
true
],
[
4824,
55,
37,
3,
"القَمَر",
true
],
[
4879,
77,
97,
3,
"الرَّحمٰن",
false
],
[
4956,
99,
46,
3,
"الوَاقِعة",
true
],
[
5055,
28,
94,
4,
"الحدِيد",
false
],
[
5083,
21,
105,
3,
"المُجَادلة",
false
],
[
5104,
24,
101,
3,
"الحَشر",
false
],
[
5128,
13,
91,
2,
"المُمتَحنَة",
false
],
[
5141,
14,
109,
2,
"الصَّف",
false
],
[
5155,
11,
110,
2,
"الجُمعَة",
false
],
[
5166,
11,
104,
2,
"المُنَافِقُونَ",
false
],
[
5177,
18,
108,
2,
"التغَابُن",
false
],
[
5195,
12,
99,
2,
"الطَّلَاق",
false
],
[
5207,
12,
107,
2,
"التَّحرِيم",
false
],
[
5219,
31,
77,
2,
"المُلك",
true
],
[
5250,
52,
2,
2,
"القَلَم",
true
],
[
5302,
52,
78,
2,
"الحَاقة",
true
],
[
5354,
44,
79,
2,
"المَعَارج",
true
],
[
5398,
30,
71,
2,
"نُوح",
true
],
[
5428,
28,
40,
2,
"الجِن",
true
],
[
5456,
18,
3,
2,
"المُزمل",
true
],
[
5474,
55,
4,
2,
"المُدثر",
true
],
[
5529,
39,
31,
2,
"القِيَامة",
true
],
[
5568,
31,
98,
2,
"الإنسَان",
false
],
[
5599,
50,
33,
2,
"المُرسَلات",
true
],
[
5649,
40,
80,
2,
"النَّبَإ",
true
],
[
5689,
45,
81,
2,
"النَّازعَات",
true
],
[
5734,
42,
24,
1,
"عَبَسَ",
true
],
[
5776,
29,
7,
1,
"التَّكوير",
true
],
[
5805,
19,
82,
1,
"الانفِطَار",
true
],
[
5824,
36,
86,
1,
"المُطَففين",
true
],
[
5860,
25,
83,
1,
"الانشِقَاق",
true
],
[
5885,
22,
27,
1,
"البُرُوج",
true
],
[
5907,
17,
36,
1,
"الطَّارق",
true
],
[
5924,
19,
8,
1,
"الأعلى",
true
],
[
5943,
26,
68,
1,
"الغَاشِية",
true
],
[
5969,
32,
10,
1,
"الفَجر",
true
],
[
6001,
20,
35,
1,
"البَلَد",
true
],
[
6021,
15,
26,
1,
"الشَّمس",
true
],
[
6036,
21,
9,
1,
"اللَّيل",
true
],
[
6057,
11,
11,
1,
"الضُّحى",
true
],
[
6068,
8,
12,
1,
"الشَّرح",
true
],
[
6076,
8,
28,
1,
"التِّين",
true
],
[
6084,
20,
1,
1,
"العَلَق",
true
],
[
6104,
5,
25,
1,
"القَدر",
true
],
[
6109,
8,
100,
1,
"البَينَة",
false
],
[
6117,
9,
93,
1,
"الزَّلزَلة",
false
],
[
6126,
11,
14,
1,
"العَاديَات",
true
],
[
6137,
10,
30,
1,
"القَارعَة",
true
],
[
6147,
8,
16,
1,
"التَّكاثُر",
true
],
[
6155,
3,
13,
1,
"العَصر",
true
],
[
6158,
9,
32,
1,
"الهُمَزة",
true
],
[
6167,
5,
19,
1,
"الفِيل",
true
],
[
6172,
5,
29,
1,
"قُرَيش",
true
],
[
6177,
6,
17,
1,
"المَاعُون",
true
],
[
6183,
3,
15,
1,
"الكَوثر",
true
],
[
6186,
6,
18,
1,
"الكافِرون",
true
],
[
6192,
3,
114,
1,
"النَّصر",
false
],
[
6195,
5,
6,
1,
"المَسَد",
true
],
[
6200,
4,
22,
1,
"الإخلَاص",
true
],
[
6204,
5,
20,
1,
"الفَلَق",
true
],
[
6209,
6,
21,
1,
"النَّاس",
true
],
[
6216,
1,
1,
1,
"",
false
]
];
/**
* Qalun riwaya metadata
*/
const QalunMeta = {
riwayaName: "Qalun",
numAyahs: 6214,
numSurahs: 114,
numPages: 604,
numJuzs: 30,
numHizbs: 60,
numRubAlHizbs: 240,
numThumunAlHizbs: 480,
numRubsInJuz: 8,
numSajdas: 12,
numRukus: 556,
numManzils: 7
};
const QalunLists = {
meta: QalunMeta,
HizbEighthList,
HizbQuarterList: HizbQuarterList$1,
JuzList: JuzList$1,
ManzilList: ManzilList$1,
PageList: PageList$1,
RukuList: RukuList$1,
SajdaList: SajdaList$1,
SurahList: SurahList$1
};
//#endregion
//#region src/lists/WarshLists.ts
const HizbQuarterList = [
0,
1,
32,
50,
66,
82,
98,
112,
130,
148,
164,
183,
195,
208,
224,
238,
248,
258,
269,
278,
289,
307,
325,
343,
366,
383,
405,
425,
445,
463,
478,
498,
505,
516,
528,
549,
565,
578,
591,
605,
621,
639,
657,
671,
680,
692,
710,
718,
736,
751,
766,
780,
803,
826,
849,
870,
885,
901,
917,
931,
941,
957,
984,
1002,
1020,
1043,
1072,
1098,
1112,
1127,
1144,
1167,
1184,
1203,
1223,
1243,
1257,
1272,
1284,
1299,
1314,
1332,
1350,
1362,
1379,
1394,
1417,
1439,
1461,
1483,
1501,
1518,
1538,
1560,
1582,
1608,
1631,
1651,
1675,
1699,
1714,
1730,
1745,
1766,
1783,
1808,
1856,
1907,
1936,
1957,
1977,
1996,
2017,
2035,
2057,
2084,
2104,
2133,
2161,
2176,
2197,
2218,
2239,
2270,
2308,
2349,
2402,
2429,
2456,
2483,
2512,
2533,
2568,
2594,
2612,
2629,
2651,
2670,
2705,
2745,
2785,
2809,
2823,
2839,
2849,
2871,
2895,
2928,
2977,
3038,
3108,
3159,
3180,
3211,
3237,
3259,
3277,
3299,
3324,
3343,
3361,
3382,
3413,
3435,
3458,
3485,
3508,
3533,
3547,
3558,
3578,
3587,
3607,
3624,
3646,
3669,
3694,
3727,
3759,
3804,
3865,
3927,
3984,
4015,
4059,
4081,
4100,
4123,
4143,
4163,
4188,
4214,
4231,
4252,
4270,
4290,
4307,
4332,
4372,
4422,
4464,
4491,
4510,
4535,
4558,
4581,
4593,
4606,
4637,
4686,
4737,
4788,
4841,
4879,
4937,
5033,
5069,
5083,
5096,
5114,
5134,
5155,
5174,
5190,
5206,
5219,
5268,
5339,
5393,
5428,
5473,
5529,
5586,
5649,
5729,
5790,
5875,
5924,
6001,
6068,
6134,
6215
];
const JuzList = [
0,
1,
148,
258,
383,
516,
639,
751,
901,
1043,
1203,
1332,
1483,
1651,
1808,
2035,
2218,
2483,
2670,
2871,
3211,
3382,
3558,
3727,
4081,
4252,
4491,
4686,
5083,
5219,
5649,
6215
];
const ManzilList = [
0,
1,
668,
1369,
2035,
2928,
3783,
4611,
6215
];
const PageList = [
0,
1,
8,
12,
23,
31,
36,
44,
55,
64,
68,
76,
83,
90,
95,
100,
108,
112,
119,
126,
133,
141,
148,
152,
160,
170,
176,
183,
188,
193,
197,
203,
208,
216,
221,
225,
230,
236,
239,
243,
251,
254,
258,
263,
266,
271,
276,
281,
288,
289,
293,
302,
308,
315,
322,
330,
338,
344,
353,
362,
369,
375,
383,
393,
401,
408,
414,
425,
433,
441,
446,
450,
458,
466,
473,
479,
487,
493,
499,
504,
507,
512,
516,
519,
526,
530,
537,
543,
551,
557,
566,
571,
578,
583,
586,
593,
597,
605,
613,
619,
626,
632,
639,
646,
654,
662,
667,
671,
674,
678,
682,
687,
693,
701,
706,
711,
715,
720,
727,
734,
740,
747,
753,
760,
765,
773,
778,
783,
790,
799,
809,
818,
826,
835,
843,
850,
858,
864,
872,
881,
885,
892,
901,
909,
915,
921,
928,
933,
937,
942,
948,
957,
967,
978,
985,
992,
999,
1007,
1013,
1023,
1029,
1037,
1043,
1051,
1060,
1076,
1086,
1094,
1100,
1106,
1112,
1116,
1120,
1127,
1135,
1144,
1152,
1163,
1171,
1179,
1188,
1196,
1203,
1209,
1216,
1225,
1233,
1239,
1245,
1252,
1259,
1265,
1270,
1275,
1279,
1286,
1293,
1300,
1307,
1312,
1319,
1326,
1333,
1339,
1346,
1351,
1357,
1362,
1369,
1375,
1383,
1389,
1394,
1402,
1411,
1422,
1430,
1439,
1447,
1457,
1466,
1475,
1483,
1490,
1497,
1506,
1515,
1523,
1531,
1539,
1548,
1558,
1566,
1575,
1586,
1595,
1603,
1613,
1621,
1629,
1636,
1642,
1651,
1662,
1668,
1677,
1685,
1694,
1702,
1710,
1716,
1724,
1730,
1739,
1745,
1753,
1761,
1767,
1775,
1780,
1789,
1798,
1808,
1823,
1839,
1859,
1878,
1898,
1913,
1921,
1933,
1941,
1949,
1961,
1971,
1979,
1986,
1994,
2e3,
2009,
2017,
2025,
2035,
2042,
2052,
2062,
2073,
2084,
2093,
2101,
2110,
2121,
2131,
2139,
2149,
2160,
2165,
2172,
2179,
2189,
2197,
2205,
2218,
2227,
2238,
2250,
2260,
2274,
2287,
2301,
2314,
2327,
2346,
2360,
2385,
2399,
2412,
2424,
2435,
2445,
2459,
2472,
2483,
2493,
2507,
2518,
2527,
2540,
2554,
2563,
2572,
2583,
2594,
2599,
2609,
2615,
2622,
2630,
2638,
2647,
2656,
2664,
2670,
2687,
2697,
2712,
2730,
2745,
2760,
2775,
2789,
2799,
2809,
2816,
2820,
2825,
2831,
2840,
2845,
2848,
2853,
2862,
2871,
2883,
2894,
2906,
2918,
2928,
2946,
2966,
2988,
3011,
3039,
3064,
3087,
3111,
3134,
3154,
3167,
3176,
3190,
3200,
3211,
3219,
3232,
3244,
3253,
3261,
3269,
3277,
3284,
3292,
3299,
3308,
3319,
3326,
3333,
3342,
3350,
3359,
3367,
3375,
3382,
3389,
3400,
3410,
3420,
3429,
3437,
3446,
3455,
3465,
3475,
3483,
3492,
3498,
3509,
3518,
3528,
3534,
3543,
3550,
3558,
3563,
3571,
3578,
3582,
3590,
3601,
3608,
3615,
3623,
3632,
3640,
3649,
3658,
3666,
3673,
3685,
3693,
3700,
3712,
3727,
3740,
3754,
3770,
3783,
3807,
3834,
3859,
3885,
3909,
3936,
3965,
3980,
3990,
4006,
4025,
4047,
4057,
4062,
4071,
4081,
4088,
4095,
4104,
4115,
4122,
4129,
4138,
4148,
4156,
4163,
4172,
4181,
4189,
4199,
4207,
4217,
4226,
4235,
4244,
4252,
4260,
4268,
4273,
4280,
4289,
4301,
4308,
4319,
4331,
4342,
4356,
4370,
4383,
4399,
4416,
4436,
4455,
4467,
4476,
4486,
4495,
4504,
4510,
4518,
4525,
4537,
4545,
4555,
4564,
4573,
4579,
4587,
4592,
4597,
4604,
4611,
4626,
4646,
4662,
4686,
4707,
4728,
4745,
4763,
4789,
4806,
4830,
4851,
4873,
4895,
4919,
4947,
4974,
5009,
5035,
5058,
5066,
5072,
5078,
5083,
5089,
5094,
5103,
5107,
5113,
5120,
5128,
5133,
5139,
5146,
5155,
5163,
5170,
5177,
5186,
5195,
5200,
5207,
5214,
5219,
5232,
5246,
5266,
5292,
5309,
5337,
5364,
5394,
5408,
5428,
5441,
5456,
5473,
5492,
5520,
5547,
5573,
5593,
5618,
5649,
5679,
5705,
5734,
5774,
5805,
5828,
5857,
5884,
5907,
5934,
5965,
5993,
6019,
6045,
6070,
6096,
6114,
6131,
6155,
6172,
6186,
6200,
6215
];
const SajdaList = [
1162,
1725,
1956,
2142,
2307,
2611,
2910,
3179,
3512,
3987,
4242,
4823,
5880,
6103
];
const SurahList = [
[
-1,
1,
1,
1,
"",
false
],
[
1,
7,
1,
1,
"الفَاتِحة",
true
],
[
8,
285,
2,
1,
"البَقَرَة",
true
],
[
293,
200,
3,
1,
"آل عِمران",
true
],
[
493,
175,
4,
1,
"النِّسَاء",
true
],
[
668,
122,
5,
1,
"المَائدة",
true
],
[
790,
167,
6,
1,
"الأنعَام",
true
],
[
957,
206,
7,
1,
"الأعرَاف",
true
],
[
1163,
76,
8,
1,
"الأنفَال",
true
],
[
1239,
130,
9,
1,
"التوبَة",
true
],
[
1369,
109,
10,
1,
"يُونس",
true
],
[
1478,
121,
11,
1,
"هُود",
true
],
[
1599,
111,
12,
1,
"يُوسُف",
true
],
[
1710,
44,
13,
1,
"الرَّعد",
true
],
[
1754,
54,
14,
1,
"إبراهِيم",
true
],
[
1808,
99,
15,
1,
"الحِجر",
true
],
[
1907,
128,
16,
1,
"النَّحل",
true
],
[
2035,
110,
17,
1,
"الإسرَاء",
true
],
[
2145,
105,
18,
1,
"الكَهف",
true
],
[
2250,
99,
19,
1,
"مَريَم",
true
],
[
2349,
134,
20,
1,
"طه",
true
],
[
2483,
111,
21,
1,
"الأنبيَاء",
true
],
[
2594,
76,
22,
1,
"الحج",
true
],
[
2670,
119,
23,
1,
"المؤمنُون",
true
],
[
2789,
62,
24,
1,
"النور",
true
],
[
2851,
77,
25,
1,
"الفُرقَان",
true
],
[
2928,
226,
26,
1,
"الشعراء",
true
],
[
3154,
95,
27,
1,
"النَّمل",
true
],
[
3249,
88,
28,
1,
"القَصَص",
true
],
[
3337,
69,
29,
1,
"العَنكبُوت",
true
],
[
3406,
59,
30,
1,
"الرُّوم",
true
],
[
3465,
33,
31,
1,
"لُقمَان",
true
],
[
3498,
30,
32,
1,
"السَّجدة",
true
],
[
3528,
73,
33,
1,
"الأحزَاب",
true
],
[
3601,
54,
34,
1,
"سَبإ",
true
],
[
3655,
46,
35,
1,
"فَاطِر",
true
],
[
3701,
82,
36,
1,
"يسٓ",
true
],
[
3783,
182,
37,
1,
"الصَّافَات",
true
],
[
3965,
86,
38,
1,
"صٓ",
true
],
[
4051,
72,
39,
1,
"الزُّمَر",
true
],
[
4123,
84,
40,
1,
"غَافِر",
true
],
[
4207,
53,
41,
1,
"فُصِّلَت",
true
],
[
4260,
50,
42,
1,
"الشُّوري",
true
],
[
4310,
89,
43,
1,
"الزُّخرُف",
true
],
[
4399,
56,
44,
1,
"الدُّخان",
true
],
[
4455,
36,
45,
1,
"الجاثِية",
true
],
[
4491,
34,
46,
1,
"الأحقَاف",
true
],
[
4525,
39,
47,
1,
"مُحمد",
true
],
[
4564,
29,
48,
1,
"الفَتح",
true
],
[
4593,
18,
49,
1,
"الحُجُرَات",
true
],
[
4611,
45,
50,
1,
"قٓ",
true
],
[
4656,
60,
51,
1,
"الذَّاريَات",
true
],
[
4716,
47,
52,
1,
"الطُّور",
true
],
[
4763,
61,
53,
1,
"النَّجم",
true
],
[
4824,
55,
54,
1,
"القَمَر",
true
],
[
4879,
77,
55,
1,
"الرَّحمٰن",
true
],
[
4956,
99,
56,
1,
"الوَاقِعة",
true
],
[
5055,
28,
57,
1,
"الحدِيد",
true
],
[
5083,
21,
58,
1,
"المُجَادلة",
true
],
[
5104,
24,
59,
1,
"الحَشر",
true
],
[
5128,
13,
60,
1,
"المُمتَحنَة",
true
],
[
5141,
14,
61,
1,
"الصَّف",
true
],
[
5155,
11,
62,
1,
"الجُمعَة",
true
],
[
5166,
11,
63,
1,
"المُنَافِقُونَ",
true
],
[
5177,
18,
64,
1,
"التغَابُن",
true
],
[
5195,
12,
65,
1,
"الطَّلَاق",
true
],
[
5207,
12,
66,
1,
"التَّحرِيم",
true
],
[
5219,
31,
67,
1,
"المُلك",
true
],
[
5250,
52,
68,
1,
"القَلَم",
true
],
[
5302,
52,
69,
1,
"الحَاقة",
true
],
[
5354,
44,
70,
1,
"المَعَارج",
true
],
[
5398,
30,
71,
1,
"نُوح",
true
],
[
5428,
28,
72,
1,
"الجِن",
true
],
[
5456,
18,
73,
1,
"المُزمل",
true
],
[
5474,
55,
74,
1,
"المُدثر",
true
],
[
5529,
39,
75,
1,
"القِيَامة",
true
],
[
5568,
31,
76,
1,
"الإنسَان",
true
],
[
5599,
50,
77,
1,
"المُرسَلات",
true
],
[
5649,
40,
78,
1,
"النَّبَإ",
true
],
[
5689,
45,
79,
1,
"النَّازعَات",
true
],
[
5734,
42,
80,
1,
"عَبَسَ",
true
],
[
5776,
29,
81,
1,
"التَّكوير",
true
],
[
5805,
19,
82,
1,
"الانفِطَار",
true
],
[
5824,
36,
83,
1,
"المُطَففين",
true
],
[
5860,
25,
84,
1,
"الانشِقَاق",
true
],
[
5885,
22,
85,
1,
"البُرُوج",
true
],
[
5907,
17,
86,
1,
"الطَّارق",
true
],
[
5924,
19,
87,
1,
"الأعلى",
true
],
[
5943,
26,
88,
1,
"الغَاشِية",
true
],
[
5969,
32,
89,
1,
"الفَجر",
true
],
[
6001,
20,
90,
1,
"البَلَد",
true
],
[
6021,
15,
91,
1,
"الشَّمس",
true
],
[
6036,
21,
92,
1,
"اللَّيل",
true
],
[
6057,
11,
93,
1,
"الضُّحى",
true
],
[
6068,
8,
94,
1,
"الشَّرح",
true
],
[
6076,
8,
95,
1,
"التِّين",
true
],
[
6084,
20,
96,
1,
"العَلَق",
true
],
[
6104,
5,
97,
1,
"القَدر",
true
],
[
6109,
8,
98,
1,
"البَينَة",
true
],
[
6117,
9,
99,
1,
"الزَّلزَلة",
true
],
[
6126,
11,
100,
1,
"العَاديَات",
true
],
[
6137,
10,
101,
1,
"القَارعَة",
true
],
[
6147,
8,
102,
1,
"التَّكاثُر",
true
],
[
6155,
3,
103,
1,
"العَصر",
true
],
[
6158,
9,
104,
1,
"الهُمَزة",
true
],
[
6167,
5,
105,
1,
"الفِيل",
true
],
[
6172,
5,
106,
1,
"قُرَيش",
true
],
[
6177,
6,
107,
1,
"المَاعُون",
true
],
[
6183,
3,
108,
1,
"الكَوثر",
true
],
[
6186,
6,
109,
1,
"الكافِرون",
true
],
[
6192,
3,
110,
1,
"النَّصر",
true
],
[
6195,
5,
111,
1,
"المَسَد",
true
],
[
6200,
4,
112,
1,
"الإخلَاص",
true
],
[
6204,
5,
113,
1,
"الفَلَق",
true
],
[
6209,
6,
114,
1,
"النَّاس",
true
],
[
6215,
1,
1,
1,
"",
false
]
];
const RukuList = [
0,
1,
8,
14,
27,
36,
46,
53,
66,
68,
78,
90,
93,
103,
110,
119,
128,
136,
148,
154,
159,
170,
174,
183,
189,
195,
203,
216,
224,
227,
234,
237,
241,
251,
254,
259,
264,
267,
273,
280,
288,
290,
293,
302,
313,
323,
334,
346,
355,
363,
372,
383,
394,
402,
413,
422,
436,
441,
448,
464,
473,
482,
493,
503,
507,
515,
518,
526,
535,
542,
551,
562,
568,
579,
583,
588,
592,
596,
604,
607,
618,
627,
633,
644,
654,
663,
668,
674,
680,
689,
696,
704,
713,
720,
723,
736,
747,
756,
759,
770,
778,
785,
790,
801,
811,
821,
832,
841,
846,
851,
860,
873,
881,
885,
891,
901,
912,
920,
931,
935,
941,
945,
957,
966,
981,
986,
995,
1003,
1009,
1014,
1020,
1028,
1040,
1049,
1055,
1064,
1082,
1085,
1098,
1104,
1108,
1114,
1119,
1128,
1138,
1145,
1163,
1173,
1182,
1191,
1200,
1208,
1212,
1222,
1227,
1233,
1239,
1245,
1255,
1263,
1268,
1276,
1281,
1298,
1305,
1312,
1320,
1329,
1339,
1350,
1358,
1362,
1369,
1379,
1389,
1399,
1409,
1422,
1429,
1439,
1451,
1461,
1472,
1478,
1486,
1502,
1513,
1527,
1537,
1545,
1560,
1573,
1587,
1599,
1605,
1619,
1628,
1634,
1641,
1648,
1656,
1667,
1678,
1692,
1703,
1710,
1718,
1730,
1737,
1742,
1748,
1754,
1762,
1769,
1777,
1783,
1790,
1797,
1808,
1823,
1833,
1852,
1868,
1887,
1907,
1916,
1928,
1932,
1941,
1947,
1957,
1967,
1972,
1977,
1983,
1990,
1996,
2007,
2017,
2026,
2035,
2045,
2057,
2065,
2075,
2087,
2095,
2105,
2112,
2119,
2128,
2135,
2145,
2157,
2162,
2168,
2176,
2188,
2193,
2197,
2203,
2214,
2226,
2242,
2250,
2264,
2289,
2300,
2315,
2333,
2349,
2372,
2402,
2424,
2437,
2451,
2461,
2475,
2483,
2493,
2512,
2524,
2533,
2557,
2575,
2594,
2604,
2614,
2617,
2625,
2630,
2640,
2649,
2656,
2664,
2670,
2692,
2702,
2721,
2748,
2763,
2789,
2799,
2809,
2815,
2823,
2828,
2837,
2844,
2848,
2851,
2860,
2871,
2885,
2895,
2911,
2928,
2936,
2960,
2980,
2997,
3032,
3050,
3068,
3087,
3103,
3119,
3154,
3168,
3185,
3200,
3211,
3222,
3238,
3249,
3261,
3269,
3277,
3291,
3299,
3309,
3324,
3337,
3349,
3358,
3367,
3381,
3388,
3400,
3406,
3415,
3425,
3432,
3445,
3458,
3465,
3475,
3483,
3498,
3509,
3520,
3528,
3536,
3548,
3555,
3558,
3568,
3580,
3586,
3596,
3601,
3610,
3622,
3631,
3637,
3646,
3655,
3662,
3669,
3681,
3692,
3701,
3712,
3732,
3750,
3767,
3783,
3804,
3857,
3896,
3921,
3965,
3978,
3990,
4004,
4028,
4051,
4061,
4071,
4081,
4089,
4100,
4111,
4118,
4123,
4131,
4143,
4150,
4160,
4173,
4183,
4191,
4200,
4207,
4214,
4224,
4231,
4238,
4250,
4260,
4267,
4277,
4287,
4300,
4310,
4324,
4334,
4344,
4354,
4366,
4377,
4399,
4427,
4439,
4455,
4465,
4475,
4480,
4491,
4500,
4510,
4516,
4525,
4537,
4545,
4554,
4564,
4574,
4581,
4590,
4593,
4603,
4611,
4626,
4640,
4656,
4679,
4702,
4716,
4742,
4763,
4788,
4794,
4824,
4846,
4864,
4879,
4902,
4923,
4956,
4996,
5033,
5055,
5065,
5073,
5079,
5083,
5089,
5096,
5104,
5114,
5121,
5128,
5134,
5141,
5150,
5155,
5163,
5166,
5174,
5177,
5187,
5195,
5202,
5207,
5214,
5219,
5234,
5250,
5283,
5302,
5339,
5354,
5389,
5398,
5418,
5428,
5447,
5456,
5473,
5474,
5505,
5529,
5558,
5568,
5590,
5599,
5639,
5649,
5679,
5689,
5715,
5734,
5776,
5805,
5824,
5860,
5885,
5907,
5924,
5943,
5969,
6001,
6021,
6036,
6057,
6068,
6076,
6084,
6104,
6109,
6117,
6126,
6137,
6147,
6155,
6158,
6167,
6172,
6177,
6183,
6186,
6192,
6195,
6200,
6204,
6209,
6215
];
/**
* Warsh riwaya metadata
*/
const WarshMeta = {
riwayaName: "Warsh",
numAyahs: 6214,
numSurahs: 114,
numPages: 604,
numJuzs: 30,
numHizbs: 60,
numRubAlHizbs: 240,
numThumunAlHizbs: 480,
numRubsInJuz: 8,
numSajdas: 14,
numRukus: 556,
numManzils: 7
};
const WarshLists = {
meta: WarshMeta,
HizbQuarterList,
JuzList,
ManzilList,
PageList,
RukuList,
SajdaList,
SurahList
};
//#endregion
//#region src/types.ts
/**
* The maximum number of ayahs (verses) that can exist in any surah (chapter) of the Quran.
* This maximum occurs in Surah Al-Baqarah (2), which has 286 ayahs.
*/
const maxAyahsInSurah = 286;
//#endregion
//#region src/validation.ts
/**
* Validates if the provided value is a valid Surah number.
*
* @param surah - The value to validate, can be a Surah object, number, or unknown type
* @throws TypeError When the provided value is not an integer
* @throws RangeError When the provided surah number is outside the valid range (1 to total number of surahs)
* @remarks This is a type assertion function that ensures the input is a valid Surah
*/
function checkValidSurah(surah, meta) {
if (typeof surah !== "number" || !Number.isInteger(surah)) throw new TypeError("Ayah ID must be an integer");
if (!isValidSurah(surah, meta)) throw new RangeError("Surah must be between 1 and " + meta.numSurahs);
}
/**
* Validates if the given surah and ayah numbers form a valid combination.
* @param surah - The surah number or Surah object to validate
* @param ayah - The ayah number or AyahNo object to validate
* @throws Error If the surah-ayah combination is invalid
*/
function checkValidSurahAyah(surah, ayah, data) {
checkValidSurahAyahPair([surah, ayah], data);
}
/**
* Validates that a surah-ayah pair contains valid values
* @param surahAyah - A tuple containing surah number/object and ayah number
* @throws RangeError If ayah number is not between 1 and the maximum ayah count for the given surah
* @throws If surah is invalid (from checkValidSurah)
* @example
* ```ts
* checkValidSurahAyahPair([1, 7]) // Valid
* checkValidSurahAyahPair([1, 8]) // Throws RangeError
* ```
*/
function checkValidSurahAyahPair(surahAyah, data) {
const [surah, ayah] = surahAyah;
checkValidSurah(surah, data.meta);
if (typeof ayah !== "number" || !Number.isInteger(ayah) || ayah < 1 || ayah > getAyahCountInSurah(surah, data)) throw new RangeError("Ayah must be between 1 and " + getAyahCountInSurah(surah, data));
}
/**
* Validates and asserts that the given value is a valid Ayah ID.
* An Ayah ID must be an integer between 1 and the total number of Ayahs.
*
* @param ayahId - The value to check as an Ayah ID
* @throws TypeError If the value is not an integer
* @throws RangeError If the value is not within valid Ayah ID range
*/
function checkValidAyahId(ayahId, meta) {
if (typeof ayahId !== "number" || !Number.isInteger(ayahId)) throw new TypeError("Ayah ID must be an integer");
if (!isValidAyahId(ayahId, meta)) throw new RangeError("Ayah ID must be between 1 and " + meta.numAyahs);
}
/**
* Checks if a value is a valid Page number.
* @param x - The value to check
* @throws {@link TypeError} When the value is not an integer
* @throws {@link RangeError} When the value is not within valid page range (1 to numPages)
* @remarks This is a type assertion function that ensures a value is a valid Page number
*/
function checkValidPage(x, meta) {
if (typeof x !== "number" || !Number.isInteger(x)) throw new TypeError("Page must be an integer");
if (!isValidPage(x, meta)) throw new RangeError("Page must be between 1 and " + meta.numPages);
}
/**
* Type guard that checks if a value is a valid Juz number.
* Throws TypeError if value is not an integer.
* Throws RangeError if value is outside valid Juz range.
*
* @param x - Value to check
* @throws {@link TypeError} If value is not an integer
* @throws {@link RangeError} If value is not between 1 and the total number of Juz
*/
function checkValidJuz(x, meta) {
if (typeof x !== "number" || !Number.isInteger(x)) throw new TypeError("Juz must be an integer");
if (!isValidJuz(x, meta)) throw new RangeError("Juz must be between 1 and " + meta.numJuzs);
}
/**
* Type guard that checks if a value is a valid Ruku number.
* @param x - The value to check
* @throws {@link TypeError} If the value is not an integer number
* @throws {@link RangeError} If the number is not within valid Ruku range
* @example
* ```ts
* checkValidRuku(5); // OK
* checkValidRuku("5"); // Throws TypeError
* checkValidRuku(999); // Throws RangeError
* ```
*/
function checkValidRuku(x, meta) {
if (typeof x !== "number" || !Number.isInteger(x)) throw new TypeError("Ruku must be an integer");
if (!isValidRuku(x, meta)) throw new RangeError("Ruku must be between 1 and " + meta.numRukus);
}
/**
* Type guard that checks if a value is a valid Manzil number.
* @param x - The value to check
* @throws {@link TypeError} If the value is not an integer
* @throws {@link RangeError} If the value is not within valid Manzil range (1 to max manzils)
* @remarks This is an assertion function that ensures the input is a valid Manzil type
*/
function checkValidManzil(x, meta) {
if (typeof x !== "number" || !Number.isInteger(x)) throw new TypeError("Manzil must be an integer");
if (!isValidManzil(x, meta)) throw new RangeError("Manzil must be between 1 and " + meta.numManzils);
}
//#endregion
//#region src/getSurahInfo.ts
/**
* Gets the metadata for the specified Surah.
*
* @param surah - The Surah to get the metadata for.
* @param data - The Lists object containing SurahList.
* @returns The metadata for the specified Surah.
*/
function getSurahInfo(surah, data) {
checkValidSurah(surah, data.meta);
return data.SurahList[surah];
}
//#endregion
//#region src/getAyahCountInSurah.ts
/**
* Get the number of ayahs (verses) in the specified surah.
* @param surah - The surah number.
* @param data - The Lists object containing SurahList.
* @returns The number of ayahs in the specified surah.
*/
function getAyahCountInSurah(surah, data) {
return getSurahInfo(surah, data)[1];
}
//#endregion
//#region src/typeGuards.ts
/**
* Checks if the given value is a valid AyahId.
*
* @param x - The value to check.
* @returns True if the value is a valid AyahId, otherwise false.
*/
function isValidAyahId(x, meta) {
return Number.isInteger(x) && 1 <= x && x <= meta.numAyahs;
}
/**
* Checks if the given value is a valid Ayah number.
*
* @param x - The value to check.
* @returns True if the value is a valid Ayah number, otherwise false.
*/
function isValidAyahNo(x) {
return Number.isInteger(x) && 1 <= x && x <= maxAyahsInSurah;
}
/**
* Checks if the given value is a valid Surah number.
*
* @param x - The value to check.
* @returns `true` if the value is a valid Surah number, otherwise `false`.
*/
function isValidSurah(x, meta) {
return Number.isInteger(x) && 1 <= x && x <= meta.numSurahs;
}
/**
* Type guard function that checks if a tuple of two numbers represents a valid Surah and Ayah combination.
*
* @param x - A tuple containing [surahNumber, ayahNumber]
* @param lists - The Lists object for the riwaya
* @returns True if the tuple represents a valid Surah-Ayah combination, false otherwise
*
* @example
* ```ts
* isValidSurahAyah([1, 7], HafsLists) // true - Al-Fatiha has 7 ayahs
* isValidSurahAyah([1, 8], HafsLists) // false - Al-Fatiha only has 7 ayahs
* isValidSurahAyah([115, 1], HafsLists) // false - there are only 114 surahs
* ```
*/
function isValidSurahAyah(x, data) {
const [surah, ayah] = x;
if (!isValidSurah(surah, data.meta)) return false;
return Number.isInteger(ayah) && ayah >= 1 && ayah <= getAyahCountInSurah(surah, data);
}
/**
* Type guard that checks if a number is a valid Juz number
* @param x - The number to check
* @returns True if the number is an integer between 1 and the total number of Juzs (inclusive)
*/
function isValidJuz(x, meta) {
return Number.isInteger(x) && 1 <= x && x <= meta.numJuzs;
}
/**
* Type guard to check if a number is a valid Quran page number
* @param x - The number to check
* @returns True if the number is an integer between 1 and the total number of pages (inclusive)
*/
function isValidPage(x, meta) {
return Number.isInteger(x) && 1 <= x && x <= meta.numPages;
}
/**
* Type guard that checks if a value is a valid Ruku number
* @param x - The value to check
* @returns True if x is an integer between 1 and the total number of Rukus
* @example
* ```ts
* if (isValidRuku(5)) {
* // 5 is a valid Ruku number
* }
* ```
*/
function isValidRuku(x, meta) {
return Number.isInteger(x) && 1 <= x && x <= meta.numRukus;
}
/**
* Type guard to check if a value is a valid Manzil number
*
* @param x - The value to check
* @returns True if the value is an integer between 1 and the total number of Manzils
*
* @example
* ```ts
* if (isValidManzil(3)) {
* // value is a valid Manzil number
* }
* ```
*/
function isValidManzil(x, meta) {
return Number.isInteger(x) && 1 <= x && x <= meta.numManzils;
}
//#endregion
//#region src/ayahStringSplitter.ts
/**
* Splits a string representation of Quran reference into surah and ayah components
* @param str - The string to parse, expected format: "surah:ayah" or "surah:ayahStart-ayahEnd"
* @param isStrict - If true, enforces strict format checking. Defaults to true. If false, allows for additional characters in the string
* @returns A tuple containing surah number and either a single ayah number or a range [start, end]
* @throws {@link Error} If the string format is invalid
* @throws {@link Error} If surah number is invalid
* @throws {@link Error} If ayah number(s) are invalid
* @throws {@link sError} If ayah range is invalid (start should be less than end)
* @example
* ```ts
* ayahStringSplitter("2:255") // returns [2, 255]
* ayahStringSplitter("1:1-7") // returns [1, [1, 7]]
* ```
*/
function ayahStringSplitter(str, isStrict = true, data) {
const result = isStrict ? string2NumberSplitterStrict(str) : string2NumberSplitter(str);
if (!result) throw new Error("Invalid string format: " + str);
const { surahOrAyah: surahX, ayah, ayahTo } = result;
const meta = data.meta;
if (!isValidSurah(surahX, meta)) throw new Error("Invalid ayah number: " + str);
const surah = surahX;
let ayahs;
if (ayahTo) {
checkValidAyahId(ayah, meta);
checkValidAyahId(ayahTo, meta);
if (ayah > ayahTo) throw new Error("Invalid ayah range: " + str);
ayahs = [ayah, ayahTo];
} else {
if (!isValidAyahNo(ayah)) throw new Error("Error in data " + str);
checkValidSurahAyah(surah, ayah, data);
ayahs = ayah;
}
return [surah, ayahs];
}
/**
* Splits a string containing surah and ayah numbers into their numeric components.
*
* @param str - Input string containing numbers separated by non-digits (e.g., "2:255" or "2 255" or "2-255")
* @returns An object containing the parsed numbers, or null if parsing fails
* - ayah: The ayah number if present
* - ayahTo: The ending ayah number if a range is specified
* - surahOrAyah: The surah number
* @example
* stringNumberSplitter("2:255") // returns \{ ayah: 255, ayahTo: 0, surahOrAyah: 2 \}
* stringNumberSplitter("2:255-260") // returns \{ ayah: 255, ayahTo: 260, surahOrAyah: 2 \}
* stringNumberSplitter("invalid") // returns null
*/
function string2NumberSplitter(str) {
const sr = /(?<surah>\d{1,3})\D*(?<ayah>\d{0,3})\D*(?<ayahTo>\d{0,3})/.exec(str);
if (sr?.groups && +sr.groups.surah > 0) {
const { ayah, ayahTo, surah } = sr.groups;
return {
surahOrAyah: +surah,
ayah: +ayah,
ayahTo: +ayahTo
};
}
return null;
}
/**
* Splits a string in the format "surah:ayah" or "surah:ayah-ayah" into its numeric components.
*
* @param str - The input string to parse in the format "surah:ayah" or "surah:ayah-ayah"
* @returns An object containing the parsed numbers:
* - surahOrAyah: The surah number
* - ayah: The first or only ayah number
* - ayahTo: The ending ayah number (if range specified)
* @throws {@link Error} When the input string format is invalid or contains non-numeric values
*
* @example
* string2NumberSplitterStrict("2:255") // returns \{ surahOrAyah: 2, ayah: 255, ayahTo: NaN \}
* string2NumberSplitterStrict("2:255-260") // returns \{ surahOrAyah: 2, ayah: 255, ayahTo: 260 \}
*/
function string2NumberSplitterStrict(str) {
let [surahStr, ayahsStr] = str.trim().split(":");
surahStr = surahStr.trim();
const surahX = parseInt(surahStr.trim(), 10);
if (isNaN(surahX)) throw new Error("Error in surah format " + str);
ayahsStr = ayahsStr.trim();
if (!ayahsStr) throw new Error("Error in data " + str);
let ayahs;
if (ayahsStr.includes("-")) ayahs = ayahsStr.split("-").map((a) => {
const ayahX = parseInt(a, 10);
if (isNaN(ayahX)) throw new Error("Error in surah format " + str);
return ayahX;
});
else {
const ayahX = parseInt(ayahsStr, 10);
if (isNaN(ayahX)) throw new Error("Error in surah format " + str);
ayahs = [ayahX, NaN];
}
return {
surahOrAyah: +surahX,
ayah: +ayahs[0],
ayahTo: +ayahs[1]
};
}
//#endregion
//#region src/findAyahIdBySurah.ts
/**
* Get the ayah ID for the given surah and ayah number.
* @param surah - The surah number.
* @param ayah - The ayah number within the surah.
* @param data - The Lists object containing SurahList.
* @returns The ayah ID for the given surah and ayah number.
*/
function findAyahIdBySurah(surah, ayah, data) {
checkValidSurahAyah(surah, ayah, data);
const [startAyahId] = data.SurahList[surah];
return startAyahId + ayah - 1;
}
//#endregion
//#region src/utils.ts
/**
* Performs a binary search on the given array to find the index of the specified element.
*
* @param ar - The array to search.
* @param el - The element to search for.
* @param compare_fn - An optional comparison function to use for the search. Defaults to a simple numeric comparison.
* @returns The index of the element if found, or a negative value indicating the insertion point if not found.
*/
function binarySearch(ar, el, compare_fn = (a, b) => a - b) {
let m = 0;
let n = ar.length - 1;
while (m <= n) {
const k = n + m >> 1;
const cmp = compare_fn(el, ar[k]);
if (cmp > 0) m = k + 1;
else if (cmp < 0) n = k - 1;
else return k;
}
return -m - 1;
}
//#endregion
//#region src/findJuzByAyahId.ts
/**
* Finds the Juz (part) of the Quran that contains the given Ayah (verse) ID.
*
* @param ayahId - The ID of the Ayah (verse) to find the Juz for.
* @param data - The Lists object containing JuzList.
* @returns The Juz (part) of the Quran that contains the given Ayah ID.
*/
function findJuzByAyahId(ayahId, data) {
checkValidAyahId(ayahId, data.meta);
const jj = binarySearch(data.JuzList, ayahId);
return jj < 0 ? -jj - 2 : jj;
}
//#endregion
//#region src/findJuz.ts
/**
* Finds the Juz (part) of the Quran that the given Ayah (verse) belongs to.
*
* @param surah - The Surah (chapter) number.
* @param ayah - The Ayah (verse) number. Defaults to 1 if not provided.
* @param lists - The Lists object containing JuzList and SurahList.
* @returns The Juz (part) number that the given Ayah belongs to.
*/
function findJuz(surah, ayah = 1, lists) {
return findJuzByAyahId(findAyahIdBySurah(surah, ayah, lists), lists);
}
//#endregion
//#region src/findSurahAyahByAyahId.ts
/**
* Finds the Surah (chapter) and Ayah (verse) numbers that the given Ayah ID belongs to.
*
* @param ayahId - The Ayah ID to find the Surah and Ayah numbers for.
* @param lists - The Lists object containing SurahList.
* @returns An array containing the Surah number and the Ayah number within that Surah.
*/
function findSurahAyahByAyahId(ayahId, data) {
checkValidAyahId(ayahId, data.meta);
const SurahList$3 = data.SurahList;
const ss = binarySearch(SurahList$3, ayahId, (aya, b) => aya - b[0]);
const suraNum = ss < 0 ? -ss - 2 : ss;
return [suraNum, ayahId - SurahList$3[suraNum][0] + 1];
}
//#endregion
//#region src/findSurahByAyahId.ts
/**
* Finds a Surah based on the provided Ayah ID.
*
* @param ayaId - The unique identifier of the Ayah
* @param data - The Lists object containing SurahList.
* @returns The Surah that contains the specified Ayah
*
* @example
* const surah = findSurahByAyahId(1234, data);
*/
function findSurahByAyahId(ayaId, data) {
return findSurahAyahByAyahId(ayaId, data)[0];
}
//#endregion
//#region src/findJuzAndShift.ts
/**
* Finds the juz (section) that contains the specified ayah (verse) and calculates the number of ayahs between the start of the juz and the start of the surah (chapter) that contains the ayah.
*
* @param surah - The surah (chapter) that contains the ayah.
* @param ayah - The ayah (verse) number.
* @param lists - The Lists object for the riwaya.
* @returns An object containing the following properties:
* - `juz`: The juz (section) that contains the ayah.
* - `leftAyahId`: The ayah ID of the first ayah in the juz.
* - `ayahsBetweenJuzSurah`: The number of ayahs between the start of the juz and the start of the surah (positive if the surah starts is in the juz, negative if the surah starts before the juz).
*/
function findJuzAndShift(surah, ayah, lists) {
const ayahId = findAyahIdBySurah(surah, ayah, lists);
const JuzList$3 = lists.JuzList;
const SurahList$3 = lists.SurahList;
const juz = findJuzByAyahId(ayahId, lists);
const juzLeftAyahId = JuzList$3[juz];
const [surahStartAyahId] = SurahList$3[surah];
return {
juz,
ayahsBetweenJuzSurah: surahStartAyahId - juzLeftAyahId,
leftAyahId: juzLeftAyahId
};
}
/**
* Finds the Juz number and calculates the shift between Juz start and Surah start for a given Ayah ID
*
* @param ayahId - The unique identifier of an Ayah (verse) in the Quran
* @param data - The Lists object for the riwaya.
* @returns An object containing:
* - juz: The Juz number where the Ayah is located
* - leftAyahId: The starting Ayah ID of the Juz
* - ayahsBetweenJuzSurah: The number of Ayahs between the Juz start and the Surah start
*
* @throws Error If the provided Ayah ID is invalid
*/
function findJuzAndShiftByAyahId(ayahId, data) {
checkValidAyahId(ayahId, data.meta);
const JuzList$3 = data.JuzList;
const SurahList$3 = data.SurahList;
const juz = findJuzByAyahId(ayahId, data);
const leftAyahId = JuzList$3[juz];
const [surahStartAyahId] = SurahList$3[findSurahByAyahId(ayahId, data)];
return {
juz,
ayahsBetweenJuzSurah: surahStartAyahId - leftAyahId,
leftAyahId
};
}
//#endregion
//#region src/findJuzMetaBySurah.ts
/**
* Finds the SurahJuzMeta for a given Surah and Ayah.
*
* @param surah - The Surah (chapter) number.
* @param ayah - The Ayah (verse) number.
* @param data - The Lists object for the riwaya.
* @returns The SurahJuzMeta object containing the left juz, ayahs between juz and surah, right juz, ayah ID of first ayah in left juz, and last ayah ID of right juz .
*/
function findJuzMetaBySurah(surah, ayah = 1, data) {
const { juz: leftjuz, ayahsBetweenJuzSurah, leftAyahId } = findJuzAndShift(surah, ayah, data);
const JuzList$3 = data.JuzList;
let rightJuz = leftjuz;
while (rightJuz < data.meta.numJuzs && findSurahByAyahId(JuzList$3[rightJuz + 1], data) === surah) rightJuz++;
return {
leftjuz,
ayahsBetweenJuzSurah,
rightJuz,
leftAyahId,
rightAyahId: JuzList$3[rightJuz + 1]
};
}
//#endregion
//#region src/findManzilByAyahId.ts
/**
* Finds the Manzil number for a given Ayah ID using binary search.
* A Manzil is one of seven approximately equal divisions of the Quran.
*
* @param ayahId - The ID of the Ayah to find the Manzil for
* @param data - The Lists object for the riwaya.
* @returns The Manzil number (1-7) containing the specified Ayah
* @throws {@link Error} If the provided Ayah ID is invalid
*
* @example
* ```typescript
* const manzil = findManzilByAyahId(2345, HafsLists); // Returns the Manzil containing Ayah 2345
* ```
*/
function findManzilByAyahId(ayahId, data) {
checkValidAyahId(ayahId, data.meta);
const ManzilList$3 = data.ManzilList;
const jj = binarySearch(ManzilList$3, ayahId);
return jj < 0 ? -jj - 2 : jj;
}
//#endregion
//#region src/findManzil.ts
/**
* Finds the Manzil number for a given Surah and Ayah
* @param surah - The Surah number or object
* @param ayah - Optional Ayah number (defaults to 1)
* @param data - The Lists object for the riwaya.
* @returns The Manzil number (1-7) containing the specified Ayah
*/
function findManzil(surah, ayah = 1, data) {
return findManzilByAyahId(findAyahIdBySurah(surah, ayah, data), data);
}
//#endregion
//#region src/findPage.ts
/**
* Finds the page number for the given Surah and Ayah number.
*
* @param surah - The Surah to find the page for.
* @param ayah - The Ayah number to find the page for.
* @param data - The Lists object for the riwaya.
* @returns The page number for the given Surah and Ayah.
*/
function findPage(surah, ayah = 1, data) {
checkValidSurah(surah, data.meta);
const ayahId = findAyahIdBySurah(surah, ayah, data);
const PageList$3 = data.PageList;
const jj = binarySearch(PageList$3, ayahId);
return jj < 0 ? -jj - 2 : jj;
}
//#endregion
//#region src/findPagebyAyahId.ts
/**
* Returns the page number for a given ayah ID in the Quran.
*
* @param ayahId - A numeric identifier representing a verse (ayah) in the Quran
* @param data - The Lists object for the riwaya.
* @returns The page number where the specified ayah can be found
* @throws Will throw an error if the ayahId is invalid
*
* @example
* ```ts
* const page = findPagebyAyahId(142, HafsLists); // Returns the page number containing ayah 142
* ```
*/
function findPagebyAyahId(ayahId, data) {
checkValidAyahId(ayahId, data.meta);
const PageList$3 = data.PageList;
const jj = binarySearch(PageList$3, ayahId);
return jj < 0 ? -jj - 2 : jj;
}
//#endregion
//#region src/findRukuByAyahId.ts
/**
* Finds the Ruku number for a given Ayah ID using binary search.
*
* @param ayahId - The unique identifier of an Ayah in format: surah:ayah (e.g., "2:255")
* @param data - The Lists object for the riwaya.
* @returns The Ruku number corresponding to the given Ayah ID
* @throws {@link Error} If the provided Ayah ID is invalid
*
* @example
* ```ts
* const ruku = findRukuByAyahId("2:255", HafsLists);
* // Returns the Ruku number containing Ayah 255 of Surah 2
* ```
*/
function findRukuByAyahId(ayahId, data) {
checkValidAyahId(ayahId, data.meta);
const RukuList$3 = data.RukuList;
const jj = binarySearch(RukuList$3, ayahId);
return jj < 0 ? -jj - 2 : jj;
}
//#endregion
//#region src/findRangeAroundAyah.ts
/**
* Finds the range of ayahs surrounding a given ayah based on specified mode
* @param ayahId - The unique identifier of the ayah
* @param mode - The scope for finding the range:
* - "juz": Returns range of ayahs in the same juz
* - "surah": Returns range of ayahs in the same surah
* - "ayah": Returns the single ayah as both start and end of range
* - "page": Returns range of ayahs on the same page
* - "ruku": Returns range of ayahs on the same ruku
* - "all": Returns range covering all ayahs (1 to total number of ayahs)
* @param data - The Lists object for the riwaya.
* @returns An array of two numbers representing the start and end ayah IDs of the range [startAyahId, endAyahId]
*/
function findRangeAroundAyah(ayahId, mode, data) {
const JuzList$3 = data.JuzList;
const SurahList$3 = data.SurahList;
const PageList$3 = data.PageList;
const RukuList$3 = data.RukuList;
switch (mode) {
case "juz": {
const juz = findJuzByAyahId(ayahId, data);
return [JuzList$3[juz], JuzList$3[juz + 1] - 1];
}
case "surah": {
const surah = findSurahByAyahId(ayahId, data);
return [SurahList$3[surah][0], SurahList$3[surah + 1][0] - 1];
}
case "ayah": return [ayahId, ayahId];
case "page": {
const page = findPagebyAyahId(ayahId, data);
return [PageList$3[page], PageList$3[page + 1] - 1];
}
case "ruku": {
const ruku = findRukuByAyahId(ayahId, data);
return [RukuList$3[ruku], RukuList$3[ruku + 1] - 1];
}
case "all":
default: return [1, data.meta.numAyahs];
}
}
//#endregion
//#region src/findRangeAroundSurahAyah.ts
/**
* Finds a range of ayahs around a given ayah based on the specified mode.
*
* @param surah - The surah number (1-114)
* @param ayah - The ayah number within the surah
* @param mode - The range mode: "juz", "surah", "ayah", "page", "ruku" or "all"
* @param lists - The Lists object for the riwaya.
* @returns A tuple containing the start and end ayah IDs of the range
*/
function findRangeAroundSurahAyah(surah, ayah, mode, data) {
checkValidSurah(surah, data.meta);
const SurahList$3 = data.SurahList;
if (mode === "surah") return [SurahList$3[surah][0], SurahList$3[surah + 1][0] - 1];
return findRangeAroundAyah(findAyahIdBySurah(surah, ayah, data), mode, data);
}
//#endregion
//#region src/findRubAlHizbByAyahId.ts
/**
* Finds the Maqra/Rub-al-Hizb of the Quran that contains the given Ayah (verse) ID.
*
* @param ayahId - The ID of the Ayah (verse) to find the Juz for.
* @param lists - The Lists object for the riwaya.
* @returns The Maqra of the Quran that contains the given Ayah ID.
*/
function findRubAlHizbByAyahId(ayahId, data) {
checkValidAyahId(ayahId, data.meta);
const HizbQuarterList$3 = data.HizbQuarterList;
const jj = binarySearch(HizbQuarterList$3, ayahId);
return jj < 0 ? -jj - 2 : jj;
}
//#endregion
//#region src/findRubAlHizb.ts
/**
* Finds the Juz (part) and Rub-ul-Hizb/Maqra (quarter section) of the Quran that the given Ayah (verse) belongs to.
*
* @param surah - The Surah (chapter) number.
* @param ayah - The Ayah (verse) number. Defaults to 1 if not provided.
* @param data - The Lists object containing SurahList and HizbQuarterList.
* @returns An object containing the Juz (part) number, Hizb (section) number, and the index of the Hizb that the given Ayah belongs to.
*/
function findRubAlHizb(surah, ayah = 1, data) {
checkValidSurah(surah, data.meta);
return findRubAlHizbByAyahId(findAyahIdBySurah(surah, ayah, data), data);
}
//#endregion
//#region src/findThumunAlHizbByAyahId.ts
/**
* Finds the Maqra/Rub-al-Hizb of the Quran that contains the given Ayah (verse) ID.
*
* @param ayahId - The ID of the Ayah (verse) to find the Juz for.
* @param data - The Lists object for the riwaya.
* @returns The thumun of the Quran that contains the given Ayah ID.
*/
function findThumunAlHizbByAyahId(ayahId, data) {
checkValidAyahId(ayahId, data.meta);
const HizbEighthList$1 = data.HizbEighthList;
if (!HizbEighthList$1) throw new Error(`Riwaya ${data.meta.riwayaName} does not have Hizb Eighth List data.`);
const jj = binarySearch(HizbEighthList$1, ayahId);
return jj < 0 ? -jj - 2 : jj;
}
//#endregion
//#region src/findThumunAlHizb.ts
/**
* Finds the Juz (part) and thumun-ul-Hizb (Eighth section) of the Quran that the given Ayah (verse) belongs to.
*
* @param surah - The Surah (chapter) number.
* @param ayah - The Ayah (verse) number. Defaults to 1 if not provided.
* @param riwaya - The riwaya. Defaults to "Qalun" if not provided.
* @returns An object containing the Juz (part) number, Hizb (section) number, and the index of the Hizb that the given Ayah belongs to.
*/
function findThumunAlHizb(surah, ayah = 1, data) {
checkValidSurah(surah, data.meta);
return findThumunAlHizbByAyahId(findAyahIdBySurah(surah, ayah, data), data);
}
//#endregion
//#region src/lists/types.ts
const parts = {
surah: "SurahList",
juz: "JuzList",
rubAlHizb: "HizbQuarterList",
thumunAlHizb: "HizbEighthList",
page: "PageList",
manzil: "ManzilList",
ruku: "RukuList"
};
//#endregion
//#region src/lists/getList.ts
function toPartFormatter(type, list) {
return type === "surah" ? ([startAyahId, ayahCount]) => ({
startAyahId,
ayahCount
}) : (ayahId, index) => {
return {
startAyahId: ayahId,
ayahCount: list[index + 2] - ayahId
};
};
}
/**
* Retrieves a formatted list of Quran parts based on the specified type.
* @param name - The type of parts to retrieve (e.g., juz, hizb, rub)
* @param data - The Lists object for the riwaya.
* @returns An array of formatted part blocks, excluding the first and last elements
*/
function generatePartBlocks(name, data) {
if (!parts[name]) throw new Error(`Invalid part type: ${name}`);
const listName = parts[name];
const list = data[listName];
if (!list) return null;
if (!Array.isArray(list)) throw new TypeError(`Expected array for ${String(listName)}`);
return list.slice(1, -1).map(toPartFormatter(name, list));
}
const getList = (name, lists) => {
if (!parts[name]) throw new Error(`Invalid list name: ${name}`);
const listName = parts[name];
if (listName in lists) return lists[listName];
throw new Error(`List ${String(listName)} not found in ${lists.meta.riwayaName} riwaya`);
};
function getListNormalised(name, lists) {
const list = getList(name, lists);
return list.slice(1, list.length - 1).map(toPartFormatter(name, list));
}
//#endregion
//#region src/getRubAlHizb.ts
/**
* Retrieves the basic metadata for a specific quarter (rub' al-hizb) of the Quran.
*
* @param quarterIndex - The index of the quarter (rub' al-hizb) to retrieve metadata for, where 1 is the first quarter.
* @param riwaya - The riwaya. Defaults to "Hafs" if not provided.
* @returns An object containing the metadata for the specified quarter, including the juz' (part), hizb (section), and the quarter (rub' al-hizb) index.
*/
function getRubAlHizb(quarterIndex) {
return {
juz: Math.floor((quarterIndex - 1) / 8) + 1,
hizbId: Math.floor((quarterIndex - 1) / 4) + 1,
juzPart: quarterIndex % 8 || 8,
rubAlHizbId: quarterIndex
};
}
//#endregion
//#region src/getRubAlHizbByAyahId.ts
/**
* Finds the Juz, Hizb, and Rub-el-Hizb id for the given Ayah ID.
*
* @param ayahId - The Ayah ID to find the Juz, Hizb, and Hizb ID for.
* @param data - The Lists object for the riwaya.
* @returns An object containing the Juz, Hizb, and Hizb ID for the given Ayah ID.
*/
function getRubAlHizbByAyahId(ayahId, data) {
checkValidAyahId(ayahId, data.meta);
return getRubAlHizb(findRubAlHizbByAyahId(ayahId, data));
}
//#endregion
//#region src/getAyahMeta.ts
/**
* Retrieves metadata for a specific ayah of the Quran.
*
* @param ayahId - The ayahId number to retrieve metadata for (1-6236)
* @param data - The Lists object for the riwaya.
* @returns An object containing the ayah related meta, including information about the surah, juz, and quarter the ayah is in.
* @throws RangeError If the ayahId number is not between 1 and 6236
*/
function getAyahMeta(ayahId, data) {
checkValidAyahId(ayahId, data.meta);
const { SurahList: SurahList$3, SajdaList: SajdaList$3, PageList: PageList$3, RukuList: RukuList$3, JuzList: JuzList$3, HizbQuarterList: HizbQuarterList$3 } = data;
const getThumunData = () => {
if ("HizbEighthList" in data && data.HizbEighthList) {
const jj = binarySearch(data.HizbEighthList, ayahId);
return { thumunAlHizbId: jj < 0 ? -jj - 2 : jj };
}
return {};
};
const quarterData = getRubAlHizbByAyahId(ayahId, data);
const [surah, ayah] = findSurahAyahByAyahId(ayahId, data);
const page = findPagebyAyahId(ayahId, data);
const isSajdahAyah = binarySearch(SajdaList$3, ayahId, (a, b) => a - b) >= 0;
const rk = binarySearch(RukuList$3, ayahId);
const isStartOfRuku = rk > 0;
const ruku = isStartOfRuku ? rk : -rk - 2;
const isStartOfSurah = SurahList$3[surah][0] === ayahId;
const isStartOfPage = PageList$3[page] === ayahId;
const isStartOfJuz = JuzList$3[quarterData.juz] === ayahId;
const isStartOfQuarter = HizbQuarterList$3[quarterData.rubAlHizbId] === ayahId;
const isEndOfSurah = SurahList$3[surah + 1][0] - 1 === ayahId;
const isEndOfPage = PageList$3[page + 1] - 1 === ayahId;
const isEndOfJuz = JuzList$3[quarterData.juz + 1] - 1 === ayahId;
const isEndOfRuku = binarySearch(RukuList$3, ayahId + 1) > 0;
const isEndOfQuarter = HizbQuarterList$3[quarterData.rubAlHizbId + 1] - 1 === ayahId;
return {
...quarterData,
...getThumunData(),
surah,
ayah,
page,
isStartOfQuarter,
isEndOfQuarter,
isSajdahAyah,
isStartOfPage,
isEndOfPage,
ruku,
isStartOfJuz,
isEndOfJuz,
isStartOfSurah,
isEndOfSurah,
isStartOfRuku,
isEndOfRuku
};
}
//#endregion
//#region src/getAyahMetasForSurah.ts
/**
* Retrieves metadata for all ayahs in a specific surah.
*
* @param surahNumber - The surah number (1-114)
* @param data - The Lists object for the riwaya.
* @returns Array of AyahMeta objects for each ayah in the surah
* @throws RangeError If the surah number is not between 1 and 114
*/
function getAyahMetasForSurah(surahNumber, data) {
checkValidSurah(surahNumber, data.meta);
const { SurahList: SurahList$3, SajdaList: SajdaList$3, PageList: PageList$3, RukuList: RukuList$3, JuzList: JuzList$3, HizbQuarterList: HizbQuarterList$3 } = data;
const [startAyahId, ayahCount] = SurahList$3[surahNumber];
const endAyahId = startAyahId + ayahCount - 1;
const result = [];
let meta = getAyahMeta(startAyahId, data);
result.push(meta);
for (let ayahId = startAyahId + 1; ayahId <= endAyahId; ayahId++) {
meta = structuredClone(meta);
meta.ayah += 1;
meta.isStartOfSurah = false;
meta.isEndOfSurah = endAyahId === ayahId;
if (PageList$3[meta.page + 1] === ayahId) {
meta.page += 1;
meta.isStartOfPage = true;
} else meta.isStartOfPage = false;
meta.isEndOfPage = PageList$3[meta.page + 1] === ayahId + 1;
if (RukuList$3[meta.ruku + 1] === ayahId) {
meta.ruku += 1;
meta.isStartOfRuku = true;
} else meta.isStartOfRuku = false;
meta.isEndOfRuku = RukuList$3[meta.ruku + 1] === ayahId + 1;
meta.isEndOfJuz = JuzList$3[meta.juz + 1] === ayahId + 1;
if (JuzList$3[meta.juz + 1] === ayahId) {
meta.juz += 1;
meta.hizbId += 1;
meta.isStartOfJuz = true;
} else meta.isStartOfJuz = false;
meta.isEndOfQuarter = HizbQuarterList$3[meta.rubAlHizbId + 1] === ayahId + 1;
if (HizbQuarterList$3[meta.rubAlHizbId + 1] === ayahId) {
meta.rubAlHizbId += 1;
meta.juzPart = meta.isStartOfJuz ? 1 : meta.juzPart + 1;
meta.isStartOfQuarter = true;
if (meta.juzPart === 5) meta.hizbId += 1;
} else meta.isStartOfQuarter = false;
meta.isSajdahAyah = SajdaList$3.includes(ayahId);
result.push(meta);
}
return result;
}
//#endregion
//#region src/getJuzMeta.ts
/**
* Retrieves metadata for a specific Juz of the Quran.
*
* @param juzNum - The Juz number to retrieve metadata for (1-30)
* @param data - The Lists object for the riwaya.
* @returns An object containing the Juz number, first ayah, and last ayah in the Juz
* @throws RangeError If the Juz number is not between 1 and 30
*/
function getJuzMeta(juzNum, data) {
checkValidJuz(juzNum, data.meta);
const JuzList$3 = data.JuzList;
const [firstAyahId, nextJuzAyahId] = [JuzList$3[juzNum], JuzList$3[juzNum + 1]];
const lastAyahId = nextJuzAyahId - 1;
return {
juzNum,
firstAyahId,
lastAyahId,
first: findSurahAyahByAyahId(firstAyahId, data),
last: findSurahAyahByAyahId(lastAyahId, data)
};
}
//#endregion
//#region src/getManzilMeta.ts
/**
* Retrieves metadata for a specific Manzil (section) of the Quran
*
* @param manzilNum - The number of the Manzil (1-7)
* @param data - The Lists object for the riwaya.
* @returns The metadata for the specified Manzil containing:
* - manzilNum: The Manzil number
* - firstAyahId: ID of the first ayah in the Manzil
* - lastAyahId: ID of the last ayah in the Manzil
* - first: Surah and ayah details of the first ayah
* - last: Surah and ayah details of the last ayah
* @throws Will throw an error if manzilNum is invalid
*/
function getManzilMeta(manzilNum, data) {
checkValidManzil(manzilNum, data.meta);
const ManzilList$3 = data.ManzilList;
const [firstAyahId, nextManzilAyahId] = [ManzilList$3[manzilNum], ManzilList$3[manzilNum + 1]];
const lastAyahId = nextManzilAyahId - 1;
return {
manzilNum,
firstAyahId,
lastAyahId,
first: findSurahAyahByAyahId(firstAyahId, data),
last: findSurahAyahByAyahId(lastAyahId, data)
};
}
//#endregion
//#region src/getPageMeta.ts
/**
* Retrieves metadata for a specific page of the Quran.
*
* @param pageNum - The page number to retrieve metadata for (1-604)
* @param data - The Lists object for the riwaya.
* @returns {@link PageMeta} An object containing the page number, first ayah, and last ayah on the page
* @throws {@link RangeError} If the page number is not between 1 and 604
*/
function getPageMeta(pageNum, data) {
checkValidPage(pageNum, data.meta);
const PageList$3 = data.PageList;
const [firstAyahId, nextPage] = [PageList$3[pageNum], PageList$3[pageNum + 1]];
const lastAyahId = nextPage - 1;
return {
pageNum,
firstAyahId,
lastAyahId,
first: findSurahAyahByAyahId(firstAyahId, data),
last: findSurahAyahByAyahId(lastAyahId, data)
};
}
//#endregion
//#region src/getRubAlHizbMeta.ts
/**
* Retrieves the metadata for a specific quarter (rub' al-hizb) of the Quran.
*
* @param quarterIndex - The index of the quarter (rub' al-hizb) to retrieve metadata for, where 1 is the first quarter.
* @param data - The Lists object for the riwaya.
* @returns An object containing the metadata for the specified quarter, including the juz' (part), hizb (section), and the quarter (rub' al-hizb) index.
*/
function getRubAlHizbMeta(quarterIndex, data) {
const res = getRubAlHizb(quarterIndex);
const HizbQuarterList$3 = data.HizbQuarterList;
const [firstAyahId, nextJuzAyahId] = [HizbQuarterList$3[quarterIndex], HizbQuarterList$3[quarterIndex + 1]];
const lastAyahId = nextJuzAyahId - 1;
return {
firstAyahId,
lastAyahId,
first: findSurahAyahByAyahId(firstAyahId, data),
last: findSurahAyahByAyahId(lastAyahId, data),
...res
};
}
//#endregion
//#region src/getRubAlHizbMetaByAyahId.ts
/**
* Finds the Juz, Hizb, and Rub-el-Hizb id for the given Ayah ID.
*
* @param ayahId - The Ayah ID to find the Juz, Hizb, and Hizb ID for.
* @param data - The Lists object containing HizbQuarterList.
* @returns An object containing the Juz, Hizb, and Hizb ID for the given Ayah ID.
*/
function getRubAlHizbMetaByAyahId(ayahId, data) {
checkValidAyahId(ayahId, data.meta);
return getRubAlHizbMeta(findRubAlHizbByAyahId(ayahId, data), data);
}
//#endregion
//#region src/getRukuMeta.ts
/**
* Retrieves metadata for a specific Ruku (section) of the Quran.
* @param rukuNum - The number of the Ruku to retrieve metadata for
* @param data - The Lists object for the riwaya.
* @returns {@link RukuMeta} An object containing metadata about the Ruku including:
* - rukuNum: The Ruku number
* - firstAyahId: The global Ayah ID of the first verse in this Ruku
* - lastAyahId: The global Ayah ID of the last verse in this Ruku
* - first: The Surah and Ayah numbers for the first verse
* - last: The Surah and Ayah numbers for the last verse
* @throws Will throw an error if the provided Ruku number is invalid
*/
function getRukuMeta(rukuNum, data) {
checkValidRuku(rukuNum, data.meta);
const RukuList$3 = data.RukuList;
const [firstAyahId, nextRukuAyahId] = [RukuList$3[rukuNum], RukuList$3[rukuNum + 1]];
const lastAyahId = nextRukuAyahId - 1;
return {
rukuNum,
firstAyahId,
lastAyahId,
first: findSurahAyahByAyahId(firstAyahId, data),
last: findSurahAyahByAyahId(lastAyahId, data)
};
}
//#endregion
//#region src/getSurahMeta.ts
/**
* Gets the metadata for the specified Surah.
*
* @param surahNum - The Surah to get the metadata for.
* @param data - The Lists object containing SurahList.
* @returns The metadata for the specified Surah.
*/
function getSurahMeta(surahNum, data) {
const [firstAyahId, ayahCount, surahOrder, rukuCount, name, isMeccan] = getSurahInfo(surahNum, data);
return {
surahNum,
ayahCount,
surahOrder,
rukuCount,
name,
isMeccan,
firstAyahId,
lastAyahId: firstAyahId + ayahCount - 1,
first: [surahNum, 1],
last: [surahNum, ayahCount]
};
}
//#endregion
//#region src/getThumunAlHizb.ts
/**
* Retrieves the basic metadata for a specific Eighth (thumun' al-hizb) of the Quran.
*
* @param eighthIndex - The index of the Eighth (thumun' al-hizb) to retrieve metadata for, where 1 is the first quarter.
* @returns An object containing the metadata for the specified quarter, including the juz' (part), hizb (section), and the quarter (rub' al-hizb) index.
*/
function getThumunAlHizb(eighthIndex) {
return {
...getRubAlHizb(Math.floor((eighthIndex - 1) / 2) + 1),
thumunAlHizbId: eighthIndex
};
}
//#endregion
//#region src/getThumunAlHizbByAyahId.ts
/**
* Finds the Juz, Hizb, Rub-el-Hizb id and thuumun-el-Hizb id for the given Ayah ID.
*
* @param ayahId - The Ayah ID to find the Juz, Hizb, and Hizb ID for.
* @param data - The riwaya. Defaults to "Qalun" if not provided.
* @returns An object containing the Juz, Hizb, Hizb ID and thuumun-el-Hizb id for the given Ayah ID.
*/
function getThumunAlHizbByAyahId(ayahId, data) {
checkValidAyahId(ayahId, data.meta);
return getThumunAlHizb(findThumunAlHizbByAyahId(ayahId, data));
}
//#endregion
//#region src/getThumunAlHizbMeta.ts
/**
* Retrieves the metadata for a specific quarter (rub' al-hizb) of the Quran.
*
* @param eighthIndex - The index of the Eighth (thumun' al-hizb) to retrieve metadata for, where 1 is the first quarter.
* @param data - The Lists object for the riwaya.
* @returns An object containing the metadata for the specified quarter, including the juz' (part), hizb (section), and the quarter (rub' al-hizb) index.
*/
function getThumunAlHizbMeta(eighthIndex, data) {
const res = getThumunAlHizb(eighthIndex);
const HizbEighthList$1 = data.HizbEighthList;
if (!HizbEighthList$1) throw new Error(`Riwaya ${data.meta.riwayaName} does not have Hizb Eighth List data.`);
const [firstAyahId, nextJuzAyahId] = [HizbEighthList$1[eighthIndex], HizbEighthList$1[eighthIndex + 1]];
const lastAyahId = nextJuzAyahId - 1;
return {
firstAyahId,
lastAyahId,
first: findSurahAyahByAyahId(firstAyahId, data),
last: findSurahAyahByAyahId(lastAyahId, data),
...res
};
}
//#endregion
//#region src/prevAyah.ts
/**
* Get the previous ayah for the given surah and ayah number.
* @param surah - The surah number.
* @param ayah - The ayah number within the surah.
* @param data - The Lists object containing SurahList.
* @returns The surah and ayah number of the previous ayah.
*/
function prevAyah(surah, ayah, data) {
checkValidSurah(surah, data.meta);
const ayahId = findAyahIdBySurah(surah, ayah, data);
return findSurahAyahByAyahId(ayahId == 1 ? data.meta.numAyahs : ayahId - 1, data);
}
//#endregion
//#region src/nextAyah.ts
/**
* Get the next ayah for the given surah and ayah number.
* @param surah - The surah number.
* @param ayah - The ayah number within the surah.
* @param data - The Lists object containing SurahList.
* @returns The surah and ayah number of the next ayah.
*/
function nextAyah(surah, ayah, data) {
if (surah < 1 || surah > data.meta.numSurahs) throw new RangeError("Surah must be between 1 and " + data.meta.numSurahs);
const ayahId = findAyahIdBySurah(surah, ayah, data);
return findSurahAyahByAyahId(ayahId == data.meta.numAyahs ? 1 : ayahId + 1, data);
}
//#endregion
//#region src/isAyahJuzFirst.ts
/**
* Returns the Juz (part) number that the given Ayah (verse) belongs to.
*
*
* @param ayahId - The Ayah Id (verse) number.
* @param data - The Lists object for the riwaya.
* @returns The Juz (part) number that the given Ayah belongs to. Returns Positive number if ayah is first ayah of juz, number is juz number
*/
function isAyahJuzFirst(ayahId, data) {
checkValidAyahId(ayahId, data.meta);
const JuzList$3 = data.JuzList;
return binarySearch(JuzList$3, ayahId);
}
//#endregion
//#region src/isAyahPageFirst.ts
/**
* Determines if the given ayah is the first ayah of a juz.
*
* @param ayahId - The ayah id .
* @param data - The Lists object for the riwaya.
* @returns The page number if the ayah is the first ayah of the page, otherwise -1.
*/
function isAyahPageFirst(ayahId, data) {
checkValidAyahId(ayahId, data.meta);
const PageList$3 = data.PageList;
return binarySearch(PageList$3, ayahId);
}
//#endregion
//#region src/isSurahAyahJuzFirst.ts
/**
* Determines if a given Surah and Ayah combination marks the beginning of a Juz.
*
* @param surah - The Surah number to check
* @param ayah - The Ayah number within the Surah to check
* @param data - The Lists object for the riwaya.
* @returns The Juz number if the combination marks the start of a Juz, -1 otherwise
* @throws Error When the provided Surah number is invalid
*
* @example
* ```typescript
* isSurahAyahJuzFirst(2, 142, HafsLists) // Returns 2
* isSurahAyahJuzFirst(2, 143, HafsLists) // Returns -1
* ```
*/
function isSurahAyahJuzFirst(surah, ayah, data) {
checkValidSurah(surah, data.meta);
const ayahId = findAyahIdBySurah(surah, ayah, data);
const JuzList$3 = data.JuzList;
return binarySearch(JuzList$3, ayahId);
}
//#endregion
//#region src/isSurahAyahPageFirst.ts
/**
* Determines if an ayah is the first ayah on its page in the Quran
* @param surah - The surah number (1-114)
* @param ayah - The ayah number within the surah
* @param lists - The Lists object for the riwaya.
* @returns The page number if the ayah is first on its page, -1 otherwise
* @throws Error If surah number is invalid
*/
function isSurahAyahPageFirst(surah, ayah, data) {
checkValidSurah(surah, data.meta);
const ayahId = findAyahIdBySurah(surah, ayah, data);
const PageList$3 = data.PageList;
return binarySearch(PageList$3, ayahId);
}
//#endregion
//#region src/getThumunAlHizbMetaByAyahId.ts
/**
* Finds the Juz, Hizb, and Rub-el-Hizb id for the given Ayah ID.
*
* @param ayahId - The Ayah ID to find the Juz, Hizb, and Hizb ID for.
* @param riwaya - The riwaya. Defaults to "Qalun" if not provided.
* @returns An object containing the Juz, Hizb, thumunAlHizb ID, and Hizb ID for the given Ayah ID.
*/
function getThumunAlHizbMetaByAyahId(ayahId, data) {
checkValidAyahId(ayahId, data.meta);
return getThumunAlHizbMeta(findThumunAlHizbByAyahId(ayahId, data), data);
}
//#endregion
//#region src/surahStringParser.ts
/**
* Parses a string representation of a Surah number and converts it to a valid Surah type
* @param str - The string containing the Surah number to parse
* @returns The parsed Surah number as a Surah type
* @throws {@link Error} If the string cannot be parsed as a number or if the number is not a valid Surah number
*/
function surahStringParser(str, isStrict = false, meta) {
const surahX = isStrict ? Number(str.trim()) : Number.parseInt(str.trim(), 10);
if (isNaN(surahX)) throw new Error("Error in surah format " + str);
if (!isValidSurah(surahX, meta)) throw new Error("Error in surah number " + str);
return surahX;
}
//#endregion
//#region src/QuranRiwaya.ts
/**
* QuranRiwaya class provides a clean API for Quran metadata operations
* with a specific riwaya (recitation tradition) context.
*
* Currently provides basic Surah and Ayah operations. For advanced features
* like Juz, Page, Manzil, RubAlHizb, etc., use the functional API directly.
*
* @example
* **Basic Usage with Hafs**
* ```typescript
* import { quran } from 'quran-meta/hafs'
*
* const surahMeta = quran.getSurahMeta(2) // Get Al-Baqarah metadata
* const ayahCount = quran.getAyahCountInSurah(2) // 286 ayahs
* const [surah, ayah] = quran.findSurahAyahByAyahId(100) // [2, 93]
* ```
*
* @example
* **Working with Qalun**
* ```typescript
* import { quran } from 'quran-meta/qalun'
*
* const meta = quran.meta
* console.log(meta.numAyahs) // 6214 (Qalun has fewer ayahs than Hafs)
* ```
*
* @example
* **Creating a custom instance**
* ```typescript
* import { QuranRiwaya } from 'quran-meta'
* import { WarshMeta, WarshLists } from 'quran-meta/lists/WarshLists'
*
* const warsh = QuranRiwaya.create(WarshLists)
* ```
*/
var QuranRiwaya = class QuranRiwaya {
#riwaya;
#meta;
#data;
constructor(rData) {
this.#riwaya = rData.meta.riwayaName;
this.#meta = rData.meta;
this.#data = rData;
}
/**
* Create a QuranRiwaya instance with the specified riwaya, metadata, and lists
* @param riwaya - The riwaya name ("Hafs", "Qalun", or "Warsh")
* @param meta - The metadata for this riwaya
* @param rData - The Lists object for this riwaya
*/
static create(rData) {
return new QuranRiwaya(rData);
}
/**
* Gets the metadata for the specified Surah
*/
getSurahMeta(surahNum) {
return getSurahMeta(surahNum, this.#data);
}
ayahStringSplitter(str, isStrict = true) {
return ayahStringSplitter(str, isStrict, this.#data);
}
/**
* Gets the surah info array [firstAyahId, ayahCount, surahOrder, rukuCount, name, isMeccan]
*/
getSurahInfo(surah) {
return getSurahInfo(surah, this.#data);
}
/**
* Gets the count of ayahs in a surah
*/
getAyahCountInSurah(surah) {
return getAyahCountInSurah(surah, this.#data);
}
/**
* Finds the surah number for a given ayah ID
*/
findSurahByAyahId(ayahId) {
return findSurahByAyahId(ayahId, this.#data);
}
/**
* Finds the [surah, ayah] tuple for a given ayah ID
*/
findSurahAyahByAyahId(ayahId) {
return findSurahAyahByAyahId(ayahId, this.#data);
}
/**
* Finds the ayah ID for a given surah and ayah number
*/
findAyahIdBySurah(surah, ayah) {
return findAyahIdBySurah(surah, ayah, this.#data);
}
generatePartBlocks(type) {
return generatePartBlocks(type, this.#data);
}
getList(type) {
return getList(type, this.#data);
}
getListNormalised(type) {
return getListNormalised(type, this.#data);
}
/**
* Gets the next ayah after the given surah and ayah
*/
nextAyah(surah, ayah) {
return nextAyah(surah, ayah, this.#data);
}
/**
* Gets the previous ayah before the given surah and ayah
*/
prevAyah(surah, ayah) {
return prevAyah(surah, ayah, this.#data);
}
/**
* Finds the juz number for a given surah and ayah
*/
findJuz(surah, ayah = 1) {
return findJuz(surah, ayah, this.#data);
}
/**
* Finds the juz number for a given ayah ID
*/
findJuzByAyahId(ayahId) {
return findJuzByAyahId(ayahId, this.#data);
}
/**
* Finds the page number for a given surah and ayah
*/
findPage(surah, ayah = 1) {
return findPage(surah, ayah, this.#data);
}
/**
* Finds the page number for a given ayah ID
*/
findPagebyAyahId(ayahId) {
return findPagebyAyahId(ayahId, this.#data);
}
/**
* Gets metadata for a specific page
*/
getPageMeta(pageNum) {
return getPageMeta(pageNum, this.#data);
}
/**
* Finds the manzil number for a given surah and ayah
*/
findManzil(surah, ayah = 1) {
return findManzil(surah, ayah, this.#data);
}
/**
* Finds the manzil number for a given ayah ID
*/
findManzilByAyahId(ayahId) {
return findManzilByAyahId(ayahId, this.#data);
}
/**
* Gets metadata for a specific manzil
*/
getManzilMeta(manzilNum) {
return getManzilMeta(manzilNum, this.#data);
}
/**
* Finds the ruku number for a given ayah ID
*/
findRukuByAyahId(ayahId) {
return findRukuByAyahId(ayahId, this.#data);
}
/**
* Gets metadata for a specific ruku
*/
getRukuMeta(rukuNum) {
return getRukuMeta(rukuNum, this.#data);
}
/**
* Gets metadata for a specific juz
*/
getJuzMeta(juzNum) {
return getJuzMeta(juzNum, this.#data);
}
/**
* Finds juz metadata for a given surah and ayah
*/
findJuzMetaBySurah(surah, ayah = 1) {
return findJuzMetaBySurah(surah, ayah, this.#data);
}
/**
* Finds juz and calculates shift between juz start and surah start
*/
findJuzAndShift(surah, ayah) {
return findJuzAndShift(surah, ayah, this.#data);
}
/**
* Finds juz and shift for a given ayah ID
*/
findJuzAndShiftByAyahId(ayahId) {
return findJuzAndShiftByAyahId(ayahId, this.#data);
}
/**
* Finds the RubAlHizb for a given surah and ayah
*/
findRubAlHizb(surah, ayah = 1) {
return findRubAlHizb(surah, ayah, this.#data);
}
/**
* Finds the RubAlHizb ID for a given ayah ID
*/
findRubAlHizbByAyahId(ayahId) {
return findRubAlHizbByAyahId(ayahId, this.#data);
}
/**
* Gets RubAlHizb data (juz, hizb, etc.) for a given ayah ID
*/
getRubAlHizbByAyahId(ayahId) {
return getRubAlHizbByAyahId(ayahId, this.#data);
}
/**
* Gets RubAlHizb data (juz, hizb, etc.) for a given ayah ID
*/
getRubAlHizb(quarterIndex) {
return getRubAlHizb(quarterIndex);
}
/**
* Gets complete RubAlHizb metadata for a given ayah ID
*/
getRubAlHizbMetaByAyahId(ayahId) {
return getRubAlHizbMetaByAyahId(ayahId, this.#data);
}
/**
* Gets metadata for a specific RubAlHizb
*/
getRubAlHizbMeta(quarterIndex) {
return getRubAlHizbMeta(quarterIndex, this.#data);
}
/**
* Finds the ThumunAlHizb ID for a given ayah ID (Qalun/Warsh only)
*/
findThumunAlHizbByAyahId(ayahId) {
return findThumunAlHizbByAyahId(ayahId, this.#data);
}
/**
* Finds the ThumunAlHizb ID for a given ayah ID (Qalun/Warsh only)
*/
findThumunAlHizb(surah, ayah = 1) {
return findThumunAlHizb(surah, ayah, this.#data);
}
/**
* Gets metadata for a specific ThumunAlHizb (Qalun/Warsh only)
*/
getThumunAlHizbMeta(eighthIndex) {
return getThumunAlHizbMeta(eighthIndex, this.#data);
}
getThumunAlHizbByAyahId(ayahId) {
return getThumunAlHizbByAyahId(ayahId, this.#data);
}
getThumunAlHizbMetaByAyahId(ayahId) {
return getThumunAlHizbMetaByAyahId(ayahId, this.#data);
}
getThumunAlHizb(eighthIndex) {
return getThumunAlHizb(eighthIndex);
}
/**
* Gets comprehensive metadata for a specific ayah
*/
getAyahMeta(ayahId) {
return getAyahMeta(ayahId, this.#data);
}
/**
* Gets metadata for all ayahs in a surah
*/
getAyahMetasForSurah(surahNumber) {
return getAyahMetasForSurah(surahNumber, this.#data);
}
/**
* Finds the range of ayahs around a given ayah
*/
findRangeAroundAyah(ayahId, mode) {
return findRangeAroundAyah(ayahId, mode, this.#data);
}
/**
* Finds the range of ayahs around a given surah and ayah
*/
findRangeAroundSurahAyah(surah, ayah, mode) {
return findRangeAroundSurahAyah(surah, ayah, mode, this.#data);
}
/**
* Checks if an ayah is the first ayah of a juz
*/
isAyahJuzFirst(ayahId) {
return isAyahJuzFirst(ayahId, this.#data);
}
/**
* Checks if an ayah is the first ayah of a page
*/
isAyahPageFirst(ayahId) {
return isAyahPageFirst(ayahId, this.#data);
}
/**
* Checks if a surah-ayah combination is the first ayah of a juz
*/
isSurahAyahJuzFirst(surah, ayah) {
return isSurahAyahJuzFirst(surah, ayah, this.#data);
}
/**
* Checks if a surah-ayah combination is the first ayah of a page
*/
isSurahAyahPageFirst(surah, ayah) {
return isSurahAyahPageFirst(surah, ayah, this.#data);
}
isValidAyahId(x) {
return isValidAyahId(x, this.#meta);
}
isValidPage(x) {
return isValidPage(x, this.#meta);
}
isValidSurah(x) {
return isValidSurah(x, this.#meta);
}
isValidJuz(x) {
return isValidJuz(x, this.#meta);
}
isValidRuku(x) {
return isValidRuku(x, this.#meta);
}
isValidSurahAyah(x) {
return isValidSurahAyah(x, this.#data);
}
static isValidAyahNo(x) {
return isValidAyahNo(x);
}
surahStringParser(str, isStrict = false) {
return surahStringParser(str, isStrict, this.#meta);
}
static string2NumberSplitter(str) {
return string2NumberSplitter(str);
}
/**
* Gets the riwaya name
*/
get riwayaName() {
return this.#riwaya;
}
/**
* Gets the metadata for this riwaya
*/
get meta() {
return this.#meta;
}
/**
* Gets the metadata for this riwaya
*/
get lists() {
return this.#data;
}
};
//#endregion
//#region src/lists/index.ts
/**
* Retrieves the lists associated with a specific Riwaya.
* Uses switch statement to enable tree-shaking.
*
* @example
* ```typescript
* const hafsLists = getListsOfRiwaya('Hafs');
* ```
*/
function getListsOfRiwaya(riwaya) {
switch (riwaya) {
case "Hafs": return HafsLists;
case "Qalun": return QalunLists;
case "Warsh": return WarshLists;
default: throw new Error(`Unknown riwaya: ${riwaya}`);
}
}
const getListOfRiwaya = (listName, riwaya) => {
const actualRiwaya = riwaya || "Hafs";
const lists = getListsOfRiwaya(actualRiwaya);
if (listName in lists) return lists[listName];
throw new Error(`List ${String(listName)} not found in ${actualRiwaya} riwaya`);
};
//#endregion
//#region src/i18n/surah.en.ts
const surahNamesEn = [
[],
["Al-Faatiha", "The Opening"],
["Al-Baqara", "The Cow"],
["Aal-i-Imraan", "The Family of Imraan"],
["An-Nisaa", "The Women"],
["Al-Maaida", "The Table"],
["Al-An'aam", "The Cattle"],
["Al-A'raaf", "The Heights"],
["Al-Anfaal", "The Spoils of War"],
["At-Tawba", "The Repentance"],
["Yunus", "Jonas"],
["Hud", "Hud"],
["Yusuf", "Joseph"],
["Ar-Ra'd", "The Thunder"],
["Ibrahim", "Abraham"],
["Al-Hijr", "The Rock"],
["An-Nahl", "The Bee"],
["Al-Israa", "The Night Journey"],
["Al-Kahf", "The Cave"],
["Maryam", "Mary"],
["Taa-Haa", "Taa-Haa"],
["Al-Anbiyaa", "The Prophets"],
["Al-Hajj", "The Pilgrimage"],
["Al-Muminoon", "The Believers"],
["An-Noor", "The Light"],
["Al-Furqaan", "The Criterion"],
["Ash-Shu'araa", "The Poets"],
["An-Naml", "The Ant"],
["Al-Qasas", "The Stories"],
["Al-Ankaboot", "The Spider"],
["Ar-Room", "The Romans"],
["Luqman", "Luqman"],
["As-Sajda", "The Prostration"],
["Al-Ahzaab", "The Clans"],
["Saba", "Sheba"],
["Faatir", "The Originator"],
["Yaseen", "Yaseen"],
["As-Saaffaat", "Those drawn up in Ranks"],
["Saad", "The letter Saad"],
["Az-Zumar", "The Groups"],
["Al-Ghaafir", "The Forgiver"],
["Fussilat", "Explained in detail"],
["Ash-Shura", "Consultation"],
["Az-Zukhruf", "Ornaments of gold"],
["Ad-Dukhaan", "The Smoke"],
["Al-Jaathiya", "Crouching"],
["Al-Ahqaf", "The Dunes"],
["Muhammad", "Muhammad"],
["Al-Fath", "The Victory"],
["Al-Hujuraat", "The Inner Apartments"],
["Qaaf", "The letter Qaaf"],
["Adh-Dhaariyat", "The Winnowing Winds"],
["At-Tur", "The Mount"],
["An-Najm", "The Star"],
["Al-Qamar", "The Moon"],
["Ar-Rahmaan", "The Beneficent"],
["Al-Waaqia", "The Inevitable"],
["Al-Hadid", "The Iron"],
["Al-Mujaadila", "The Pleading Woman"],
["Al-Hashr", "The Exile"],
["Al-Mumtahana", "She that is to be examined"],
["As-Saff", "The Ranks"],
["Al-Jumu'a", "Friday"],
["Al-Munaafiqoon", "The Hypocrites"],
["At-Taghaabun", "Mutual Disillusion"],
["At-Talaaq", "Divorce"],
["At-Tahrim", "The Prohibition"],
["Al-Mulk", "The Sovereignty"],
["Al-Qalam", "The Pen"],
["Al-Haaqqa", "The Reality"],
["Al-Ma'aarij", "The Ascending Stairways"],
["Nooh", "Noah"],
["Al-Jinn", "The Jinn"],
["Al-Muzzammil", "The Enshrouded One"],
["Al-Muddaththir", "The Cloaked One"],
["Al-Qiyaama", "The Resurrection"],
["Al-Insaan", "Man"],
["Al-Mursalaat", "The Emissaries"],
["An-Naba", "The Announcement"],
["An-Naazi'aat", "Those who drag forth"],
["Abasa", "He frowned"],
["At-Takwir", "The Overthrowing"],
["Al-Infitaar", "The Cleaving"],
["Al-Mutaffifin", "Defrauding"],
["Al-Inshiqaaq", "The Splitting Open"],
["Al-Burooj", "The Constellations"],
["At-Taariq", "The Morning Star"],
["Al-A'laa", "The Most High"],
["Al-Ghaashiya", "The Overwhelming"],
["Al-Fajr", "The Dawn"],
["Al-Balad", "The City"],
["Ash-Shams", "The Sun"],
["Al-Lail", "The Night"],
["Ad-Dhuhaa", "The Morning Hours"],
["Ash-Sharh", "The Consolation"],
["At-Tin", "The Fig"],
["Al-Alaq", "The Clot"],
["Al-Qadr", "The Power, Fate"],
["Al-Bayyina", "The Evidence"],
["Az-Zalzala", "The Earthquake"],
["Al-Aadiyaat", "The Chargers"],
["Al-Qaari'a", "The Calamity"],
["At-Takaathur", "Competition"],
["Al-Asr", "The Declining Day, Epoch"],
["Al-Humaza", "The Traducer"],
["Al-Fil", "The Elephant"],
["Quraish", "Quraysh"],
["Al-Maa'un", "Almsgiving"],
["Al-Kawthar", "Abundance"],
["Al-Kaafiroon", "The Disbelievers"],
["An-Nasr", "Divine Support"],
["Al-Masad", "The Palm Fibre"],
["Al-Ikhlaas", "Sincerity"],
["Al-Falaq", "The Dawn"],
["An-Naas", "Mankind"],
[]
];
//#endregion
//#region src/i18n/surah.az.ts
const surahNamesAz = [
[],
["əl-Fatihə", "Kitabı açan "],
["əl-Bəqərə", "İnək "],
["Ali-İmran", "İmran ailəsi "],
["ən-Nisa", "Qadınlar "],
["əl-Maidə", "Süfrə "],
["əl-Ənam", "Davar "],
["əl-Əraf", "Sədd "],
["əl-Ənfal", "Qənimət "],
["ət-Tovbə", "Tövbə "],
["Yunus", "Yunus"],
["Hud", "Hud"],
["Yusuf", "Yusif"],
["ər-Rəd", "Göy gurultusu "],
["İbrahim", "İbrahim"],
["əl-Hicr", "Daşlı sahə "],
["ən-Nəhl", "Bal arısı "],
["əl-İsra", "İsrail oğulları "],
["əl-Kəhf", "Mağara "],
["Məryəm", "Məryəm "],
["Ta ha", "Taha"],
["əl-Ənbiya", "Peyğəmbərlər "],
["əl-Həcc", "Həcc "],
["əl-Muminun", "Möminlər "],
["ən-Nur", "Nur "],
["əl-Furqan", "Fəqləndirmə "],
["əş-Şuəra", "Şairlər "],
["ən-Nəml", "Qarışqalar "],
["əl-Qəsəs", "Hekayət "],
["əl-Ənkəbut", "Hörümçək "],
["ər-Rum", "Rumlular "],
["Loğman", "Loğman"],
["əs-Səcdə", "Səcdə "],
["əl-Əhzab", "Dəstələr"],
["Səba", "Səba "],
["Fatir", "Yaradan "],
["Ya sin", "Yasin"],
["əs-Saffat", "Səf-Səf duranlar "],
["Sad", "Sad"],
["əz-Zumər", "Zümrələr "],
["Ğafir", "Mömin "],
["Fussilət", "Müfəssəl izah edilmiş "],
["əş-Şura", "Şura "],
["əz-Zuxruf", "Qızıl bəzəklər "],
["əd-Duxan", "Duman "],
["əl-Casiyə", "Diz çökmüş camaat "],
["əl-Əhqaf", "Qumsal təpələr "],
["Muhəmməd", "Məhəmməd"],
["əl-Fəth", "Fəth "],
["əl-Hucurat", "Otaqlar "],
["Qaf", "Qaf "],
["əz-Zariyat", "Sovurub dağıdan küləklər "],
["ət-Tur", "Dağ "],
["ən-Nəcm", "Ulduz "],
["əl-Qəmər", "Ay "],
["ər-Rəhman", "Rəhmli olan "],
["əl-Vaqiə", "Vaqiə "],
["əl-Hədid", "Dəmir "],
["əl-Mucadilə", "Mücadilə "],
["əl-Həşr", "Toplanma "],
["əl-Mumtəhənə", "İmtahana çəkilən qadın "],
["əs-Saff", "Səf "],
["əl-Cumuə", "Cümə "],
["əl-Munafiqun", "Münafiqlər "],
["ət-Təğabun", "Qarşılıqlı aldanma "],
["ət-Talaq", "Boşanma "],
["ət-Təhrim", "Qadağan "],
["əl-Mulk", "Mülk "],
["əl-Qələm", "Qələm "],
["əl-Haqqə", "Haqq olan qiyamət "],
["əl-Məaric", "Dərəcələr "],
["Nuh", "Nuh peyğəmbər "],
["əl-Cinn", "Cinlər "],
["əl-Muzzəmmil", "Örtünüb bürünən "],
["əl-Muddəssir", "Bürünüb sarınan "],
["əl-Qiyamə", "Qiyamət "],
["əl-İnsan", "Dövr "],
["əl-Mursəlat", "Bir-birinin ardınca göndərilənlər "],
["ən-Nəbə", "Böyük xəbər "],
["ən-Naziat", "Can alanlar "],
["Əbəsə", "Qaşqabağını tökdü "],
["ət-Təkvir", "Sarınma "],
["əl-İnfitar", "Parçalanma "],
["əl-Mutaffifun", "Çəkidə aldadanlar "],
["əl-İnşiqaq", "Yarılma "],
["əl-Buruc", "Bürclər "],
["ət-Tariq", "Gecə gələn "],
["əl-Əla", "Ən uca "],
["əl-Ğaşiyə", "Bürünən "],
["əl-Fəcr", "Dan yeri "],
["əl-Bələd", "Şəhər "],
["əş-Şəms", "Günəş "],
["əl-Leyl", "Gecə "],
["əd-Duha", "Səhər"],
["əş-Şərh", "Açılma"],
["ət-Tin", "Əncir "],
["əl-Ələq", "Laxtalanmış qan "],
["əl-Qədr", "Qədr gecəsi "],
["əl-Beyyinə", "Açıq-aydın dəlil "],
["əz-Zəlzələ", "Zəlzələ "],
["əl-Adiyat", "Qaçan atlar "],
["əl-Qariə", "Qiyamət "],
["ət-Təkasur", "Çoxluqla öyünmə "],
["əl-Əsr", "Axşam çağı "],
["əl-Huməzə", "Qeybətçi "],
["əl-Fil", "Fil "],
["Qureyş", "Qüreyş"],
["əl-Maun", "Zəkat "],
["əl-Kovsər", "Kövsər "],
["əl-Kafirun", "Kafirlər "],
["ən-Nəsr", "Kömək "],
["əl-Məsəd", "Alov atası "],
["əl-İxlas", "Səmimiyyət"],
["əl-Fələq", "Sübh çağl"],
["ən-Nas", "İnsanlar "],
[]
];
//#endregion
//#region src/i18n/surah.ru.ts
const surahNamesRu = [
[],
["Аль-Фатиха", "Открывающая Коран"],
["Аль-Бакара", "Корова"],
["Аль ‘Имран", "Семейство ‘Имрана"],
["Ан-Ниса", "Женщины"],
["Аль-Маида", "Трапеза"],
["Аль-Ан‘ам", "Скот"],
["Аль-А‘раф", "Ограды"],
["Аль-Анфаль", "Военная добыча"],
["Ат-Тауба", "Покаяние"],
["Юнус", "Иона"],
["Худ", "Худ"],
["Юсуф", "Иосиф"],
["Ар-Ра‘д", "Гром"],
["Ибрахим", "Авраам"],
["Аль-Хиджр", "Хиджр"],
["Ан-Нахль", "Пчёлы"],
["Аль-Исра", "Ночной перенос"],
["Аль-Кяхф", "Пещера"],
["Марьям", "Мария"],
["Та, ха", "Та, ха"],
["Аль-Анбия", "Пророки"],
["Аль-Хаджж", "Хадж"],
["Аль-Му’минун", "Верующие"],
["Ан-Нур", "Свет"],
["Аль-Фуркан", "Различение"],
["Аш-Шу‘ара", "Поэты"],
["Ан-Намль", "Муравьи"],
["Аль-Касас", "Рассказ"],
["Аль-‘Анкабут", "Паук"],
["Ар-Рум", "Ромеи"],
["Лукман", "Лукман"],
["Ас-Саджда", "Земной поклон"],
["Аль-Ахзаб", "Полчища"],
["Саба’", "Сава"],
["Фатыр", "Зиждитель"],
["Йа, син", "Йа, син"],
["Ас-Саффат", "Стоящие в ряд"],
["Сад", "Сад"],
["Аз-Зумар", "Толпы"],
["Гафир", "Прощающий"],
["Фуссылят", "Разъяснены"],
["Аш-Шура", "Совет"],
["Аз-Зухруф", "Украшения"],
["Ад-Духан", "Дым"],
["Аль-Джасия", "Коленопреклонённые"],
["Аль-Ахкаф", "Барханы"],
["Мухаммад", "Мухаммад"],
["Аль-Фатх", "Победа"],
["Аль-Худжурат", "Покои"],
["Каф", "Каф"],
["Аз-Зарият", "Рассеивающие"],
["Ат-Тур", "Гора"],
["Ан-Наджм", "Звезда"],
["Аль-Камар", "Луна"],
["Ар-Рахман", "Милостивый"],
["Аль-Ваки‘а", "Неизбежное"],
["Аль-Хадид", "Железо"],
["Аль-Муджадиля", "Препирающаяся"],
["Аль-Хашр", "Сбор"],
["Аль-Мумтахана", "Испытуемая"],
["Ас-Сафф", "Ряд"],
["Аль-Джуму‘а", "Собрание"],
["Аль-Мунафикун", "Лицемеры"],
["Ат-Тагабун", "Обделение"],
["Ат-Таляк", "Развод"],
["Ат-Тахрим", "Запрещение"],
["Аль-Мульк", "Власть"],
["Аль-Калям", "Перо"],
["Аль-Хакка", "Неминуемое"],
["Аль-Ма‘аридж", "Степени"],
["Нух", "Ной"],
["Аль-Джинн", "Джинны"],
["Аль-Муззаммиль", "Закутавшийся"],
["Аль-Муддассир", "Завернувшийся"],
["Аль-Кияма", "Воскресение"],
["Аль-Инсан", "Человек"],
["Аль-Мурсалят", "Посылаемые"],
["Ан-Наба’", "Весть"],
["Ан-Нази‘ат", "Вырывающие"],
["‘Абаса", "Нахмурился"],
["Ат-Таквир", "Сворачивание"],
["Аль-Инфитар", "Раскалывание"],
["Аль-Мутаффифин", "Обвешивающие"],
["Аль-Иншикак", "Разверзнется"],
["Аль-Бурудж", "Созвездия"],
["Ат-Тарик", "Ночной гость"],
["Аль-А‘ля", "Всевышний"],
["Аль-Гашия", "Покрывающее"],
["Аль-Фаджр", "Заря"],
["Аль-Баляд", "Город"],
["Аш-Шамс", "Солнце"],
["Аль-Лейль", "Ночь"],
["Ад-Духа", "Утро"],
["Аль-Инширах", "Раскрытие"],
["Ат-Тин", "Смоковница"],
["Аль-‘Аляк", "Сгусток крови"],
["Аль-Кадр", "Величие"],
["Аль-Баййина", "Ясный довод"],
["Аз-Зальзаля", "Сотрясение"],
["Аль-‘Адият", "Скачущие"],
["Аль-Кари‘а", "Поражающее"],
["Ат-Такясур", "Соперничество"],
["Аль-‘Аср", "Предвечернее время"],
["Аль-Хумаза", "Хулитель"],
["Аль-Филь", "Слон"],
["Курайш", "Курайшиты"],
["Аль-Ма‘ун", "Утварь"],
["Аль-Каусар", "Каусар"],
["Аль-Кяфирун", "Неверующие"],
["Ан-Наср", "Помощь"],
["Аль-Масад", "Пальмовые волокна"],
["Аль-Ихляс", "Очищение веры"],
["Аль-Фаляк", "Рассвет"],
["Ан-Нас", "Люди"],
[]
];
//#endregion
//#region src/i18n/surah.tr.ts
const surahNamesTr = [
[],
["Fatiha", "Açılış"],
["Bakara", "Sığır"],
["Al-i İmran", "İmrân ailesi"],
["Nisa", "Kadınlar"],
["Maide", "Sofra"],
["Enam", "Ehli hayvanlar"],
["Araf", "Yüksek yerler"],
["Enfal", "Savaş ganimetleri"],
["Tevbe", "Tövbe"],
["Yunus", "Peygamber Yunus"],
["Hud", "Peygamber Hud"],
["Yusuf", "Peygamber Yusuf"],
["Rad", "Gök gürültüsü"],
["İbrahim", "Peygamber İbrahim"],
["Hicr", "Taşlı sahe"],
["Nahl", "Bal arısı"],
["İsra", "Geceleyin yürütmek"],
["Kehf", "Mağara"],
["Meryem", "Meryem"],
["Ta Ha", "Ta-Ha"],
["Enbiya", "Peygamberler"],
["Hac", "Hac"],
["Müminun", "Mü'minler"],
["Nur", "Işık"],
["Furkan", "Ayırmak"],
["Şuara", "Şairler"],
["Neml", "Karınca"],
["Kasas", "Kıssalar"],
["Ankebut", "Örümcek"],
["Rum", "Romalılar"],
["Lokman", "Peygamber Lokman"],
["Secde", "Secde"],
["Ahzab", "Gruplar"],
["Sebe", "Seba"],
["Fatır", "Yaratan"],
["Yasin", "Yasin"],
["Saffat", "Sıra sıra dizilenler"],
["Sad", "Sad"],
["Zümer", "Zümreler"],
["Mümin", "İnanan kimse"],
["Fussilet", "Genişçe açıklandı"],
["Şura", "Danışma"],
["Zuhruf", "Mücevher"],
["Duhan", "Duman"],
["Casiye", "Diz üstü çöken"],
["Ahkaf", "Kum yığınları"],
["Muhammed", "Peygamber Muhammed"],
["Fetih", "Fetih"],
["Hucurat", "Odalar"],
["Kaf", "Kaf"],
["Zariyat", "Esip savuran rüzgârlar"],
["Tur", "Sina dağı"],
["Necm", "Yıldız"],
["Kamer", "Ay"],
["Rahman", "Rahimli olan"],
["Vakıa", "Kıyamet"],
["Hadıd", "Demir"],
["Mücadele", "Münakaşa etmek"],
["Haşr", "Toplanmak"],
["Mümtehine", "İmtihan eden"],
["Saf", "Sıra"],
["Cuma", "Cuma günü"],
["Münafikun", "Münafıklar"],
["Tegabun", "Aldanma"],
["Talak", "Boşamak"],
["Tahrim", "Haram kılmak"],
["Mülk", "Mülk"],
["Kalem", "Kalem"],
["Hakka", "Hakk olan kıyamet"],
["Mearic", "Yükselme yolları"],
["Nuh", "Peygamber Nuh"],
["Cin", "Cin"],
["Müzzemmil", "Örtünüp bürünen"],
["Müddessir", "Bürünüp sarınan"],
["Kıyame", "Kıyamet"],
["İnsan", "İnsan"],
["Mürselat", "Gönderilenler"],
["Nebe", "Haber"],
["Naziat", "Ruhları çekip alan melekler"],
["Abese", "Yüzünü ekşitti"],
["Tekvir", "Dürmek"],
["İnfitar", "Yarılmak"],
["Mutaffifın", "Ölçüde hile yapan"],
["İnşikak", "Yarılmak"],
["Büruc", "Burçlar"],
["Tarık", "Gece gelen"],
["Ala", "En yüce"],
["Gaşiye", "Kaplayıp büyüyen"],
["Fecr", "İmsak"],
["Beled", "Şehir"],
["Şems", "Güneş"],
["Leyl", "Gece"],
["Duha", "Kuşluk vakti"],
["İnşirah", "Açılmak"],
["Tin", "İncir"],
["Alak", "Kan pıhtısı"],
["Kadir", "Kadr "],
["Beyyine", "Apaçık delil"],
["Zilzal", "Deprem"],
["Adiyat", "Hızlı koşan atlar"],
["Karia", "Çarpan"],
["Tekasür", "Çoklukla övünmek"],
["Asr", "İkindi vakti"],
["Hümeze", "İnsanları arkadan çekiştiren"],
["Fil", "Fil"],
["Kureyş", "Qüreyş"],
["Maun", "Yardım ve zekât"],
["Kevser", "Bereket"],
["Kafirun", "İnkârcılar"],
["Nasr", "Yardım"],
["Tebbet", "Kurusun"],
["İhlas", "Samimi olmak"],
["Felak", "Sabah aydınlığı"],
["Nas", "İnsanlar"],
[]
];
//#endregion
//#region src/i18n/surah.uz.ts
const surahNamesUz = [
[],
["Фотиҳа", "Очувчи"],
["Бақара", "Сигир"],
["Оли Имрон", "Имрон оиласи"],
["Нисо", "Аёллар"],
["Моида", "Дастурхон"],
["Анъом", "Чорва"],
["Аъроф", "Тўсиқлар"],
["Анфол", "Ғанимат"],
["Тавба", "Тавба"],
["Юнус", "Юнус"],
["Ҳуд", "Ҳуд"],
["Юсуф", "Юсуф"],
["Раъд", "Момақалдироқ"],
["Иброҳим", "Иброҳим"],
["Ҳижр", "Тошлик"],
["Наҳл", "Аса ари"],
["Исро", "Тунги саёҳат"],
["Каҳф", "Ғор"],
["Марям", "Марям"],
["Тоҳа", "Тоҳа"],
["Анбиё", "Пайғамбарлар"],
["Ҳаж", "Ҳаж"],
["Муъминун", "Мўминлар"],
["Нур", "Нур"],
["Фурқон", "Ҳақ-ноҳақни ажратувчи"],
["Шуаро", "Шоирлар"],
["Намл", "Чумолилар"],
["Қасас", "Ҳикоялар"],
["Анкабут", "Ўргимчак"],
["Рум", "Рум"],
["Луқмон", "Луқмон"],
["Сажда", "Сажда"],
["Аҳзоб", "Қўшинлар"],
["Сабаъ", "Сабаъ"],
["Фотир", "Яратувчи"],
["Ёсин", "Ёсин"],
["Соффот", "Саф тортганлар"],
["Сод", "Сод"],
["Зумар", "Тўдалар"],
["Ғофир", "Кечирувчи"],
["Фуссилат", "Батафсил баён қилинган"],
["Шуро", "Машварат"],
["Зухруф", "Зеб-зийнат"],
["Духон", "Тутун"],
["Жосия", "Тиз чўкдириш"],
["Аҳқоф", "Қумтепалар"],
["Муҳаммад", "Муҳаммад"],
["Фатҳ", "Фатҳ"],
["Ҳужурот", "Хоналар"],
["Қоф", "Қоф"],
["Зориёт", "Совуриб ташловчилар"],
["Тур", "Тур тоғи"],
["Нажм", "Юлдуз"],
["Қамар", "Ой"],
["Раҳмон", "Раҳмон"],
["Воқиа", "Воқеа"],
["Ҳадид", "Темир"],
["Мужодила", "Баҳслашувчи хотин"],
["Ҳашр", "Тўпланиш"],
["Мумтаҳана", "Имтиҳондан ўтказилган"],
["Саф", "Саф"],
["Жумуа", "Жума"],
["Мунофиқун", "Мунофиқлар"],
["Тағобун", "Ўзаро алданиш"],
["Талоқ", "Талоқ"],
["Таҳрим", "Ҳаром қилиш"],
["Мулк", "Ҳукмронлик"],
["Қалам", "Қалам"],
["Ҳоққа", "Аниқ воқеа"],
["Маориж", "Кўтарилиш зиналари"],
["Нуҳ", "Нуҳ"],
["Жин", "Жинлар"],
["Муззаммил", "Ўраниб ётган"],
["Муддассир", "Ўраниб ётган"],
["Қиёма", "Қиёмат"],
["Инсон", "Инсон"],
["Мурсалот", "Юборилувчилар"],
["Набаъ", "Буюк хабар"],
["Нозиот", "Юлиб олувчилар"],
["Абаса", "Қошини чимирди"],
["Таквир", "Ўралиш"],
["Инфитор", "Ёрилиш"],
["Мутаффифин", "Ўлчовда алдовчилар"],
["Иншиқоқ", "Ёрилиш"],
["Буруж", "Юлдузлар туркумлари"],
["Ториқ", "Кечаси келувчи"],
["Аъло", "Энг юксак"],
["Ғошия", "Қоплаган"],
["Фажр", "Тонг"],
["Балад", "Шаҳар"],
["Шамс", "Қуёш"],
["Лайл", "Кеча"],
["Зуҳо", "Пешиндан кейин"],
["Шарҳ", "Очиш"],
["Тийн", "Анжир"],
["Алақ", "Лахта қон"],
["Қадр", "Қадр"],
["Баййина", "Очиқ-ойдин далил"],
["Залзала", "Зилзила"],
["Одиёт", "Чопувчилар"],
["Қориа", "Қоқилатган"],
["Такосур", "Кўплик билан фахрланиш"],
["Аср", "Аср"],
["Ҳумаза", "Тўқиштирувчи"],
["Фийл", "Фил"],
["Қурайш", "Қурайш"],
["Моун", "Яхшилик"],
["Кавсар", "Кавсар"],
["Кофирун", "Кофирлар"],
["Наср", "Ёрдам"],
["Масад", "Шимшоқ толалари"],
["Ихлос", "Самимият"],
["Фалақ", "Тонг"],
["Нос", "Одамлар"],
[]
];
//#endregion
//#region src/i18n/surah.kk.ts
const surahNamesKk = [
[],
["Фатиха", "Ашушы"],
["Бақара", "Сиыр"],
["Әли Ъимран", "Имран әулеті"],
["Ниса", "Әйелдер"],
["Мәида", "Дастарқан"],
["Әнғам", "Мал"],
["Әғраф", "Биіктіктер"],
["Әнфал", "Олжа"],
["Тәубә", "Тәубә"],
["Юнус", "Жұнус"],
["Һүд", "Һүд"],
["Юсуф", "Жүсіп"],
["Рағд", "Күн күркіреу"],
["Ибраһим", "Ыбырайым"],
["Хиҗр", "Хиҗр"],
["Нахл", "Ара"],
["Исра", "Түнгі сапар"],
["Кәһф", "Үңгір"],
["Мәрйәм", "Мәриям"],
["Таһа", "Таһа"],
["Әнбийа", "Пайғамбарлар"],
["Хаҗ", "Қажылық"],
["Мүъминүн", "Мүъміндер"],
["Нүр", "Нұр"],
["Фурқан", "Ажыратушы"],
["Шуғара", "Ақындар"],
["Нәмл", "Құмырсқалар"],
["Қасас", "Оқиғалар"],
["Ғанкәбүт", "Өрмекші"],
["Рум", "Рум"],
["Луқман", "Луқман"],
["Сәҗдә", "Сәҗдә"],
["Әхзаб", "Топтар"],
["Сәбә", "Сәбә"],
["Фатир", "Жаратушы"],
["Йасин", "Йасин"],
["Саффат", "Қатарға тұрғандар"],
["Сад", "Сад"],
["Зүмәр", "Топ-топ"],
["Ғафир", "Кешіруші"],
["Фуссилат", "Егжей-тегжейлі"],
["Шура", "Кеңес"],
["Зухруф", "Алтын әшекей"],
["Духан", "Түтін"],
["Җасийә", "Тізерлеу"],
["Әхқаф", "Құм үйінділері"],
["Мухәммәд", "Мұхаммед"],
["Фәтх", "Жеңіс"],
["Хуҗурат", "Бөлмелер"],
["Қаф", "Қаф"],
["Зарийат", "Шашыратушылар"],
["Тур", "Тур тауы"],
["Нәҗм", "Жұлдыз"],
["Қәмәр", "Ай"],
["Рахман", "Рахман"],
["Уақиға", "Оқиға"],
["Хәдид", "Темір"],
["Мүҗадәлә", "Талас-тартыс"],
["Хәшр", "Жинау"],
["Мүмтәхинә", "Сыналған"],
["Сафф", "Қатар"],
["Җүмуға", "Жұма"],
["Мүнафиқүн", "Мүнафықтар"],
["Тағабүн", "Алданысу"],
["Талақ", "Ажырасу"],
["Тахрим", "Тыйым салу"],
["Мүлк", "Билік"],
["Қәләм", "Қалам"],
["Хаққа", "Хақиқат"],
["Мәғариҗ", "Көтерілу баспалдақтары"],
["Нүх", "Нұх"],
["Җин", "Жындар"],
["Мүззәммил", "Оранған"],
["Мүддәссир", "Жамылынған"],
["Қийамә", "Қиямет"],
["Инсан", "Адам"],
["Мүрсәлат", "Жіберілгендер"],
["Нәбә", "Үлкен хабар"],
["Назиғат", "Тартып алушылар"],
["Ғабәсә", "Қабағын шытты"],
["Тәкуир", "Орау"],
["Инфитар", "Жарылу"],
["Мүтаффифин", "Өлшемді азайтушылар"],
["Иншиқақ", "Жарылу"],
["Бүруҗ", "Жұлдыздар топтамасы"],
["Тариқ", "Түнгі келуші"],
["Әғла", "Ең Жоғары"],
["Ғашийә", "Жабушы"],
["Фәҗр", "Таң"],
["Бәләд", "Қала"],
["Шәмс", "Күн"],
["Ләйл", "Түн"],
["Зуха", "Күндіз"],
["Шәрх", "Ашу"],
["Тин", "Інжір"],
["Ғаләқ", "Ұю"],
["Қәдр", "Қадір"],
["Бәййинә", "Айқын дәлел"],
["Зәлзәлә", "Зілзала"],
["Ғадийат", "Жүгіргендер"],
["Қариға", "Соққы"],
["Тәкасүр", "Көптікке ұмтылу"],
["Ғаср", "Ғасыр"],
["Һүмәзә", "Өсекші"],
["Фил", "Піл"],
["Қүрәйш", "Құрайыш"],
["Мағүн", "Көмек"],
["Кәүсәр", "Көптік"],
["Кафирүн", "Кафірлер"],
["Наср", "Көмек"],
["Мәсәд", "Талшықтар"],
["Ихлас", "Ықылас"],
["Фәләқ", "Таң"],
["Нас", "Адамдар"],
[]
];
//#endregion
//#region src/i18n/surah.bs.ts
const surahNamesBs = [
[],
["El-Fatiha", "Početna"],
["El-Bekara", "Krava"],
["Alu Imran", "Porodica Imranova"],
["En-Nisa", "Žene"],
["El-Maida", "Sofra"],
["El-En'am", "Stoka"],
["El-A'araf", "A'araf"],
["El-Enfal", "Ratni plen"],
["Et-Tewbe", "Pokajanje"],
["Junus", "Juna"],
["Hud", "Hud"],
["Jusuf", "Jusuf"],
["Er-Ra'd", "Grom"],
["Ibrahim", "Ibrahim"],
["El-Hidžr", "Hidžr"],
["En-Nahl", "Pčela"],
["El-Isra", "Noćno putovanje"],
["El-Kehf", "Pećina"],
["Merjem", "Merjema"],
["Ta Ha", "Ta Ha"],
["El-Enbija", "Poslanici"],
["El-Hadždž", "Hadždž"],
["El-Mu'minun", "Vjernici"],
["En-Nur", "Svjetlost"],
["El-Furkan", "Razlikovanje"],
["Eš-Šu'ara", "Pjesnici"],
["En-Neml", "Mravi"],
["El-Kasas", "Priča"],
["El-'Ankebut", "Pauk"],
["Er-Rum", "Rimljani"],
["Lukman", "Lukman"],
["Es-Sedžde", "Sedžda"],
["El-Ahzab", "Savezi"],
["Sebe", "Seba"],
["Fatir", "Stvoritelj"],
["Ja Sin", "Ja Sin"],
["Es-Saffat", "Poredani"],
["Sad", "Sad"],
["Ez-Zumer", "Gomile"],
["Gafir", "Onaj koji oprašta"],
["Fussilet", "Detaljno objašnjeni"],
["Eš-Šura", "Savjetovanje"],
["Ez-Zuhruf", "Ukras"],
["Ed-Duhan", "Dim"],
["El-Džasije", "Klečanje"],
["El-Ahkaf", "Ahkaf"],
["Muhammed", "Muhammed"],
["El-Feth", "Pobjeda"],
["El-Hudžurat", "Odaje"],
["Kaf", "Kaf"],
["Ez-Zarijat", "Raspršivači"],
["Et-Tur", "Tur"],
["En-Nedžm", "Zvijezda"],
["El-Kamer", "Mjesec"],
["Er-Rahman", "Milostivi"],
["El-Vaki'a", "Neizbježno"],
["El-Hadid", "Željezo"],
["El-Mudžadele", "Prepirka"],
["El-Hašr", "Okupljanje"],
["El-Mumtehine", "Iskušana"],
["Es-Saff", "Red"],
["El-Džumu'a", "Petak"],
["El-Munafikun", "Licemjeri"],
["Et-Tegabun", "Prevara"],
["Et-Talak", "Rastava"],
["Et-Tahrim", "Zabrana"],
["El-Mulk", "Vlast"],
["El-Kalem", "Pero"],
["El-Hakka", "Neizbježna"],
["El-Me'aridž", "Uspinjanja"],
["Nuh", "Nuh"],
["El-Džinn", "Džinni"],
["El-Muzemmil", "Pokriveni"],
["El-Mudessir", "Ogrnuti"],
["El-Kijame", "Uskrsnuće"],
["El-Insan", "Čovjek"],
["El-Murselat", "Poslani"],
["En-Nebe", "Vijest"],
["En-Nazi'at", "Izvlačači"],
["'Abese", "Namrštio se"],
["Et-Tekwir", "Zamračivanje"],
["El-Infitar", "Cijepanje"],
["El-Mutaffifin", "Varalice"],
["El-Inšikak", "Raspukavanje"],
["El-Burudž", "Sazviježđa"],
["Et-Tarik", "Noćni posjetilac"],
["El-A'la", "Najviši"],
["El-Gašije", "Omotač"],
["El-Fedžr", "Zora"],
["El-Beled", "Grad"],
["Eš-Šems", "Sunce"],
["El-Lejl", "Noć"],
["Ed-Duha", "Prijepodne"],
["Eš-Šerh", "Olakšanje"],
["Et-Tin", "Smokva"],
["El-'Alek", "Ugrušak"],
["El-Kadr", "Sudbina"],
["El-Bejjine", "Jasan dokaz"],
["Ez-Zelzele", "Potres"],
["El-'Adijat", "Trčeći"],
["El-Kari'a", "Strahovita"],
["Et-Tekasur", "Natjecanje"],
["El-'Asr", "Vrijeme"],
["El-Humeze", "Klevetnik"],
["El-Fil", "Slon"],
["Kurejš", "Kurejš"],
["El-Ma'un", "Potrepštine"],
["El-Kevser", "Obilje"],
["El-Kafirun", "Nevjernici"],
["En-Nasr", "Pomoć"],
["El-Mesed", "Vlakna"],
["El-Ihlas", "Iskrenost"],
["El-Felek", "Zora"],
["En-Nas", "Ljudi"],
[]
];
//#endregion
//#region src/i18n/surah.fr.ts
const surahNamesFr = [
[],
["Al Fâtiha", "L'ouverture"],
["Al Baqarah", "La vache"],
["Al 'Imran", "La famille d'Imran"],
["An Nisâ'", "Les femmes"],
["Al Mâ'idah", "La table servie"],
["Al An'am", "Les bestiaux"],
["Al A'raf", "Al Araf"],
["Al Anfâl", "Le butin"],
["At Tawbah", "Le repentir"],
["Yûnus", "Jonas"],
["Hûd", "Houd"],
["Yûsuf", "Joseph"],
["Ar Ra'd", "Le tonnerre"],
["Ibrâhîm", "Abraham"],
["Al Hijr", "Al Hijr"],
["An Nahl", "Les abeilles"],
["Al Isrâ'", "Le voyage nocturne"],
["Al Kahf", "La caverne"],
["Maryam", "Marie"],
["Tâ Hâ", "Ta Ha"],
["Al Anbiyâ'", "Les prophètes"],
["Al Hajj", "Le pèlerinage"],
["Al Mu'minûn", "Les croyants"],
["An Nûr", "La lumière"],
["Al Furqân", "Le discernement"],
["Ash Shu'arâ'", "Les poètes"],
["An Naml", "Les fourmis"],
["Al Qasas", "Le récit"],
["Al 'Ankabût", "L'araignée"],
["Ar Rûm", "Les romains"],
["Luqmân", "Luqman"],
["As Sajdah", "La prosternation"],
["Al Ahzâb", "Les coalisés"],
["Saba'", "Saba"],
["Fâtir", "Le créateur"],
["Yâ Sîn", "Ya Sin"],
["As Sâffât", "Les rangées"],
["Sâd", "Sad"],
["Az Zumar", "Les groupes"],
["Ghâfir", "Le pardonneur"],
["Fussilat", "Les versets détaillés"],
["Ash Shûrâ", "La consultation"],
["Az Zukhruf", "L'ornement"],
["Ad Dukhân", "La fumée"],
["Al Jâthiyah", "L'agenouillée"],
["Al Ahqâf", "Al Ahqaf"],
["Muhammad", "Muhammad"],
["Al Fath", "La victoire éclatante"],
["Al Hujurât", "Les appartements"],
["Qâf", "Qaf"],
["Adh Dhâriyât", "Qui éparpillent"],
["At Tûr", "At Tour"],
["An Najm", "L'étoile"],
["Al Qamar", "La lune"],
["Ar Rahmân", "Le tout miséricordieux"],
["Al Wâqi'ah", "L'événement"],
["Al Hadîd", "Le fer"],
["Al Mujâdalah", "La discussion"],
["Al Hashr", "L'exode"],
["Al Mumtahanah", "L'éprouvée"],
["As Saff", "Le rang"],
["Al Jumu'ah", "Le vendredi"],
["Al Munâfiqûn", "Les hypocrites"],
["At Taghâbun", "La grande perte"],
["At Talâq", "Le divorce"],
["At Tahrîm", "L'interdiction"],
["Al Mulk", "La royauté"],
["Al Qalam", "La plume"],
["Al Hâqqah", "Celle qui montre la vérité"],
["Al Ma'ârij", "Les voies d'ascension"],
["Nûh", "Noé"],
["Al Jinn", "Les djinns"],
["Al Muzzammil", "L'enveloppé"],
["Al Muddaththir", "Le revêtu d'un manteau"],
["Al Qiyâmah", "La résurrection"],
["Al Insân", "L'homme"],
["Al Mursalât", "Les envoyés"],
["An Naba'", "La nouvelle"],
["An Nâzi'ât", "Les anges qui arrachent les âmes"],
["'Abasa", "Il s'est renfrogné"],
["At Takwîr", "L'obscurcissement"],
["Al Infitâr", "La rupture"],
["Al Mutaffifîn", "Les fraudeurs"],
["Al Inshiqâq", "La déchirure"],
["Al Burûj", "Les constellations"],
["At Târiq", "L'astre nocturne"],
["Al A'lâ", "Le très haut"],
["Al Ghâshiyah", "L'enveloppante"],
["Al Fajr", "L'aube"],
["Al Balad", "La cité"],
["Ash Shams", "Le soleil"],
["Al Layl", "La nuit"],
["Ad Duhâ", "Le jour montant"],
["Ash Sharh", "L'ouverture"],
["At Tîn", "Le figuier"],
["Al 'Alaq", "L'adhérence"],
["Al Qadr", "La destinée"],
["Al Bayyinah", "La preuve"],
["Az Zalzalah", "La secousse"],
["Al 'Âdiyât", "Les coursiers"],
["Al Qâri'ah", "Le fracas"],
["At Takâthur", "La course aux richesses"],
["Al 'Asr", "Le temps"],
["Al Humazah", "Les calomniateurs"],
["Al Fîl", "L'éléphant"],
["Quraysh", "Quraych"],
["Al Mâ'ûn", "L'ustensile"],
["Al Kawthar", "L'abondance"],
["Al Kâfirûn", "Les infidèles"],
["An Nasr", "Les secours"],
["Al Masad", "Les fibres"],
["Al Ikhlâs", "Le monothéisme pur"],
["Al Falaq", "L'aube naissante"],
["An Nâs", "Les hommes"],
[]
];
//#endregion
//#region src/i18n/surah.lt.ts
const surahNamesLt = [
[],
["Al-Fāticha", "Atidarančioji"],
["Al-Bakara", "Karvė"],
["Al-'Imran", "'Imrano šeima"],
["An-Nisa", "Moterys"],
["Al-Ma'idah'", "Stalas"],
["Al-An'am", "Galvijai"],
["Al-A'raf", "Iškilumos"],
["Al-Anfal", "Grobis"],
["At-Tawba", "Atgaila"],
["Yunus", "Jona"],
["Hud", "Hūdas"],
["Yusuf", "Juozapas"],
["Ar-Ra'd", "Griaustinis"],
["Ibrahim", "Abraomas"],
["Al-Chidžr", "Al-Chidžras"],
["An-Nachl", "Bitė"],
["Al-Isra", "Naktinis kelionė"],
["Al-Kahf", "Ola"],
["Marjam", "Marija"],
["Ta Ha", "Ta Ha"],
["Al-Anbija", "Pranašai"],
["Al-Chaddž", "Piligrimystė"],
["Al-Mu'minun", "Tikintieji"],
["An-Nur", "Šviesa"],
["Al-Furkan", "Skyrimas"],
["Aš-Šu'ara", "Poetai"],
["An-Naml", "Skruzdėlės"],
["Al-Kasas", "Pasakojimas"],
["Al-'Ankabut", "Voras"],
["Ar-Rum", "Romėnai"],
["Lukman", "Lukmanas"],
["As-Sadžda", "Nusilenkimas"],
["Al-Achzab", "Jungtinės pajėgos"],
["Saba", "Saba"],
["Fatir", "Kūrėjas"],
["Ja Sin", "Ja Sin"],
["As-Saffat", "Išsirikiavusieji"],
["Sad", "Sadas"],
["Az-Zumar", "Minios"],
["Gafir", "Atleidėjas"],
["Fussilat", "Aiškiai išdėstyti"],
["Aš-Šura", "Taryba"],
["Az-Zuchrufu", "Papuošimai"],
["Ad-Duchan", "Dūmai"],
["Al-Džasija", "Klūpėjimas"],
["Al-Achkaf", "Smėlio kopos"],
["Muchammad", "Muchammadas"],
["Al-Fath", "Pergalė"],
["Al-Chudžurat", "Kambariai"],
["Kaf", "Kafas"],
["Az-Zarijat", "Išsklaidantieji"],
["At-Tur", "Kalnas"],
["An-Nadžm", "Žvaigždė"],
["Al-Kamar", "Mėnulis"],
["Ar-Rachman", "Gailestingasis"],
["Al-Waki'a", "Neišvengiamybė"],
["Al-Chadid", "Geležis"],
["Al-Mudžadala", "Ginčijimasis"],
["Al-Chašr", "Susirinkimas"],
["Al-Mumtachana", "Išmėgintoji"],
["As-Saff", "Gretose"],
["Al-Džumu'a", "Penktadienis"],
["Al-Munafikun", "Veidmainiai"],
["At-Tagabun", "Apgaudinėjimas"],
["At-Talak", "Skyrybos"],
["At-Tachrim", "Uždraudimas"],
["Al-Mulk", "Karalystė"],
["Al-Kalam", "Rašiklis"],
["Al-Chakka", "Neišvengiamybė"],
["Al-Ma'aridž", "Pakilimo laiptai"],
["Nuch", "Nojus"],
["Al-Džinn", "Džinai"],
["Al-Muzzammil", "Susivyniojęs"],
["Al-Muddassir", "Apsigaubęs"],
["Al-Kijama", "Prisikėlimas"],
["Al-Insan", "Žmogus"],
["Al-Mursalat", "Siunčiamieji"],
["An-Naba", "Žinia"],
["An-Nazi'at", "Ištraukiantieji"],
["'Abasa", "Susiraukė"],
["At-Takwir", "Užtamsėjimas"],
["Al-Infitar", "Persiskelimas"],
["Al-Mutaffifin", "Apgavikai"],
["Al-Inšikak", "Persiskelimas"],
["Al-Burudž", "Žvaigždynai"],
["At-Tarik", "Naktinis svečias"],
["Al-A'la", "Aukščiausiasis"],
["Al-Gašija", "Apgaubianti"],
["Al-Fadžr", "Aušra"],
["Al-Balad", "Miestas"],
["Aš-Šams", "Saulė"],
["Al-Lajl", "Naktis"],
["Ad-Ducha", "Rytas"],
["Aš-Šarch", "Palengvinimas"],
["At-Tin", "Figa"],
["Al-'Alak", "Krešulys"],
["Al-Kadr", "Lemtis"],
["Al-Bajjina", "Aiškus įrodymas"],
["Az-Zalzala", "Žemės drebėjimas"],
["Al-'Adijat", "Lekiantys žirgai"],
["Al-Kari'a", "Griausmingoji"],
["At-Takasur", "Lenktyniavimas"],
["Al-'Asr", "Laikas"],
["Al-Chumaza", "Šmeižikai"],
["Al-Fil", "Dramblys"],
["Kuraiš", "Kuraiš"],
["Al-Ma'un", "Nedidelė pagalba"],
["Al-Kawsar", "Gausybė"],
["Al-Kafirun", "Netikintieji"],
["An-Nasr", "Pagalba"],
["Al-Masad", "Palmių skaidulos"],
["Al-Ichlas", "Nuoširdumas"],
["Al-Falak", "Aušra"],
["An-Nas", "Žmonija"],
[]
];
//#endregion
//#region src/i18n/surah.ky.ts
const surahNamesKy = [
[],
["Фатиха", "Ачуучу"],
["Бакара", "Уй"],
["Али Имран", "Имран үйүлү"],
["Ниса", "Аялдар"],
["Маида", "Дасторкон"],
["Анъам", "Мал"],
["Аъраф", "Бийиктиктер"],
["Анфал", "Олжо"],
["Тауба", "Тообо"],
["Юнус", "Жунус"],
["Худ", "Худ"],
["Юсуф", "Жусуп"],
["Раъд", "Күн күркүрөө"],
["Ибрахим", "Ибрахим"],
["Хиджр", "Хиджр"],
["Нахл", "Аарылар"],
["Исра", "Түнкү сапар"],
["Кахф", "Үңкүр"],
["Марьям", "Марьям"],
["Та Ха", "Та Ха"],
["Анбия", "Пайгамбарлар"],
["Хадж", "Ажылык"],
["Муъминун", "Момундар"],
["Нур", "Жарык"],
["Фуркан", "Айырмалаган"],
["Шуара", "Акындар"],
["Намл", "Кумурскалар"],
["Касас", "Окуялар"],
["Анкабут", "Жөргөмүш"],
["Рум", "Румдуктар"],
["Лукман", "Лукман"],
["Саджда", "Сажда"],
["Ахзаб", "Топтор"],
["Саба", "Саба"],
["Фатир", "Жаратуучу"],
["Я Син", "Я Син"],
["Саффат", "Катарга турууччулар"],
["Сад", "Сад"],
["Зумар", "Топтор"],
["Гафир", "Кечирүүчү"],
["Фуссилат", "Чечмеленген"],
["Шура", "Кеңеш"],
["Зухруф", "Зер заты"],
["Духан", "Түтүн"],
["Джасийя", "Тизелениш"],
["Ахкаф", "Кум үйүндүлөрү"],
["Мухаммад", "Мухаммад"],
["Фатх", "Жеңиш"],
["Худжурат", "Бөлмөлөр"],
["Каф", "Каф"],
["Зарият", "Чачыраттуучулар"],
["Тур", "Тур тоосу"],
["Наджм", "Жылдыз"],
["Камар", "Ай"],
["Рахман", "Рахман"],
["Вакыа", "Окуя"],
["Хадид", "Темир"],
["Муджадала", "Талаш-тартыш"],
["Хашр", "Чогултуу"],
["Мумтахина", "Сыналган"],
["Сафф", "Катар"],
["Джумъа", "Жума"],
["Мунафикун", "Мунапыктар"],
["Тагабун", "Алданыш"],
["Талак", "Ажырашуу"],
["Тахрим", "Тыюу салуу"],
["Мулк", "Бийлик"],
["Калам", "Калам"],
["Хакка", "Чындык"],
["Маариж", "Көтөрүлүү баскычтары"],
["Нух", "Нух"],
["Джинн", "Жиндер"],
["Музаммил", "Оролгон"],
["Муддассир", "Жабылган"],
["Кийама", "Кыямат"],
["Инсан", "Адам"],
["Мурсалат", "Жөнөтүлгөндөр"],
["Набаъ", "Чоң кабар"],
["Назиат", "Тартып алуучулар"],
["Абаса", "Ачууланды"],
["Таквир", "Орогуу"],
["Инфитар", "Жарылуу"],
["Мутаффифин", "Өлчөмдү азайтуучулар"],
["Иншикак", "Жарылуу"],
["Бурудж", "Жылдыздар топтому"],
["Тарик", "Түнкү келүүчү"],
["Аъла", "Эң Жогорку"],
["Гашийя", "Жабуучу"],
["Фаджр", "Таң"],
["Балад", "Шаар"],
["Шамс", "Күн"],
["Ляйл", "Түн"],
["Духа", "Күндүз"],
["Шарх", "Ачуу"],
["Тин", "Инжир"],
["Алак", "Лакта кан"],
["Кадр", "Кадыр түнү"],
["Баййина", "Ачык далил"],
["Залзаля", "Зилзала"],
["Адият", "Чуркагандар"],
["Кариа", "Согуш"],
["Такасур", "Көптүккө умтулуу"],
["Аср", "Заман"],
["Хумаза", "Өсөкчү"],
["Фил", "Пил"],
["Курайш", "Курайш"],
["Маун", "Жардам"],
["Каусар", "Көптүк"],
["Кафирун", "Капырлар"],
["Наср", "Жардам"],
["Масад", "Жипчелер"],
["Ихлас", "Ыхлас"],
["Фалак", "Таң"],
["Нас", "Адамдар"],
[]
];
//#endregion
//#region src/i18n/surah.tg.ts
const surahNamesTg = [
[],
["Фотиҳа", "Кушоянда"],
["Бақара", "Модагов"],
["Оли Имрон", "Оли Имрон"],
["Нисо", "Занон"],
["Моида", "Дастурхон"],
["Анъом", "Чорво"],
["Аъроф", "Аъроф"],
["Анфол", "Ғанимат"],
["Тавба", "Тавба"],
["Юнус", "Юнус"],
["Ҳуд", "Ҳуд"],
["Юсуф", "Юсуф"],
["Раъд", "Раъд"],
["Иброҳим", "Иброҳим"],
["Ҳиҷр", "Ҳиҷр"],
["Наҳл", "Занбури асал"],
["Исро", "Шабгардӣ"],
["Каҳф", "Ғор"],
["Марям", "Марям"],
["Тоҳо", "Тоҳо"],
["Анбиё", "Паёмбарон"],
["Ҳаҷҷ", "Ҳаҷҷ"],
["Муъминун", "Мӯъминон"],
["Нур", "Нур"],
["Фурқон", "Ҷудокунанда"],
["Шуаро", "Шоирон"],
["Намл", "Мӯрчагон"],
["Қасас", "Ривоят"],
["Анкабут", "Тортанак"],
["Рум", "Рум"],
["Луқмон", "Луқмон"],
["Саҷда", "Саҷда"],
["Аҳзоб", "Гурӯҳҳо"],
["Сабаъ", "Сабаъ"],
["Фотир", "Офаридгор"],
["Ёсин", "Ёсин"],
["Соффот", "Сафбандагон"],
["Сод", "Сод"],
["Зумар", "Гурӯҳгурӯҳ"],
["Ғофир", "Омурзанда"],
["Фуссилат", "Тафсилдода"],
["Шуро", "Машварат"],
["Зухруф", "Зеру зинат"],
["Духон", "Дуд"],
["Ҷосия", "Зонузада"],
["Аҳқоф", "Аҳқоф"],
["Муҳаммад", "Муҳаммад"],
["Фатҳ", "Пирӯзӣ"],
["Ҳуҷурот", "Ҳуҷраҳо"],
["Қоф", "Қоф"],
["Зориёт", "Бодҳои пароканда"],
["Тур", "Тур"],
["Наҷм", "Ситора"],
["Қамар", "Моҳ"],
["Раҳмон", "Раҳмон"],
["Воқиа", "Воқеа"],
["Ҳадид", "Оҳан"],
["Муҷодала", "Баҳс"],
["Ҳашр", "Ҷамъомад"],
["Мумтаҳина", "Санҷидашуда"],
["Сафф", "Саф"],
["Ҷумуа", "Ҷумъа"],
["Мунофиқун", "Мунофиқон"],
["Тағобун", "Фиребхурӣ"],
["Талоқ", "Талоқ"],
["Таҳрим", "Манъ кардан"],
["Мулк", "Подшоҳӣ"],
["Қалам", "Қалам"],
["Ҳоққа", "Ҳақиқат"],
["Маориҷ", "Зинапояҳо"],
["Нуҳ", "Нуҳ"],
["Ҷинн", "Ҷиннон"],
["Музаммил", "Печидашуда"],
["Муддассир", "Ҷомапӯшида"],
["Қиёмат", "Қиёмат"],
["Инсон", "Инсон"],
["Мурсалот", "Фиристодашудагон"],
["Набаъ", "Хабари бузург"],
["Нозиот", "Баркашандагон"],
["Абаса", "Тира афтод"],
["Таквир", "Даргиронида шудан"],
["Инфитор", "Шикофта шудан"],
["Мутаффифин", "Камфурӯшон"],
["Иншиқоқ", "Шикофтан"],
["Бурӯҷ", "Бурҷҳо"],
["Ториқ", "Омадани шабона"],
["Аъло", "Олӣтарин"],
["Ғошия", "Фарогиранда"],
["Фаҷр", "Субҳи содиқ"],
["Балад", "Шаҳр"],
["Шамс", "Офтоб"],
["Лайл", "Шаб"],
["Зуҳо", "Нимрӯз"],
["Шарҳ", "Кушодан"],
["Тин", "Анҷир"],
["Алақ", "Лахтаи хун"],
["Қадр", "Қадр"],
["Баййина", "Далели равшан"],
["Залзала", "Зилзила"],
["Одиёт", "Давандагон"],
["Қориа", "Садамаи сахт"],
["Такосур", "Зиёдхоҳӣ"],
["Аср", "Аср"],
["Ҳумаза", "Тӯҳматзан"],
["Фил", "Фил"],
["Қурайш", "Қурайш"],
["Моун", "Ёрӣ"],
["Кавсар", "Кавсар"],
["Кофирун", "Кофирон"],
["Наср", "Ёрӣ"],
["Масад", "Ришта"],
["Ихлос", "Ихлос"],
["Фалақ", "Субҳи содиқ"],
["Нос", "Мардум"],
[]
];
//#endregion
//#region src/i18n/getSurahNames.ts
/**
* Retrieves the list of Surah names in the specified language.
*
* @param lang - The language code for which to retrieve the Surah names
* @returns An array of Surah names in the specified language
*
* @example
* ```typescript
* const arabicNames = getSurahNames('ar');
* const englishNames = getSurahNames('en');
* ```
*/
function getSurahNames(lang) {
return surahNames[lang];
}
//#endregion
//#region src/i18n/types.ts
const languages = [
"en",
"az",
"ru",
"tr",
"uz",
"kk",
"fr",
"lt",
"tg",
"ky",
"bs"
];
//#endregion
//#region src/i18n/index.ts
const surahNames = {
en: surahNamesEn,
az: surahNamesAz,
tr: surahNamesTr,
ru: surahNamesRu,
uz: surahNamesUz,
kk: surahNamesKk,
fr: surahNamesFr,
lt: surahNamesLt,
tg: surahNamesTg,
ky: surahNamesKy,
bs: surahNamesBs
};
//#endregion
//#region src/index.ts
/**
* Create a QuranRiwaya instance with Hafs riwaya (default)
*/
const createHafs = () => QuranRiwaya.create(HafsLists);
/**
* Create a QuranRiwaya instance with Qalun riwaya
*/
const createQalun = () => QuranRiwaya.create(QalunLists);
/**
* Create a QuranRiwaya instance with Warsh riwaya
*/
const createWarsh = () => QuranRiwaya.create(WarshLists);
/**
* Pre-initialized QuranRiwaya instance for Hafs (for convenience)
*/
const quran = createHafs();
//#endregion
exports.QuranRiwaya = QuranRiwaya;
exports.ayahStringSplitter = ayahStringSplitter;
exports.checkValidAyahId = checkValidAyahId;
exports.checkValidJuz = checkValidJuz;
exports.checkValidManzil = checkValidManzil;
exports.checkValidPage = checkValidPage;
exports.checkValidRuku = checkValidRuku;
exports.checkValidSurah = checkValidSurah;
exports.checkValidSurahAyah = checkValidSurahAyah;
exports.createHafs = createHafs;
exports.createQalun = createQalun;
exports.createWarsh = createWarsh;
exports.findAyahIdBySurah = findAyahIdBySurah;
exports.findJuz = findJuz;
exports.findJuzAndShift = findJuzAndShift;
exports.findJuzAndShiftByAyahId = findJuzAndShiftByAyahId;
exports.findJuzByAyahId = findJuzByAyahId;
exports.findJuzMetaBySurah = findJuzMetaBySurah;
exports.findManzil = findManzil;
exports.findManzilByAyahId = findManzilByAyahId;
exports.findPage = findPage;
exports.findPagebyAyahId = findPagebyAyahId;
exports.findRangeAroundAyah = findRangeAroundAyah;
exports.findRangeAroundSurahAyah = findRangeAroundSurahAyah;
exports.findRubAlHizb = findRubAlHizb;
exports.findRubAlHizbByAyahId = findRubAlHizbByAyahId;
exports.findRukuByAyahId = findRukuByAyahId;
exports.findSurahAyahByAyahId = findSurahAyahByAyahId;
exports.findSurahByAyahId = findSurahByAyahId;
exports.generatePartBlocks = generatePartBlocks;
exports.getAyahCountInSurah = getAyahCountInSurah;
exports.getAyahMeta = getAyahMeta;
exports.getAyahMetasForSurah = getAyahMetasForSurah;
exports.getJuzMeta = getJuzMeta;
exports.getList = getList;
exports.getListNormalised = getListNormalised;
exports.getListOfRiwaya = getListOfRiwaya;
exports.getListsOfRiwaya = getListsOfRiwaya;
exports.getManzilMeta = getManzilMeta;
exports.getPageMeta = getPageMeta;
exports.getRubAlHizb = getRubAlHizb;
exports.getRubAlHizbByAyahId = getRubAlHizbByAyahId;
exports.getRubAlHizbMeta = getRubAlHizbMeta;
exports.getRubAlHizbMetaByAyahId = getRubAlHizbMetaByAyahId;
exports.getRukuMeta = getRukuMeta;
exports.getSurahMeta = getSurahMeta;
exports.getSurahNames = getSurahNames;
exports.isAyahJuzFirst = isAyahJuzFirst;
exports.isAyahPageFirst = isAyahPageFirst;
exports.isSurahAyahJuzFirst = isSurahAyahJuzFirst;
exports.isSurahAyahPageFirst = isSurahAyahPageFirst;
exports.isValidAyahId = isValidAyahId;
exports.isValidAyahNo = isValidAyahNo;
exports.isValidJuz = isValidJuz;
exports.isValidManzil = isValidManzil;
exports.isValidPage = isValidPage;
exports.isValidRuku = isValidRuku;
exports.isValidSurah = isValidSurah;
exports.isValidSurahAyah = isValidSurahAyah;
exports.languages = languages;
exports.nextAyah = nextAyah;
exports.prevAyah = prevAyah;
exports.quran = quran;
exports.string2NumberSplitter = string2NumberSplitter;
exports.string2NumberSplitterStrict = string2NumberSplitterStrict;
exports.surahNames = surahNames;
exports.surahNamesAz = surahNamesAz;
exports.surahNamesBs = surahNamesBs;
exports.surahNamesEn = surahNamesEn;
exports.surahNamesFr = surahNamesFr;
exports.surahNamesKk = surahNamesKk;
exports.surahNamesKy = surahNamesKy;
exports.surahNamesLt = surahNamesLt;
exports.surahNamesRu = surahNamesRu;
exports.surahNamesTg = surahNamesTg;
exports.surahNamesTr = surahNamesTr;
exports.surahNamesUz = surahNamesUz;
exports.surahStringParser = surahStringParser;
return exports;
})({});