@quranjs/api 1.7.0 → 1.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +1 -1
  2. package/dist/index.d.ts +14 -0
  3. package/dist/index.min.js +13 -0
  4. package/dist/index.min.js.map +1 -0
  5. package/dist/index.min.mjs +6 -0
  6. package/dist/index.min.mjs.map +1 -0
  7. package/dist/index.umd.js +886 -0
  8. package/dist/index.umd.js.map +1 -0
  9. package/dist/index.umd.min.js +53 -0
  10. package/dist/index.umd.min.js.map +1 -0
  11. package/package.json +24 -9
  12. package/dist/index.js +0 -13
  13. package/dist/index.js.map +0 -1
  14. package/dist/index.mjs +0 -6
  15. package/dist/index.mjs.map +0 -1
  16. package/src/index.ts +0 -2
  17. package/src/sdk/index.ts +0 -9
  18. package/src/sdk/utils.ts +0 -239
  19. package/src/sdk/v4/_fetcher.ts +0 -79
  20. package/src/sdk/v4/audio.ts +0 -246
  21. package/src/sdk/v4/chapters.ts +0 -80
  22. package/src/sdk/v4/index.ts +0 -17
  23. package/src/sdk/v4/juzs.ts +0 -22
  24. package/src/sdk/v4/resources.ts +0 -220
  25. package/src/sdk/v4/search.ts +0 -41
  26. package/src/sdk/v4/verses.ts +0 -234
  27. package/src/types/BaseApiOptions.ts +0 -6
  28. package/src/types/ChapterId.ts +0 -4
  29. package/src/types/FetchFn.ts +0 -1
  30. package/src/types/HizbNumber.ts +0 -4
  31. package/src/types/JuzNumber.ts +0 -4
  32. package/src/types/PageNumber.ts +0 -4
  33. package/src/types/RubNumber.ts +0 -4
  34. package/src/types/VerseKey.ts +0 -117
  35. package/src/types/api/ApiResponses.ts +0 -19
  36. package/src/types/api/AudioData.ts +0 -20
  37. package/src/types/api/AudioResponse.ts +0 -9
  38. package/src/types/api/Chapter.ts +0 -15
  39. package/src/types/api/ChapterInfo.ts +0 -8
  40. package/src/types/api/Footnote.ts +0 -6
  41. package/src/types/api/Juz.ts +0 -8
  42. package/src/types/api/Pagination.ts +0 -7
  43. package/src/types/api/Reciter.ts +0 -21
  44. package/src/types/api/Resources.ts +0 -81
  45. package/src/types/api/Segment.ts +0 -4
  46. package/src/types/api/Tafsir.ts +0 -7
  47. package/src/types/api/TafsirInfo.ts +0 -10
  48. package/src/types/api/TranslatedName.ts +0 -4
  49. package/src/types/api/Translation.ts +0 -21
  50. package/src/types/api/Transliteration.ts +0 -4
  51. package/src/types/api/Verse.ts +0 -35
  52. package/src/types/api/Word.ts +0 -30
  53. package/src/types/api/index.ts +0 -18
  54. package/src/types/index.ts +0 -136
  55. package/src/types/utils.ts +0 -24
  56. package/src/utils/misc.ts +0 -3
@@ -0,0 +1,886 @@
1
+ /* umd */
2
+ (function (g, f) {
3
+ if ("object" == typeof exports && "object" == typeof module) {
4
+ module.exports = f();
5
+ } else if ("function" == typeof define && define.amd) {
6
+ define("quranjsApi", [], f);
7
+ } else if ("object" == typeof exports) {
8
+ exports["quranjsApi"] = f();
9
+ } else {
10
+ g["quranjsApi"] = {};
11
+ Object.assign(g["quranjsApi"], f());
12
+ }
13
+ }(this, () => {
14
+ var exports = {};
15
+ var module = { exports };
16
+
17
+
18
+
19
+
20
+ (function (factory) {
21
+ typeof define === 'function' && define.amd ? define(factory) :
22
+ factory();
23
+ })((function () { 'use strict';
24
+
25
+ /* @QuranJS/API version 1.7.2 */
26
+ var __create = Object.create;
27
+ var __defProp = Object.defineProperty;
28
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
29
+ var __getOwnPropNames = Object.getOwnPropertyNames;
30
+ var __getProtoOf = Object.getPrototypeOf;
31
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
32
+ var __commonJS = (cb, mod) => function __require() {
33
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
34
+ };
35
+ var __export = (target, all) => {
36
+ for (var name in all)
37
+ __defProp(target, name, { get: all[name], enumerable: true });
38
+ };
39
+ var __copyProps = (to, from, except, desc) => {
40
+ if (from && typeof from === "object" || typeof from === "function") {
41
+ for (let key of __getOwnPropNames(from))
42
+ if (!__hasOwnProp.call(to, key) && key !== except)
43
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
44
+ }
45
+ return to;
46
+ };
47
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
48
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
49
+ mod
50
+ ));
51
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
52
+
53
+ // node_modules/.pnpm/humps@2.0.1/node_modules/humps/humps.js
54
+ var require_humps = __commonJS({
55
+ "node_modules/.pnpm/humps@2.0.1/node_modules/humps/humps.js"(exports, module2) {
56
+ (function(global) {
57
+ var _processKeys = function(convert, obj, options) {
58
+ if (!_isObject(obj) || _isDate(obj) || _isRegExp(obj) || _isBoolean(obj) || _isFunction(obj)) {
59
+ return obj;
60
+ }
61
+ var output, i = 0, l = 0;
62
+ if (_isArray(obj)) {
63
+ output = [];
64
+ for (l = obj.length; i < l; i++) {
65
+ output.push(_processKeys(convert, obj[i], options));
66
+ }
67
+ } else {
68
+ output = {};
69
+ for (var key in obj) {
70
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
71
+ output[convert(key, options)] = _processKeys(convert, obj[key], options);
72
+ }
73
+ }
74
+ }
75
+ return output;
76
+ };
77
+ var separateWords = function(string, options) {
78
+ options = options || {};
79
+ var separator = options.separator || "_";
80
+ var split = options.split || /(?=[A-Z])/;
81
+ return string.split(split).join(separator);
82
+ };
83
+ var camelize = function(string) {
84
+ if (_isNumerical(string)) {
85
+ return string;
86
+ }
87
+ string = string.replace(/[\-_\s]+(.)?/g, function(match, chr) {
88
+ return chr ? chr.toUpperCase() : "";
89
+ });
90
+ return string.substr(0, 1).toLowerCase() + string.substr(1);
91
+ };
92
+ var pascalize = function(string) {
93
+ var camelized = camelize(string);
94
+ return camelized.substr(0, 1).toUpperCase() + camelized.substr(1);
95
+ };
96
+ var decamelize3 = function(string, options) {
97
+ return separateWords(string, options).toLowerCase();
98
+ };
99
+ var toString = Object.prototype.toString;
100
+ var _isFunction = function(obj) {
101
+ return typeof obj === "function";
102
+ };
103
+ var _isObject = function(obj) {
104
+ return obj === Object(obj);
105
+ };
106
+ var _isArray = function(obj) {
107
+ return toString.call(obj) == "[object Array]";
108
+ };
109
+ var _isDate = function(obj) {
110
+ return toString.call(obj) == "[object Date]";
111
+ };
112
+ var _isRegExp = function(obj) {
113
+ return toString.call(obj) == "[object RegExp]";
114
+ };
115
+ var _isBoolean = function(obj) {
116
+ return toString.call(obj) == "[object Boolean]";
117
+ };
118
+ var _isNumerical = function(obj) {
119
+ obj = obj - 0;
120
+ return obj === obj;
121
+ };
122
+ var _processor = function(convert, options) {
123
+ var callback = options && "process" in options ? options.process : options;
124
+ if (typeof callback !== "function") {
125
+ return convert;
126
+ }
127
+ return function(string, options2) {
128
+ return callback(string, convert, options2);
129
+ };
130
+ };
131
+ var humps = {
132
+ camelize,
133
+ decamelize: decamelize3,
134
+ pascalize,
135
+ depascalize: decamelize3,
136
+ camelizeKeys: function(object, options) {
137
+ return _processKeys(_processor(camelize, options), object);
138
+ },
139
+ decamelizeKeys: function(object, options) {
140
+ return _processKeys(_processor(decamelize3, options), object, options);
141
+ },
142
+ pascalizeKeys: function(object, options) {
143
+ return _processKeys(_processor(pascalize, options), object);
144
+ },
145
+ depascalizeKeys: function() {
146
+ return this.decamelizeKeys.apply(this, arguments);
147
+ }
148
+ };
149
+ if (typeof define === "function" && define.amd) {
150
+ define(humps);
151
+ } else if (typeof module2 !== "undefined" && module2.exports) {
152
+ module2.exports = humps;
153
+ } else {
154
+ global.humps = humps;
155
+ }
156
+ })(exports);
157
+ }
158
+ });
159
+
160
+ // src/index.ts
161
+ var src_exports = {};
162
+ __export(src_exports, {
163
+ CharType: () => CharType,
164
+ Language: () => Language,
165
+ QuranFont: () => QuranFont,
166
+ quran: () => sdk_default
167
+ });
168
+ module.exports = __toCommonJS(src_exports);
169
+
170
+ // src/types/api/Word.ts
171
+ var CharType = /* @__PURE__ */ ((CharType2) => {
172
+ CharType2["Word"] = "word";
173
+ CharType2["End"] = "end";
174
+ CharType2["Pause"] = "pause";
175
+ CharType2["Sajdah"] = "sajdah";
176
+ CharType2["RubElHizb"] = "rub-el-hizb";
177
+ return CharType2;
178
+ })(CharType || {});
179
+
180
+ // src/types/index.ts
181
+ var Language = /* @__PURE__ */ ((Language2) => {
182
+ Language2["ARABIC"] = "ar";
183
+ Language2["ENGLISH"] = "en";
184
+ Language2["URDU"] = "ur";
185
+ Language2["BENGALI"] = "bn";
186
+ Language2["TURKISH"] = "tr";
187
+ Language2["SPANISH"] = "es";
188
+ Language2["GERMAN"] = "de";
189
+ Language2["BOSNIAN"] = "bs";
190
+ Language2["RUSSIAN"] = "ru";
191
+ Language2["ALBANIAN_AL"] = "al";
192
+ Language2["FRENCH"] = "fr";
193
+ Language2["DUTCH"] = "nl";
194
+ Language2["TAMIL"] = "ta";
195
+ Language2["TAJIK"] = "tg";
196
+ Language2["INDONESIAN"] = "id";
197
+ Language2["UZBEK"] = "uz";
198
+ Language2["VIETNAMESE"] = "vi";
199
+ Language2["CHINESE"] = "zh";
200
+ Language2["ITALIAN"] = "it";
201
+ Language2["JAPANESE"] = "ja";
202
+ Language2["MALAYALAM"] = "ml";
203
+ Language2["AMHARIC"] = "am";
204
+ Language2["KAZAKH"] = "kk";
205
+ Language2["PORTUGUESE"] = "pt";
206
+ Language2["TAGALOG"] = "tl";
207
+ Language2["THAI"] = "th";
208
+ Language2["KOREAN"] = "ko";
209
+ Language2["HINDI"] = "hi";
210
+ Language2["KURDISH"] = "ku";
211
+ Language2["HAUSA"] = "ha";
212
+ Language2["AZERI"] = "az";
213
+ Language2["SWAHILI"] = "sw";
214
+ Language2["PERSIAN"] = "fa";
215
+ Language2["SERBIAN"] = "sr";
216
+ Language2["MARANAO"] = "mrn";
217
+ Language2["AMAZIGH"] = "zgh";
218
+ Language2["ASSAMESE"] = "as";
219
+ Language2["BULGARIAN"] = "bg";
220
+ Language2["CHECHEN"] = "ce";
221
+ Language2["CZECH"] = "cs";
222
+ Language2["DIVEHI"] = "dv";
223
+ Language2["DHIVEHI"] = "dv";
224
+ Language2["MALDIVIAN"] = "dv";
225
+ Language2["FINNISH"] = "fi";
226
+ Language2["GUJAARATI"] = "gu";
227
+ Language2["HEBREW"] = "he";
228
+ Language2["GEORGIAN"] = "ka";
229
+ Language2["CENTRAL_KHMER"] = "km";
230
+ Language2["GANDA"] = "lg";
231
+ Language2["MARATHI"] = "mr";
232
+ Language2["YORUBA"] = "yo";
233
+ Language2["MALAY"] = "ms";
234
+ Language2["NEPALI"] = "ne";
235
+ Language2["SWEDISH"] = "sv";
236
+ Language2["TELUGU"] = "te";
237
+ Language2["TATAR"] = "tt";
238
+ Language2["UIGHUR"] = "ug";
239
+ Language2["UYGHUR"] = "ug";
240
+ Language2["UKRAINIAN"] = "uk";
241
+ Language2["NORWEGIAN"] = "no";
242
+ Language2["OROMO"] = "om";
243
+ Language2["POLISH"] = "pl";
244
+ Language2["PASHTO"] = "ps";
245
+ Language2["ROMANIAN"] = "ro";
246
+ Language2["SINDHI"] = "sd";
247
+ Language2["NORTHERN_SAMI"] = "se";
248
+ Language2["SINHALA"] = "si";
249
+ Language2["SINHALESE"] = "si";
250
+ Language2["SOMALI"] = "so";
251
+ Language2["ALBANIAN_SQ"] = "sq";
252
+ return Language2;
253
+ })(Language || {});
254
+ var QuranFont = /* @__PURE__ */ ((QuranFont2) => {
255
+ QuranFont2["MadaniV1"] = "code_v1";
256
+ QuranFont2["MadaniV2"] = "code_v2";
257
+ QuranFont2["Uthmani"] = "text_uthmani";
258
+ return QuranFont2;
259
+ })(QuranFont || {});
260
+
261
+ // src/sdk/v4/_fetcher.ts
262
+ var import_humps = __toESM(require_humps());
263
+
264
+ // src/utils/misc.ts
265
+ var removeBeginningSlash = (url) => {
266
+ return url.startsWith("/") ? url.slice(1) : url;
267
+ };
268
+
269
+ // src/sdk/v4/_fetcher.ts
270
+ var API_BASE_URL = "https://api.quran.com/api/v4/";
271
+ var makeUrl = (url, params) => {
272
+ const baseUrl = `${API_BASE_URL}${removeBeginningSlash(url)}`;
273
+ if (!params)
274
+ return baseUrl;
275
+ const paramsWithDecamelizedKeys = (0, import_humps.decamelizeKeys)(params);
276
+ const paramsString = new URLSearchParams(
277
+ Object.entries(paramsWithDecamelizedKeys).filter(
278
+ ([, value]) => value !== void 0
279
+ )
280
+ ).toString();
281
+ if (!paramsString)
282
+ return baseUrl;
283
+ return `${baseUrl}?${paramsString}`;
284
+ };
285
+ var fetcher = async (url, params = {}, fetchFn) => {
286
+ if (fetchFn) {
287
+ const json2 = await fetchFn(makeUrl(url, params));
288
+ return (0, import_humps.camelizeKeys)(json2);
289
+ }
290
+ if (typeof globalThis.fetch !== "function") {
291
+ throw new Error(
292
+ "Looks like there is no global fetch function. Take a look at https://quranjs.com/techniques#custom-fetcher for more info."
293
+ );
294
+ }
295
+ const res = await globalThis.fetch(makeUrl(url, params));
296
+ if (!res.ok || res.status >= 400) {
297
+ throw new Error(`${res.status} ${res.statusText}`);
298
+ }
299
+ const json = await res.json();
300
+ return (0, import_humps.camelizeKeys)(json);
301
+ };
302
+ var mergeApiOptions = (options = {}, defaultOptions4 = {}) => {
303
+ const clonedOptions = { ...options };
304
+ if (clonedOptions.fetchFn)
305
+ clonedOptions.fetchFn = void 0;
306
+ const final = {
307
+ ...defaultOptions4,
308
+ ...clonedOptions
309
+ };
310
+ if (final.fields) {
311
+ const fields = [];
312
+ Object.entries(final.fields).forEach(([key, value]) => {
313
+ if (value)
314
+ fields.push((0, import_humps.decamelize)(key));
315
+ });
316
+ final.fields = fields.join(",");
317
+ }
318
+ return final;
319
+ };
320
+
321
+ // src/sdk/utils.ts
322
+ var versesMapping = {
323
+ "1": 7,
324
+ "2": 286,
325
+ "3": 200,
326
+ "4": 176,
327
+ "5": 120,
328
+ "6": 165,
329
+ "7": 206,
330
+ "8": 75,
331
+ "9": 129,
332
+ "10": 109,
333
+ "11": 123,
334
+ "12": 111,
335
+ "13": 43,
336
+ "14": 52,
337
+ "15": 99,
338
+ "16": 128,
339
+ "17": 111,
340
+ "18": 110,
341
+ "19": 98,
342
+ "20": 135,
343
+ "21": 112,
344
+ "22": 78,
345
+ "23": 118,
346
+ "24": 64,
347
+ "25": 77,
348
+ "26": 227,
349
+ "27": 93,
350
+ "28": 88,
351
+ "29": 69,
352
+ "30": 60,
353
+ "31": 34,
354
+ "32": 30,
355
+ "33": 73,
356
+ "34": 54,
357
+ "35": 45,
358
+ "36": 83,
359
+ "37": 182,
360
+ "38": 88,
361
+ "39": 75,
362
+ "40": 85,
363
+ "41": 54,
364
+ "42": 53,
365
+ "43": 89,
366
+ "44": 59,
367
+ "45": 37,
368
+ "46": 35,
369
+ "47": 38,
370
+ "48": 29,
371
+ "49": 18,
372
+ "50": 45,
373
+ "51": 60,
374
+ "52": 49,
375
+ "53": 62,
376
+ "54": 55,
377
+ "55": 78,
378
+ "56": 96,
379
+ "57": 29,
380
+ "58": 22,
381
+ "59": 24,
382
+ "60": 13,
383
+ "61": 14,
384
+ "62": 11,
385
+ "63": 11,
386
+ "64": 18,
387
+ "65": 12,
388
+ "66": 12,
389
+ "67": 30,
390
+ "68": 52,
391
+ "69": 52,
392
+ "70": 44,
393
+ "71": 28,
394
+ "72": 28,
395
+ "73": 20,
396
+ "74": 56,
397
+ "75": 40,
398
+ "76": 31,
399
+ "77": 50,
400
+ "78": 40,
401
+ "79": 46,
402
+ "80": 42,
403
+ "81": 29,
404
+ "82": 19,
405
+ "83": 36,
406
+ "84": 25,
407
+ "85": 22,
408
+ "86": 17,
409
+ "87": 19,
410
+ "88": 26,
411
+ "89": 30,
412
+ "90": 20,
413
+ "91": 15,
414
+ "92": 21,
415
+ "93": 11,
416
+ "94": 8,
417
+ "95": 8,
418
+ "96": 19,
419
+ "97": 5,
420
+ "98": 8,
421
+ "99": 8,
422
+ "100": 11,
423
+ "101": 11,
424
+ "102": 8,
425
+ "103": 3,
426
+ "104": 9,
427
+ "105": 5,
428
+ "106": 4,
429
+ "107": 7,
430
+ "108": 3,
431
+ "109": 6,
432
+ "110": 3,
433
+ "111": 5,
434
+ "112": 4,
435
+ "113": 5,
436
+ "114": 6
437
+ };
438
+ var isValidChapterId = (id) => {
439
+ const parsedId = typeof id === "number" ? id : Number(id);
440
+ if (!parsedId || parsedId <= 0 || parsedId > 114)
441
+ return false;
442
+ return true;
443
+ };
444
+ var isValidJuz = (juz) => {
445
+ const parsedJuz = typeof juz === "number" ? juz : Number(juz);
446
+ if (!parsedJuz || parsedJuz <= 0 || parsedJuz > 30)
447
+ return false;
448
+ return true;
449
+ };
450
+ var isValidRub = (rub) => {
451
+ const parsedRub = typeof rub === "number" ? rub : Number(rub);
452
+ if (!parsedRub || parsedRub <= 0 || parsedRub > 240)
453
+ return false;
454
+ return true;
455
+ };
456
+ var isValidHizb = (hizb) => {
457
+ const parsedHizb = typeof hizb === "number" ? hizb : Number(hizb);
458
+ if (!parsedHizb || parsedHizb <= 0 || parsedHizb > 60)
459
+ return false;
460
+ return true;
461
+ };
462
+ var isValidQuranPage = (page) => {
463
+ const parsedPage = typeof page === "number" ? page : Number(page);
464
+ if (!parsedPage || parsedPage <= 0 || parsedPage > 604)
465
+ return false;
466
+ return true;
467
+ };
468
+ var isValidVerseKey = (key) => {
469
+ const [chapterId, verseId] = key.trim().split(":");
470
+ if (!chapterId || !verseId || !isValidChapterId(chapterId))
471
+ return false;
472
+ const parsedVerse = Number(verseId);
473
+ const verseCount = versesMapping[chapterId];
474
+ if (!parsedVerse || parsedVerse <= 0 || parsedVerse > verseCount)
475
+ return false;
476
+ return true;
477
+ };
478
+ var utils = {
479
+ isValidChapterId,
480
+ isValidJuz,
481
+ isValidRub,
482
+ isValidHizb,
483
+ isValidQuranPage,
484
+ isValidVerseKey
485
+ };
486
+ var utils_default = utils;
487
+
488
+ // src/sdk/v4/chapters.ts
489
+ var defaultOptions = {
490
+ language: "ar" /* ARABIC */
491
+ };
492
+ var findAll = async (options) => {
493
+ const params = mergeApiOptions(options, defaultOptions);
494
+ const { chapters: chapters2 } = await fetcher(
495
+ "/chapters",
496
+ params,
497
+ options == null ? void 0 : options.fetchFn
498
+ );
499
+ return chapters2;
500
+ };
501
+ var findById = async (id, options) => {
502
+ if (!utils_default.isValidChapterId(id))
503
+ throw new Error("Invalid chapter id");
504
+ const params = mergeApiOptions(options, defaultOptions);
505
+ const { chapter } = await fetcher(
506
+ `/chapters/${id}`,
507
+ params,
508
+ options == null ? void 0 : options.fetchFn
509
+ );
510
+ return chapter;
511
+ };
512
+ var findInfoById = async (id, options) => {
513
+ if (!utils_default.isValidChapterId(id))
514
+ throw new Error("Invalid chapter id");
515
+ const params = mergeApiOptions(options, defaultOptions);
516
+ const { chapterInfo } = await fetcher(
517
+ `/chapters/${id}/info`,
518
+ params,
519
+ options == null ? void 0 : options.fetchFn
520
+ );
521
+ return chapterInfo;
522
+ };
523
+ var chapters = {
524
+ findAll,
525
+ findById,
526
+ findInfoById
527
+ };
528
+ var chapters_default = chapters;
529
+
530
+ // src/sdk/v4/verses.ts
531
+ var import_humps2 = __toESM(require_humps());
532
+ var defaultOptions2 = {
533
+ language: "ar" /* ARABIC */,
534
+ perPage: 50,
535
+ words: false
536
+ };
537
+ var mergeVerseOptions = (options = {}) => {
538
+ const result = mergeApiOptions(options, defaultOptions2);
539
+ if (result.translations)
540
+ result.translations = result.translations.join(",");
541
+ if (result.tafsirs)
542
+ result.tafsirs = result.tafsirs.join(",");
543
+ if (result.wordFields) {
544
+ const wordFields = [];
545
+ Object.entries(result.wordFields).forEach(([key, value]) => {
546
+ if (value)
547
+ wordFields.push((0, import_humps2.decamelize)(key));
548
+ });
549
+ result.wordFields = wordFields.join(",");
550
+ }
551
+ if (result.translationFields) {
552
+ const translationFields = [];
553
+ Object.entries(result.translationFields).forEach(([key, value]) => {
554
+ if (value)
555
+ translationFields.push((0, import_humps2.decamelize)(key));
556
+ });
557
+ result.translationFields = translationFields.join(",");
558
+ }
559
+ if (result.reciter) {
560
+ result.audio = result.reciter;
561
+ result.reciter = void 0;
562
+ }
563
+ return result;
564
+ };
565
+ var findByKey = async (key, options) => {
566
+ if (!utils_default.isValidVerseKey(key))
567
+ throw new Error("Invalid verse key");
568
+ const params = mergeVerseOptions(options);
569
+ const url = `/verses/by_key/${key}`;
570
+ const { verse } = await fetcher(
571
+ url,
572
+ params,
573
+ options == null ? void 0 : options.fetchFn
574
+ );
575
+ return verse;
576
+ };
577
+ var findByChapter = async (id, options) => {
578
+ if (!utils_default.isValidChapterId(id))
579
+ throw new Error("Invalid chapter id");
580
+ const params = mergeVerseOptions(options);
581
+ const url = `/verses/by_chapter/${id}`;
582
+ const { verses: verses2 } = await fetcher(
583
+ url,
584
+ params,
585
+ options == null ? void 0 : options.fetchFn
586
+ );
587
+ return verses2;
588
+ };
589
+ var findByPage = async (page, options) => {
590
+ if (!utils_default.isValidQuranPage(page))
591
+ throw new Error("Invalid page");
592
+ const params = mergeVerseOptions(options);
593
+ const url = `/verses/by_page/${page}`;
594
+ const { verses: verses2 } = await fetcher(
595
+ url,
596
+ params,
597
+ options == null ? void 0 : options.fetchFn
598
+ );
599
+ return verses2;
600
+ };
601
+ var findByJuz = async (juz, options) => {
602
+ if (!utils_default.isValidJuz(juz))
603
+ throw new Error("Invalid juz");
604
+ const params = mergeVerseOptions(options);
605
+ const url = `/verses/by_juz/${juz}`;
606
+ const { verses: verses2 } = await fetcher(
607
+ url,
608
+ params,
609
+ options == null ? void 0 : options.fetchFn
610
+ );
611
+ return verses2;
612
+ };
613
+ var findByHizb = async (hizb, options) => {
614
+ if (!utils_default.isValidHizb(hizb))
615
+ throw new Error("Invalid hizb");
616
+ const params = mergeVerseOptions(options);
617
+ const url = `/verses/by_hizb/${hizb}`;
618
+ const { verses: verses2 } = await fetcher(
619
+ url,
620
+ params,
621
+ options == null ? void 0 : options.fetchFn
622
+ );
623
+ return verses2;
624
+ };
625
+ var findByRub = async (rub, options) => {
626
+ if (!utils_default.isValidRub(rub))
627
+ throw new Error("Invalid rub");
628
+ const params = mergeVerseOptions(options);
629
+ const { verses: verses2 } = await fetcher(
630
+ `/verses/by_rub/${rub}`,
631
+ params,
632
+ options == null ? void 0 : options.fetchFn
633
+ );
634
+ return verses2;
635
+ };
636
+ var findRandom = async (options) => {
637
+ const params = mergeVerseOptions(options);
638
+ const { verse } = await fetcher(
639
+ "/verses/random",
640
+ params,
641
+ options == null ? void 0 : options.fetchFn
642
+ );
643
+ return verse;
644
+ };
645
+ var verses = {
646
+ findByKey,
647
+ findByChapter,
648
+ findByPage,
649
+ findByJuz,
650
+ findByHizb,
651
+ findByRub,
652
+ findRandom
653
+ };
654
+ var verses_default = verses;
655
+
656
+ // src/sdk/v4/juzs.ts
657
+ var findAll2 = async (options) => {
658
+ const { juzs: juzs2 } = await fetcher(
659
+ "/juzs",
660
+ void 0,
661
+ options == null ? void 0 : options.fetchFn
662
+ );
663
+ return juzs2;
664
+ };
665
+ var juzs = { findAll: findAll2 };
666
+ var juzs_default = juzs;
667
+
668
+ // src/sdk/v4/audio.ts
669
+ var defaultChapterRecitationsOptions = {
670
+ language: "ar" /* ARABIC */
671
+ };
672
+ var defaultVerseRecitationsOptions = {
673
+ language: "ar" /* ARABIC */
674
+ };
675
+ var findAllChapterRecitations = async (reciterId, options) => {
676
+ const params = mergeApiOptions(options, defaultChapterRecitationsOptions);
677
+ const { audioFiles } = await fetcher(
678
+ `/chapter_recitations/${reciterId}`,
679
+ params,
680
+ options == null ? void 0 : options.fetchFn
681
+ );
682
+ return audioFiles;
683
+ };
684
+ var findChapterRecitationById = async (chapterId, reciterId, options) => {
685
+ if (!utils_default.isValidChapterId(chapterId))
686
+ throw new Error("Invalid chapter id");
687
+ const params = mergeApiOptions(options, defaultChapterRecitationsOptions);
688
+ const { audioFile } = await fetcher(
689
+ `/chapter_recitations/${reciterId}/${chapterId}`,
690
+ params,
691
+ options == null ? void 0 : options.fetchFn
692
+ );
693
+ return audioFile;
694
+ };
695
+ var findVerseRecitationsByChapter = async (chapterId, recitationId, options) => {
696
+ if (!utils_default.isValidChapterId(chapterId))
697
+ throw new Error("Invalid chapter id");
698
+ const params = mergeApiOptions(options, defaultVerseRecitationsOptions);
699
+ const data = await fetcher(
700
+ `/recitations/${recitationId}/by_chapter/${chapterId}`,
701
+ params,
702
+ options == null ? void 0 : options.fetchFn
703
+ );
704
+ return data;
705
+ };
706
+ var findVerseRecitationsByJuz = async (juz, recitationId, options) => {
707
+ if (!utils_default.isValidJuz(juz))
708
+ throw new Error("Invalid juz");
709
+ const params = mergeApiOptions(options, defaultVerseRecitationsOptions);
710
+ const data = await fetcher(`/recitations/${recitationId}/by_juz/${juz}`, params, options == null ? void 0 : options.fetchFn);
711
+ return data;
712
+ };
713
+ var findVerseRecitationsByPage = async (page, recitationId, options) => {
714
+ if (!utils_default.isValidQuranPage(page))
715
+ throw new Error("Invalid page");
716
+ const params = mergeApiOptions(options, defaultVerseRecitationsOptions);
717
+ const data = await fetcher(`/recitations/${recitationId}/by_page/${page}`, params, options == null ? void 0 : options.fetchFn);
718
+ return data;
719
+ };
720
+ var findVerseRecitationsByRub = async (rub, recitationId, options) => {
721
+ if (!utils_default.isValidRub(rub))
722
+ throw new Error("Invalid rub");
723
+ const params = mergeApiOptions(options, defaultVerseRecitationsOptions);
724
+ const data = await fetcher(`/recitations/${recitationId}/by_rub/${rub}`, params, options == null ? void 0 : options.fetchFn);
725
+ return data;
726
+ };
727
+ var findVerseRecitationsByHizb = async (hizb, recitationId, options) => {
728
+ if (!utils_default.isValidHizb(hizb))
729
+ throw new Error("Invalid hizb");
730
+ const params = mergeApiOptions(options, defaultVerseRecitationsOptions);
731
+ const data = await fetcher(`/recitations/${recitationId}/by_hizb/${hizb}`, params, options == null ? void 0 : options.fetchFn);
732
+ return data;
733
+ };
734
+ var findVerseRecitationsByKey = async (key, recitationId, options) => {
735
+ if (!utils_default.isValidVerseKey(key))
736
+ throw new Error("Invalid verse key");
737
+ const params = mergeApiOptions(options, defaultVerseRecitationsOptions);
738
+ const data = await fetcher(`/recitations/${recitationId}/by_ayah/${key}`, params, options == null ? void 0 : options.fetchFn);
739
+ return data;
740
+ };
741
+ var audio = {
742
+ findAllChapterRecitations,
743
+ findChapterRecitationById,
744
+ findVerseRecitationsByChapter,
745
+ findVerseRecitationsByJuz,
746
+ findVerseRecitationsByPage,
747
+ findVerseRecitationsByRub,
748
+ findVerseRecitationsByHizb,
749
+ findVerseRecitationsByKey
750
+ };
751
+ var audio_default = audio;
752
+
753
+ // src/sdk/v4/resources.ts
754
+ var defaultOptions3 = {
755
+ language: "ar" /* ARABIC */
756
+ };
757
+ var findAllRecitations = async (options) => {
758
+ const params = mergeApiOptions(options);
759
+ const { recitations } = await fetcher("/resources/recitations", params, options == null ? void 0 : options.fetchFn);
760
+ return recitations;
761
+ };
762
+ var findRecitationInfo = async (id, options) => {
763
+ const params = mergeApiOptions(options, defaultOptions3);
764
+ const { info } = await fetcher(`/resources/recitations/${id}/info`, params, options == null ? void 0 : options.fetchFn);
765
+ return info;
766
+ };
767
+ var findAllTranslations = async (options) => {
768
+ const params = mergeApiOptions(options, defaultOptions3);
769
+ const { translations } = await fetcher("/resources/translations", params, options == null ? void 0 : options.fetchFn);
770
+ return translations;
771
+ };
772
+ var findTranslationInfo = async (id, options) => {
773
+ const params = mergeApiOptions(options, defaultOptions3);
774
+ const { info } = await fetcher(`/resources/translations/${id}/info`, params, options == null ? void 0 : options.fetchFn);
775
+ return info;
776
+ };
777
+ var findAllTafsirs = async (options) => {
778
+ const params = mergeApiOptions(options, defaultOptions3);
779
+ const { tafsirs } = await fetcher("/resources/tafsirs", params, options == null ? void 0 : options.fetchFn);
780
+ return tafsirs;
781
+ };
782
+ var findTafsirInfo = async (id, options) => {
783
+ const params = mergeApiOptions(options, defaultOptions3);
784
+ const { info } = await fetcher(`/resources/tafsirs/${id}/info`, params, options == null ? void 0 : options.fetchFn);
785
+ return info;
786
+ };
787
+ var findAllRecitationStyles = async (options) => {
788
+ const { recitationStyles } = await fetcher("/resources/recitation_styles", void 0, options == null ? void 0 : options.fetchFn);
789
+ return recitationStyles;
790
+ };
791
+ var findAllLanguages = async (options) => {
792
+ const params = mergeApiOptions(options, defaultOptions3);
793
+ const { languages } = await fetcher("/resources/languages", params, options == null ? void 0 : options.fetchFn);
794
+ return languages;
795
+ };
796
+ var findAllChapterInfos = async (options) => {
797
+ const params = mergeApiOptions(options, defaultOptions3);
798
+ const { chapterInfos } = await fetcher("/resources/chapter_infos", params, options == null ? void 0 : options.fetchFn);
799
+ return chapterInfos;
800
+ };
801
+ var findVerseMedia = async (options) => {
802
+ const params = mergeApiOptions(options, defaultOptions3);
803
+ const { verseMedia } = await fetcher(`/resources/verse_media`, params, options == null ? void 0 : options.fetchFn);
804
+ return verseMedia;
805
+ };
806
+ var findAllChapterReciters = async (options) => {
807
+ const params = mergeApiOptions(options, defaultOptions3);
808
+ const { reciters } = await fetcher(`/resources/chapter_reciters`, params, options == null ? void 0 : options.fetchFn);
809
+ return reciters;
810
+ };
811
+ var resources = {
812
+ findAllRecitations,
813
+ findAllTranslations,
814
+ findAllTafsirs,
815
+ findAllRecitationStyles,
816
+ findAllLanguages,
817
+ findVerseMedia,
818
+ findAllChapterReciters,
819
+ findAllChapterInfos,
820
+ findRecitationInfo,
821
+ findTranslationInfo,
822
+ findTafsirInfo
823
+ };
824
+ var resources_default = resources;
825
+
826
+ // src/sdk/v4/search.ts
827
+ var defaultSearchOptions = {
828
+ language: "ar" /* ARABIC */,
829
+ size: 30
830
+ };
831
+ var search = async (q, options) => {
832
+ const params = mergeApiOptions({ q, ...options }, defaultSearchOptions);
833
+ const { search: search2 } = await fetcher(
834
+ "/search",
835
+ params,
836
+ options == null ? void 0 : options.fetchFn
837
+ );
838
+ return search2;
839
+ };
840
+ var searchApi = { search };
841
+ var search_default = searchApi;
842
+
843
+ // src/sdk/v4/index.ts
844
+ var v4 = {
845
+ chapters: chapters_default,
846
+ verses: verses_default,
847
+ juzs: juzs_default,
848
+ audio: audio_default,
849
+ resources: resources_default,
850
+ search: search_default
851
+ };
852
+ var v4_default = v4;
853
+
854
+ // src/sdk/index.ts
855
+ var quran = {
856
+ v4: v4_default,
857
+ utils: utils_default
858
+ };
859
+ var sdk_default = quran;
860
+
861
+ }));
862
+
863
+
864
+
865
+ if (typeof module.exports == "object" && typeof exports == "object") {
866
+ var __cp = (to, from, except, desc) => {
867
+ if ((from && typeof from === "object") || typeof from === "function") {
868
+ for (let key of Object.getOwnPropertyNames(from)) {
869
+ if (!Object.prototype.hasOwnProperty.call(to, key) && key !== except)
870
+ Object.defineProperty(to, key, {
871
+ get: () => from[key],
872
+ enumerable: !(desc = Object.getOwnPropertyDescriptor(from, key)) || desc.enumerable,
873
+ });
874
+ }
875
+ }
876
+ return to;
877
+ };
878
+ module.exports = __cp(module.exports, exports);
879
+ }
880
+ return module.exports;
881
+ }))
882
+
883
+
884
+
885
+
886
+ //# sourceMappingURL=index.umd.js.map