@quranjs/api 1.6.0 → 1.7.1

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 (63) hide show
  1. package/dist/index.d.ts +553 -2
  2. package/dist/index.js +11 -6
  3. package/dist/index.js.map +1 -0
  4. package/dist/index.mjs +6 -0
  5. package/dist/index.mjs.map +1 -0
  6. package/package.json +24 -21
  7. package/src/sdk/utils.ts +18 -9
  8. package/src/sdk/v4/_fetcher.ts +63 -8
  9. package/src/sdk/v4/audio.ts +30 -50
  10. package/src/sdk/v4/chapters.ts +12 -15
  11. package/src/sdk/v4/juzs.ts +7 -2
  12. package/src/sdk/v4/resources.ts +27 -31
  13. package/src/sdk/v4/search.ts +14 -13
  14. package/src/sdk/v4/verses.ts +72 -50
  15. package/src/types/BaseApiOptions.ts +6 -0
  16. package/src/types/FetchFn.ts +1 -0
  17. package/src/types/index.ts +2 -0
  18. package/dist/api.cjs.development.js +0 -2754
  19. package/dist/api.cjs.development.js.map +0 -1
  20. package/dist/api.cjs.production.min.js +0 -2
  21. package/dist/api.cjs.production.min.js.map +0 -1
  22. package/dist/api.esm.js +0 -2746
  23. package/dist/api.esm.js.map +0 -1
  24. package/dist/sdk/index.d.ts +0 -195
  25. package/dist/sdk/utils.d.ts +0 -125
  26. package/dist/sdk/v4/_fetcher.d.ts +0 -3
  27. package/dist/sdk/v4/audio.d.ts +0 -52
  28. package/dist/sdk/v4/chapters.d.ts +0 -13
  29. package/dist/sdk/v4/index.d.ts +0 -185
  30. package/dist/sdk/v4/juzs.d.ts +0 -5
  31. package/dist/sdk/v4/resources.d.ts +0 -26
  32. package/dist/sdk/v4/search.d.ts +0 -22
  33. package/dist/sdk/v4/verses.d.ts +0 -76
  34. package/dist/types/ChapterId.d.ts +0 -4
  35. package/dist/types/HizbNumber.d.ts +0 -4
  36. package/dist/types/JuzNumber.d.ts +0 -4
  37. package/dist/types/PageNumber.d.ts +0 -4
  38. package/dist/types/RubNumber.d.ts +0 -4
  39. package/dist/types/VerseKey.d.ts +0 -2
  40. package/dist/types/api/ApiResponses.d.ts +0 -18
  41. package/dist/types/api/AudioData.d.ts +0 -17
  42. package/dist/types/api/AudioResponse.d.ts +0 -8
  43. package/dist/types/api/Chapter.d.ts +0 -14
  44. package/dist/types/api/ChapterInfo.d.ts +0 -8
  45. package/dist/types/api/Footnote.d.ts +0 -6
  46. package/dist/types/api/Juz.d.ts +0 -8
  47. package/dist/types/api/Pagination.d.ts +0 -7
  48. package/dist/types/api/Reciter.d.ts +0 -21
  49. package/dist/types/api/Resources.d.ts +0 -70
  50. package/dist/types/api/Segment.d.ts +0 -4
  51. package/dist/types/api/Tafsir.d.ts +0 -7
  52. package/dist/types/api/TafsirInfo.d.ts +0 -9
  53. package/dist/types/api/TranslatedName.d.ts +0 -4
  54. package/dist/types/api/Translation.d.ts +0 -17
  55. package/dist/types/api/Transliteration.d.ts +0 -4
  56. package/dist/types/api/Verse.d.ts +0 -32
  57. package/dist/types/api/Word.d.ts +0 -28
  58. package/dist/types/api/index.d.ts +0 -18
  59. package/dist/types/index.d.ts +0 -88
  60. package/dist/types/utils.d.ts +0 -5
  61. package/dist/utils/misc.d.ts +0 -1
  62. package/dist/utils/qs-stringify.d.ts +0 -21
  63. package/src/utils/qs-stringify.ts +0 -81
package/dist/index.d.ts CHANGED
@@ -1,2 +1,553 @@
1
- export { default as quran } from './sdk';
2
- export * from './types';
1
+ declare type _NumbersFrom0ToN<Nr extends number> = Nr extends Nr ? number extends Nr ? number : Nr extends 0 ? never : _NumbersFrom0ToNRec<Nr, [], 0> : never;
2
+ declare type _NumbersFrom0ToNRec<Nr extends number, Counter extends any[], Accumulator extends number> = Counter['length'] extends Nr ? Accumulator : _NumbersFrom0ToNRec<Nr, [any, ...Counter], Accumulator | Counter['length']>;
3
+ declare type NumberRange<Start extends number, End extends number> = Exclude<_NumbersFrom0ToN<End>, _NumbersFrom0ToN<Start>>;
4
+ declare type NumberUnionToString<TType> = TType extends number ? `${TType}` : TType;
5
+
6
+ declare type VerseKey = `1:${NumberRange<1, 8>}` | `2:${NumberRange<1, 287>}` | `3:${NumberRange<1, 201>}` | `4:${NumberRange<1, 177>}` | `5:${NumberRange<1, 121>}` | `6:${NumberRange<1, 166>}` | `7:${NumberRange<1, 207>}` | `8:${NumberRange<1, 76>}` | `9:${NumberRange<1, 130>}` | `10:${NumberRange<1, 110>}` | `11:${NumberRange<1, 124>}` | `12:${NumberRange<1, 112>}` | `13:${NumberRange<1, 44>}` | `14:${NumberRange<1, 53>}` | `15:${NumberRange<1, 100>}` | `16:${NumberRange<1, 129>}` | `17:${NumberRange<1, 112>}` | `18:${NumberRange<1, 111>}` | `19:${NumberRange<1, 99>}` | `20:${NumberRange<1, 136>}` | `21:${NumberRange<1, 113>}` | `22:${NumberRange<1, 79>}` | `23:${NumberRange<1, 119>}` | `24:${NumberRange<1, 65>}` | `25:${NumberRange<1, 78>}` | `26:${NumberRange<1, 228>}` | `27:${NumberRange<1, 94>}` | `28:${NumberRange<1, 89>}` | `29:${NumberRange<1, 70>}` | `30:${NumberRange<1, 61>}` | `31:${NumberRange<1, 35>}` | `32:${NumberRange<1, 31>}` | `33:${NumberRange<1, 74>}` | `34:${NumberRange<1, 55>}` | `35:${NumberRange<1, 46>}` | `36:${NumberRange<1, 84>}` | `37:${NumberRange<1, 183>}` | `38:${NumberRange<1, 89>}` | `39:${NumberRange<1, 76>}` | `40:${NumberRange<1, 86>}` | `41:${NumberRange<1, 55>}` | `42:${NumberRange<1, 54>}` | `43:${NumberRange<1, 90>}` | `44:${NumberRange<1, 60>}` | `45:${NumberRange<1, 38>}` | `46:${NumberRange<1, 36>}` | `47:${NumberRange<1, 39>}` | `48:${NumberRange<1, 30>}` | `49:${NumberRange<1, 19>}` | `50:${NumberRange<1, 46>}` | `51:${NumberRange<1, 61>}` | `52:${NumberRange<1, 50>}` | `53:${NumberRange<1, 63>}` | `54:${NumberRange<1, 56>}` | `55:${NumberRange<1, 79>}` | `56:${NumberRange<1, 97>}` | `57:${NumberRange<1, 30>}` | `58:${NumberRange<1, 23>}` | `59:${NumberRange<1, 25>}` | `60:${NumberRange<1, 14>}` | `61:${NumberRange<1, 15>}` | `62:${NumberRange<1, 12>}` | `63:${NumberRange<1, 12>}` | `64:${NumberRange<1, 19>}` | `65:${NumberRange<1, 13>}` | `66:${NumberRange<1, 13>}` | `67:${NumberRange<1, 31>}` | `68:${NumberRange<1, 53>}` | `69:${NumberRange<1, 53>}` | `70:${NumberRange<1, 45>}` | `71:${NumberRange<1, 29>}` | `72:${NumberRange<1, 29>}` | `73:${NumberRange<1, 21>}` | `74:${NumberRange<1, 57>}` | `75:${NumberRange<1, 41>}` | `76:${NumberRange<1, 32>}` | `77:${NumberRange<1, 51>}` | `78:${NumberRange<1, 41>}` | `79:${NumberRange<1, 47>}` | `80:${NumberRange<1, 43>}` | `81:${NumberRange<1, 30>}` | `82:${NumberRange<1, 20>}` | `83:${NumberRange<1, 37>}` | `84:${NumberRange<1, 26>}` | `85:${NumberRange<1, 23>}` | `86:${NumberRange<1, 18>}` | `87:${NumberRange<1, 20>}` | `88:${NumberRange<1, 27>}` | `89:${NumberRange<1, 31>}` | `90:${NumberRange<1, 21>}` | `91:${NumberRange<1, 16>}` | `92:${NumberRange<1, 22>}` | `93:${NumberRange<1, 12>}` | `94:${NumberRange<1, 9>}` | `95:${NumberRange<1, 9>}` | `96:${NumberRange<1, 20>}` | `97:${NumberRange<1, 6>}` | `98:${NumberRange<1, 9>}` | `99:${NumberRange<1, 9>}` | `100:${NumberRange<1, 12>}` | `101:${NumberRange<1, 12>}` | `102:${NumberRange<1, 9>}` | `103:${NumberRange<1, 4>}` | `104:${NumberRange<1, 10>}` | `105:${NumberRange<1, 6>}` | `106:${NumberRange<1, 5>}` | `107:${NumberRange<1, 8>}` | `108:${NumberRange<1, 4>}` | `109:${NumberRange<1, 7>}` | `110:${NumberRange<1, 4>}` | `111:${NumberRange<1, 6>}` | `112:${NumberRange<1, 5>}` | `113:${NumberRange<1, 6>}` | `114:${NumberRange<1, 7>}`;
7
+
8
+ declare type _ChapterId = NumberRange<1, 115>;
9
+ declare type ChapterId = _ChapterId | NumberUnionToString<_ChapterId>;
10
+
11
+ declare type _HizbNumber = NumberRange<1, 61>;
12
+ declare type HizbNumber = _HizbNumber | NumberUnionToString<_HizbNumber>;
13
+
14
+ declare type _JuzNumber = NumberRange<1, 31>;
15
+ declare type JuzNumber = _JuzNumber | NumberUnionToString<_JuzNumber>;
16
+
17
+ declare type _PageNumber = NumberRange<1, 605>;
18
+ declare type PageNumber = _PageNumber | NumberUnionToString<_PageNumber>;
19
+
20
+ declare type _RubNumber = NumberRange<1, 241>;
21
+ declare type RubNumber = _RubNumber | NumberUnionToString<_RubNumber>;
22
+
23
+ interface Translation {
24
+ id?: number;
25
+ text: string;
26
+ resourceId: number;
27
+ resourceName?: string;
28
+ verseId?: number;
29
+ languageId?: number;
30
+ languageName?: string;
31
+ verseKey?: VerseKey;
32
+ chapterId?: number;
33
+ verseNumber?: number;
34
+ juzNumber?: number;
35
+ hizbNumber?: number;
36
+ rubNumber?: number;
37
+ pageNumber?: number;
38
+ }
39
+
40
+ interface Transliteration {
41
+ languageName?: string;
42
+ text?: string;
43
+ }
44
+
45
+ declare enum CharType {
46
+ Word = "word",
47
+ End = "end",
48
+ Pause = "pause",
49
+ Sajdah = "sajdah",
50
+ RubElHizb = "rub-el-hizb"
51
+ }
52
+ interface Word {
53
+ id?: number;
54
+ position: number;
55
+ audioUrl: string;
56
+ charTypeName: CharType;
57
+ codeV1?: string;
58
+ codeV2?: string;
59
+ pageNumber?: number;
60
+ lineNumber?: number;
61
+ text?: string;
62
+ textUthmani?: string;
63
+ textIndopak?: string;
64
+ textImlaei?: string;
65
+ translation: Translation;
66
+ transliteration: Transliteration;
67
+ location?: string;
68
+ verseKey?: VerseKey;
69
+ }
70
+
71
+ interface SearchResponse {
72
+ search: {
73
+ query: string;
74
+ totalResults: number;
75
+ currentPage: number;
76
+ totalPages: number;
77
+ results?: {
78
+ verseKey: string;
79
+ verse_id: number;
80
+ text: string;
81
+ highlighted: string;
82
+ words: Word[];
83
+ translations: Translation[];
84
+ }[];
85
+ };
86
+ }
87
+
88
+ /**
89
+ * Segment structure is [wordFrom, wordTo, timeFrom, timeTo] time is in ms
90
+ */
91
+ declare type Segment = [number, number, number, number];
92
+
93
+ interface ChapterRecitation {
94
+ id: number;
95
+ chapterId: number;
96
+ fileSize: number;
97
+ format: string;
98
+ audioUrl: string;
99
+ }
100
+ interface VerseRecitation {
101
+ verseKey: VerseKey;
102
+ url: string;
103
+ id?: number;
104
+ chapterId?: number;
105
+ segments?: Segment[];
106
+ format?: string;
107
+ }
108
+
109
+ interface AudioResponse {
110
+ url?: string;
111
+ duration?: number;
112
+ format?: string;
113
+ verseKey: string;
114
+ segments?: Segment[];
115
+ }
116
+
117
+ interface TranslatedName {
118
+ name: string;
119
+ languageName: string;
120
+ }
121
+
122
+ interface Chapter {
123
+ id: number;
124
+ versesCount: number;
125
+ bismillahPre: boolean;
126
+ revelationOrder: number;
127
+ revelationPlace: string;
128
+ pages: Array<number>;
129
+ nameComplex: string;
130
+ nameSimple: string;
131
+ transliteratedName: string;
132
+ nameArabic: string;
133
+ translatedName: TranslatedName;
134
+ }
135
+
136
+ interface ChapterInfo {
137
+ id: number;
138
+ chapterId: number;
139
+ text: string;
140
+ shortText: string;
141
+ source: string;
142
+ languageName?: string;
143
+ }
144
+
145
+ interface Footnote {
146
+ id: number | string;
147
+ text: string;
148
+ languageName?: string;
149
+ languageId?: number;
150
+ }
151
+
152
+ interface Reciter {
153
+ id: number;
154
+ name: string;
155
+ recitationStyle: string;
156
+ relativePath: string;
157
+ profilePicture?: string;
158
+ coverImage?: string;
159
+ bio?: string;
160
+ qirat?: {
161
+ languageName: string;
162
+ name: string;
163
+ };
164
+ style?: {
165
+ languageName: string;
166
+ name: string;
167
+ };
168
+ translatedName?: {
169
+ languageName: string;
170
+ name: string;
171
+ };
172
+ }
173
+
174
+ interface Tafsir {
175
+ id?: number;
176
+ resourceId?: number;
177
+ text?: string;
178
+ resourceName?: string;
179
+ languageName?: string;
180
+ }
181
+
182
+ interface TafsirInfo {
183
+ id?: number;
184
+ name?: string;
185
+ authorName?: string;
186
+ slug?: string;
187
+ languageName?: string;
188
+ translatedName: TranslatedName;
189
+ }
190
+
191
+ interface Verse {
192
+ id: number;
193
+ verseNumber: number;
194
+ verseKey: VerseKey;
195
+ chapterId?: number | string;
196
+ pageNumber: number;
197
+ juzNumber: number;
198
+ hizbNumber: number;
199
+ rubElHizbNumber: number;
200
+ words?: Word[];
201
+ textUthmani?: string;
202
+ textUthmaniSimple?: string;
203
+ textUthmaniTajweed?: string;
204
+ textImlaei?: string;
205
+ textImlaeiSimple?: string;
206
+ textIndopak?: string;
207
+ sajdahNumber: null;
208
+ imageUrl?: string;
209
+ imageWidth?: number;
210
+ v1Page?: number;
211
+ v2Page?: number;
212
+ codeV1?: string;
213
+ codeV2?: string;
214
+ translations?: Translation[];
215
+ tafsirs?: Tafsir[];
216
+ audio?: AudioResponse;
217
+ }
218
+
219
+ interface Juz {
220
+ id: number;
221
+ juzNumber: number;
222
+ verseMapping: Record<number, string>;
223
+ firstVerseId: number;
224
+ lastVerseId: number;
225
+ versesCount: number;
226
+ }
227
+
228
+ interface Pagination {
229
+ perPage: number;
230
+ currentPage: number;
231
+ nextPage: number;
232
+ totalPages: number;
233
+ totalRecords: number;
234
+ }
235
+
236
+ interface RecitationResource {
237
+ id?: number;
238
+ reciterName?: string;
239
+ style?: string;
240
+ translatedName?: TranslatedName;
241
+ }
242
+ interface RecitationInfoResource {
243
+ id?: number;
244
+ info?: string;
245
+ }
246
+ interface TranslationResource {
247
+ id?: number;
248
+ name?: string;
249
+ authorName?: string;
250
+ slug?: string;
251
+ languageName?: string;
252
+ translatedName?: TranslatedName;
253
+ }
254
+ interface TranslationInfoResource {
255
+ id?: number;
256
+ info?: string;
257
+ }
258
+ interface TafsirResource {
259
+ id?: number;
260
+ name?: string;
261
+ authorName?: string;
262
+ slug?: string;
263
+ languageName?: string;
264
+ translatedName?: TranslatedName;
265
+ }
266
+ interface TafsirInfoResource {
267
+ id?: number;
268
+ info?: string;
269
+ }
270
+ interface RecitationStylesResource {
271
+ mujawwad: string;
272
+ murattal: string;
273
+ muallim: string;
274
+ }
275
+ interface LanguageResource {
276
+ id?: number;
277
+ name?: string;
278
+ nativeName?: string;
279
+ isoCode?: string;
280
+ direction?: string;
281
+ translatedNames?: TranslatedName[];
282
+ }
283
+ interface ChapterInfoResource {
284
+ id?: number;
285
+ name?: string;
286
+ authorName?: string;
287
+ slug?: string;
288
+ languageName?: string;
289
+ translatedName?: TranslatedName;
290
+ }
291
+ interface VerseMediaResource {
292
+ id?: number;
293
+ name?: string;
294
+ authorName?: string;
295
+ languageName?: string;
296
+ }
297
+ interface ChapterReciterResource {
298
+ id: number;
299
+ name: string;
300
+ arabicName?: string;
301
+ relativePath?: string;
302
+ format?: string;
303
+ filesSize?: number;
304
+ }
305
+
306
+ declare type FetchFn = (url: string) => Promise<Record<string, unknown>>;
307
+
308
+ declare enum Language {
309
+ ARABIC = "ar",
310
+ ENGLISH = "en",
311
+ URDU = "ur",
312
+ BENGALI = "bn",
313
+ TURKISH = "tr",
314
+ SPANISH = "es",
315
+ GERMAN = "de",
316
+ BOSNIAN = "bs",
317
+ RUSSIAN = "ru",
318
+ ALBANIAN_AL = "al",
319
+ FRENCH = "fr",
320
+ DUTCH = "nl",
321
+ TAMIL = "ta",
322
+ TAJIK = "tg",
323
+ INDONESIAN = "id",
324
+ UZBEK = "uz",
325
+ VIETNAMESE = "vi",
326
+ CHINESE = "zh",
327
+ ITALIAN = "it",
328
+ JAPANESE = "ja",
329
+ MALAYALAM = "ml",
330
+ AMHARIC = "am",
331
+ KAZAKH = "kk",
332
+ PORTUGUESE = "pt",
333
+ TAGALOG = "tl",
334
+ THAI = "th",
335
+ KOREAN = "ko",
336
+ HINDI = "hi",
337
+ KURDISH = "ku",
338
+ HAUSA = "ha",
339
+ AZERI = "az",
340
+ SWAHILI = "sw",
341
+ PERSIAN = "fa",
342
+ SERBIAN = "sr",
343
+ MARANAO = "mrn",
344
+ AMAZIGH = "zgh",
345
+ ASSAMESE = "as",
346
+ BULGARIAN = "bg",
347
+ CHECHEN = "ce",
348
+ CZECH = "cs",
349
+ DIVEHI = "dv",
350
+ DHIVEHI = "dv",
351
+ MALDIVIAN = "dv",
352
+ FINNISH = "fi",
353
+ GUJAARATI = "gu",
354
+ HEBREW = "he",
355
+ GEORGIAN = "ka",
356
+ CENTRAL_KHMER = "km",
357
+ GANDA = "lg",
358
+ MARATHI = "mr",
359
+ YORUBA = "yo",
360
+ MALAY = "ms",
361
+ NEPALI = "ne",
362
+ SWEDISH = "sv",
363
+ TELUGU = "te",
364
+ TATAR = "tt",
365
+ UIGHUR = "ug",
366
+ UYGHUR = "ug",
367
+ UKRAINIAN = "uk",
368
+ NORWEGIAN = "no",
369
+ OROMO = "om",
370
+ POLISH = "pl",
371
+ PASHTO = "ps",
372
+ ROMANIAN = "ro",
373
+ SINDHI = "sd",
374
+ NORTHERN_SAMI = "se",
375
+ SINHALA = "si",
376
+ SINHALESE = "si",
377
+ SOMALI = "so",
378
+ ALBANIAN_SQ = "sq"
379
+ }
380
+ declare enum QuranFont {
381
+ MadaniV1 = "code_v1",
382
+ MadaniV2 = "code_v2",
383
+ Uthmani = "text_uthmani"
384
+ }
385
+ declare type VerseField = 'chapterId' | 'textUthmani' | 'textUthmaniSimple' | 'textImlaei' | 'textImlaeiSimple' | 'textIndopak' | 'textUthmaniTajweed' | 'imageUrl' | 'imageWidth' | 'codeV1' | 'codeV2' | 'v1Page' | 'v2Page';
386
+ declare type WordField = 'v1Page' | 'v2Page' | 'textUthmani' | 'textImlaei' | 'textIndopak' | 'verseKey' | 'location' | 'codeV1' | 'codeV2';
387
+ declare type TranslationField = 'resourceName' | 'verseId' | 'languageId' | 'languageName' | 'verseKey' | 'chapterId' | 'verseNumber' | 'juzNumber' | 'hizbNumber' | 'rubNumber' | 'pageNumber';
388
+ declare type VerseRecitationField = 'id' | 'chapterId' | 'segments' | 'format';
389
+
390
+ interface BaseApiOptions {
391
+ language: Language;
392
+ fetchFn?: FetchFn;
393
+ }
394
+
395
+ declare const quran: {
396
+ v4: {
397
+ chapters: {
398
+ findAll: (options?: Partial<BaseApiOptions> | undefined) => Promise<Chapter[]>;
399
+ findById: (id: ChapterId, options?: Partial<BaseApiOptions> | undefined) => Promise<Chapter>;
400
+ findInfoById: (id: ChapterId, options?: Partial<BaseApiOptions> | undefined) => Promise<ChapterInfo>;
401
+ };
402
+ verses: {
403
+ findByKey: (key: VerseKey, options?: Partial<BaseApiOptions & {
404
+ reciter: string | number;
405
+ words: boolean;
406
+ translations: number[] | string[];
407
+ tafsirs: number[] | string[];
408
+ wordFields: Partial<Record<WordField, boolean>>;
409
+ translationFields: Partial<Record<TranslationField, boolean>>;
410
+ fields: Partial<Record<VerseField, boolean>>;
411
+ page: number;
412
+ perPage: number;
413
+ }> | undefined) => Promise<Verse>;
414
+ findByChapter: (id: ChapterId, options?: Partial<BaseApiOptions & {
415
+ reciter: string | number;
416
+ words: boolean;
417
+ translations: number[] | string[];
418
+ tafsirs: number[] | string[];
419
+ wordFields: Partial<Record<WordField, boolean>>;
420
+ translationFields: Partial<Record<TranslationField, boolean>>;
421
+ fields: Partial<Record<VerseField, boolean>>;
422
+ page: number;
423
+ perPage: number;
424
+ }> | undefined) => Promise<Verse[]>;
425
+ findByPage: (page: PageNumber, options?: Partial<BaseApiOptions & {
426
+ reciter: string | number;
427
+ words: boolean;
428
+ translations: number[] | string[];
429
+ tafsirs: number[] | string[];
430
+ wordFields: Partial<Record<WordField, boolean>>;
431
+ translationFields: Partial<Record<TranslationField, boolean>>;
432
+ fields: Partial<Record<VerseField, boolean>>;
433
+ page: number;
434
+ perPage: number;
435
+ }> | undefined) => Promise<Verse[]>;
436
+ findByJuz: (juz: JuzNumber, options?: Partial<BaseApiOptions & {
437
+ reciter: string | number;
438
+ words: boolean;
439
+ translations: number[] | string[];
440
+ tafsirs: number[] | string[];
441
+ wordFields: Partial<Record<WordField, boolean>>;
442
+ translationFields: Partial<Record<TranslationField, boolean>>;
443
+ fields: Partial<Record<VerseField, boolean>>;
444
+ page: number;
445
+ perPage: number;
446
+ }> | undefined) => Promise<Verse[]>;
447
+ findByHizb: (hizb: HizbNumber, options?: Partial<BaseApiOptions & {
448
+ reciter: string | number;
449
+ words: boolean;
450
+ translations: number[] | string[];
451
+ tafsirs: number[] | string[];
452
+ wordFields: Partial<Record<WordField, boolean>>;
453
+ translationFields: Partial<Record<TranslationField, boolean>>;
454
+ fields: Partial<Record<VerseField, boolean>>;
455
+ page: number;
456
+ perPage: number;
457
+ }> | undefined) => Promise<Verse[]>;
458
+ findRandom: (options?: Partial<BaseApiOptions & {
459
+ reciter: string | number;
460
+ words: boolean;
461
+ translations: number[] | string[];
462
+ tafsirs: number[] | string[];
463
+ wordFields: Partial<Record<WordField, boolean>>;
464
+ translationFields: Partial<Record<TranslationField, boolean>>;
465
+ fields: Partial<Record<VerseField, boolean>>;
466
+ page: number;
467
+ perPage: number;
468
+ }> | undefined) => Promise<Verse>;
469
+ };
470
+ juzs: {
471
+ findAll: (options?: Omit<BaseApiOptions, "language"> | undefined) => Promise<Juz[]>;
472
+ };
473
+ audio: {
474
+ findAllChapterRecitations: (reciterId: string, options?: Partial<BaseApiOptions> | undefined) => Promise<ChapterRecitation[]>;
475
+ findChapterRecitationById: (chapterId: ChapterId, reciterId: string, options?: Partial<BaseApiOptions> | undefined) => Promise<ChapterRecitation>;
476
+ findVerseRecitationsByChapter: (chapterId: ChapterId, recitationId: string, options?: Partial<BaseApiOptions & {
477
+ fields: Partial<Record<VerseRecitationField, boolean>>;
478
+ }> | undefined) => Promise<{
479
+ audioFiles: VerseRecitation[];
480
+ pagination: Pagination;
481
+ }>;
482
+ findVerseRecitationsByJuz: (juz: JuzNumber, recitationId: string, options?: Partial<BaseApiOptions & {
483
+ fields: Partial<Record<VerseRecitationField, boolean>>;
484
+ }> | undefined) => Promise<{
485
+ audioFiles: VerseRecitation[];
486
+ pagination: Pagination;
487
+ }>;
488
+ findVerseRecitationsByPage: (page: PageNumber, recitationId: string, options?: Partial<BaseApiOptions & {
489
+ fields: Partial<Record<VerseRecitationField, boolean>>;
490
+ }> | undefined) => Promise<{
491
+ audioFiles: VerseRecitation[];
492
+ pagination: Pagination;
493
+ }>;
494
+ findVerseRecitationsByRub: (rub: RubNumber, recitationId: string, options?: Partial<BaseApiOptions & {
495
+ fields: Partial<Record<VerseRecitationField, boolean>>;
496
+ }> | undefined) => Promise<{
497
+ audioFiles: VerseRecitation[];
498
+ pagination: Pagination;
499
+ }>;
500
+ findVerseRecitationsByHizb: (hizb: HizbNumber, recitationId: string, options?: Partial<BaseApiOptions & {
501
+ fields: Partial<Record<VerseRecitationField, boolean>>;
502
+ }> | undefined) => Promise<{
503
+ audioFiles: VerseRecitation[];
504
+ pagination: Pagination;
505
+ }>;
506
+ findVerseRecitationsByKey: (key: VerseKey, recitationId: string, options?: Partial<BaseApiOptions & {
507
+ fields: Partial<Record<VerseRecitationField, boolean>>;
508
+ }> | undefined) => Promise<{
509
+ audioFiles: VerseRecitation[];
510
+ pagination: Pagination;
511
+ }>;
512
+ };
513
+ resources: {
514
+ findAllRecitations: (options?: Partial<BaseApiOptions> | undefined) => Promise<RecitationResource[]>;
515
+ findAllTranslations: (options?: Partial<BaseApiOptions> | undefined) => Promise<TranslationResource[]>;
516
+ findAllTafsirs: (options?: Partial<BaseApiOptions> | undefined) => Promise<TafsirResource[]>;
517
+ findAllRecitationStyles: (options?: Omit<BaseApiOptions, "language"> | undefined) => Promise<RecitationStylesResource>;
518
+ findAllLanguages: (options?: Partial<BaseApiOptions> | undefined) => Promise<LanguageResource[]>;
519
+ findVerseMedia: (options?: Partial<BaseApiOptions> | undefined) => Promise<VerseMediaResource>;
520
+ findAllChapterReciters: (options?: Partial<BaseApiOptions> | undefined) => Promise<ChapterReciterResource[]>;
521
+ findAllChapterInfos: (options?: Partial<BaseApiOptions> | undefined) => Promise<ChapterInfoResource[]>;
522
+ };
523
+ search: {
524
+ search: (q: string, options?: Partial<BaseApiOptions & {
525
+ size: number;
526
+ page: number;
527
+ }> | undefined) => Promise<{
528
+ query: string;
529
+ totalResults: number;
530
+ currentPage: number;
531
+ totalPages: number;
532
+ results?: {
533
+ verseKey: string;
534
+ verse_id: number;
535
+ text: string;
536
+ highlighted: string;
537
+ words: Word[];
538
+ translations: Translation[];
539
+ }[] | undefined;
540
+ }>;
541
+ };
542
+ };
543
+ utils: {
544
+ isValidChapterId: (id: string | number) => id is ChapterId;
545
+ isValidJuz: (juz: string | number) => juz is JuzNumber;
546
+ isValidRub: (rub: string | number) => rub is RubNumber;
547
+ isValidHizb: (hizb: string | number) => hizb is HizbNumber;
548
+ isValidQuranPage: (page: string | number) => page is PageNumber;
549
+ isValidVerseKey: (key: string) => key is VerseKey;
550
+ };
551
+ };
552
+
553
+ export { AudioResponse, Chapter, ChapterId, ChapterInfo, ChapterInfoResource, ChapterRecitation, ChapterReciterResource, CharType, FetchFn, Footnote, HizbNumber, Juz, JuzNumber, Language, LanguageResource, PageNumber, Pagination, QuranFont, RecitationInfoResource, RecitationResource, RecitationStylesResource, Reciter, RubNumber, SearchResponse, Segment, Tafsir, TafsirInfo, TafsirInfoResource, TafsirResource, TranslatedName, Translation, TranslationField, TranslationInfoResource, TranslationResource, Transliteration, Verse, VerseField, VerseKey, VerseMediaResource, VerseRecitation, VerseRecitationField, Word, WordField, quran };
package/dist/index.js CHANGED
@@ -1,8 +1,13 @@
1
+ 'use strict';
1
2
 
2
- 'use strict'
3
+ Object.defineProperty(exports, '__esModule', { value: true });
3
4
 
4
- if (process.env.NODE_ENV === 'production') {
5
- module.exports = require('./api.cjs.production.min.js')
6
- } else {
7
- module.exports = require('./api.cjs.development.js')
8
- }
5
+ var humps = require('humps');
6
+
7
+ var C=(f=>(f.Word="word",f.End="end",f.Pause="pause",f.Sajdah="sajdah",f.RubElHizb="rub-el-hizb",f))(C||{});var m=(s=>(s.ARABIC="ar",s.ENGLISH="en",s.URDU="ur",s.BENGALI="bn",s.TURKISH="tr",s.SPANISH="es",s.GERMAN="de",s.BOSNIAN="bs",s.RUSSIAN="ru",s.ALBANIAN_AL="al",s.FRENCH="fr",s.DUTCH="nl",s.TAMIL="ta",s.TAJIK="tg",s.INDONESIAN="id",s.UZBEK="uz",s.VIETNAMESE="vi",s.CHINESE="zh",s.ITALIAN="it",s.JAPANESE="ja",s.MALAYALAM="ml",s.AMHARIC="am",s.KAZAKH="kk",s.PORTUGUESE="pt",s.TAGALOG="tl",s.THAI="th",s.KOREAN="ko",s.HINDI="hi",s.KURDISH="ku",s.HAUSA="ha",s.AZERI="az",s.SWAHILI="sw",s.PERSIAN="fa",s.SERBIAN="sr",s.MARANAO="mrn",s.AMAZIGH="zgh",s.ASSAMESE="as",s.BULGARIAN="bg",s.CHECHEN="ce",s.CZECH="cs",s.DIVEHI="dv",s.DHIVEHI="dv",s.MALDIVIAN="dv",s.FINNISH="fi",s.GUJAARATI="gu",s.HEBREW="he",s.GEORGIAN="ka",s.CENTRAL_KHMER="km",s.GANDA="lg",s.MARATHI="mr",s.YORUBA="yo",s.MALAY="ms",s.NEPALI="ne",s.SWEDISH="sv",s.TELUGU="te",s.TATAR="tt",s.UIGHUR="ug",s.UYGHUR="ug",s.UKRAINIAN="uk",s.NORWEGIAN="no",s.OROMO="om",s.POLISH="pl",s.PASHTO="ps",s.ROMANIAN="ro",s.SINDHI="sd",s.NORTHERN_SAMI="se",s.SINHALA="si",s.SINHALESE="si",s.SOMALI="so",s.ALBANIAN_SQ="sq",s))(m||{}),S=(i=>(i.MadaniV1="code_v1",i.MadaniV2="code_v2",i.Uthmani="text_uthmani",i))(S||{});var h=e=>e.startsWith("/")?e.slice(1):e;var z="https://api.quran.com/api/v4/",A=(e,r)=>{let t=`${z}${h(e)}`;if(!r)return t;let i=humps.decamelizeKeys(r),n=new URLSearchParams(Object.entries(i).filter(([,f])=>f!==void 0)).toString();return n?`${t}?${n}`:t},a=async(e,r={},t)=>{if(t){let f=await t(A(e,r));return humps.camelizeKeys(f)}if(typeof globalThis.fetch!="function")throw new Error("Looks like there is no global fetch function. Take a look at https://quranjs.com/techniques#custom-fetcher for more info.");let i=await globalThis.fetch(A(e,r));if(!i.ok||i.status>=400)throw new Error(`${i.status} ${i.statusText}`);let n=await i.json();return humps.camelizeKeys(n)},c=(e={},r={})=>{let t={...e};t.fetchFn&&(t.fetchFn=void 0);let i={...r,...t};if(i.fields){let n=[];Object.entries(i.fields).forEach(([f,E])=>{E&&n.push(humps.decamelize(f));}),i.fields=n.join(",");}return i};var H={1:7,2:286,3:200,4:176,5:120,6:165,7:206,8:75,9:129,10:109,11:123,12:111,13:43,14:52,15:99,16:128,17:111,18:110,19:98,20:135,21:112,22:78,23:118,24:64,25:77,26:227,27:93,28:88,29:69,30:60,31:34,32:30,33:73,34:54,35:45,36:83,37:182,38:88,39:75,40:85,41:54,42:53,43:89,44:59,45:37,46:35,47:38,48:29,49:18,50:45,51:60,52:49,53:62,54:55,55:78,56:96,57:29,58:22,59:24,60:13,61:14,62:11,63:11,64:18,65:12,66:12,67:30,68:52,69:52,70:44,71:28,72:28,73:20,74:56,75:40,76:31,77:50,78:40,79:46,80:42,81:29,82:19,83:36,84:25,85:22,86:17,87:19,88:26,89:30,90:20,91:15,92:21,93:11,94:8,95:8,96:19,97:5,98:8,99:8,100:11,101:11,102:8,103:3,104:9,105:5,106:4,107:7,108:3,109:6,110:3,111:5,112:4,113:5,114:6},I=e=>{let r=typeof e=="number"?e:Number(e);return !(!r||r<=0||r>114)},P=e=>{let r=typeof e=="number"?e:Number(e);return !(!r||r<=0||r>30)},T=e=>{let r=typeof e=="number"?e:Number(e);return !(!r||r<=0||r>240)},U=e=>{let r=typeof e=="number"?e:Number(e);return !(!r||r<=0||r>60)},K=e=>{let r=typeof e=="number"?e:Number(e);return !(!r||r<=0||r>604)},$=e=>{let[r,t]=e.trim().split(":");if(!r||!t||!I(r))return !1;let i=Number(t),n=H[r];return !(!i||i<=0||i>n)},j={isValidChapterId:I,isValidJuz:P,isValidRub:T,isValidHizb:U,isValidQuranPage:K,isValidVerseKey:$},o=j;var p={language:"ar"},M=async e=>{let r=c(e,p),{chapters:t}=await a("/chapters",r,e==null?void 0:e.fetchFn);return t},_=async(e,r)=>{if(!o.isValidChapterId(e))throw new Error("Invalid chapter id");let t=c(r,p),{chapter:i}=await a(`/chapters/${e}`,t,r==null?void 0:r.fetchFn);return i},k=async(e,r)=>{if(!o.isValidChapterId(e))throw new Error("Invalid chapter id");let t=c(r,p),{chapterInfo:i}=await a(`/chapters/${e}/info`,t,r==null?void 0:r.fetchFn);return i},J={findAll:M,findById:_,findInfoById:k},b=J;var D={language:"ar",perPage:50,words:!1},d=(e={})=>{let r=c(e,D);if(r.translations&&(r.translations=r.translations.join(",")),r.tafsirs&&(r.tafsirs=r.tafsirs.join(",")),r.wordFields){let t=[];Object.entries(r.wordFields).forEach(([i,n])=>{n&&t.push(humps.decamelize(i));}),r.wordFields=t.join(",");}if(r.translationFields){let t=[];Object.entries(r.translationFields).forEach(([i,n])=>{n&&t.push(humps.decamelize(i));}),r.translationFields=t.join(",");}return r.reciter&&(r.audio=r.reciter,r.reciter=void 0),r},W=async(e,r)=>{if(!o.isValidVerseKey(e))throw new Error("Invalid verse key");let t=d(r),i=`/verses/by_key/${e}`,{verse:n}=await a(i,t,r==null?void 0:r.fetchFn);return n},g=async(e,r)=>{if(!o.isValidChapterId(e))throw new Error("Invalid chapter id");let t=d(r),i=`/verses/by_chapter/${e}`,{verses:n}=await a(i,t,r==null?void 0:r.fetchFn);return n},q=async(e,r)=>{if(!o.isValidQuranPage(e))throw new Error("Invalid page");let t=d(r),i=`/verses/by_page/${e}`,{verses:n}=await a(i,t,r==null?void 0:r.fetchFn);return n},Z=async(e,r)=>{if(!o.isValidJuz(e))throw new Error("Invalid juz");let t=d(r),i=`/verses/by_juz/${e}`,{verses:n}=await a(i,t,r==null?void 0:r.fetchFn);return n},Y=async(e,r)=>{if(!o.isValidHizb(e))throw new Error("Invalid hizb");let t=d(r),i=`/verses/by_hizb/${e}`,{verses:n}=await a(i,t,r==null?void 0:r.fetchFn);return n},Q=async e=>{let r=d(e),{verse:t}=await a("/verses/random",r,e==null?void 0:e.fetchFn);return t},X={findByKey:W,findByChapter:g,findByPage:q,findByJuz:Z,findByHizb:Y,findRandom:Q},O=X;var L=async e=>{let{juzs:r}=await a("/juzs",void 0,e==null?void 0:e.fetchFn);return r},ee={findAll:L},V=ee;var N={language:"ar"},l={language:"ar"},re=async(e,r)=>{let t=c(r,N),{audioFiles:i}=await a(`/chapter_recitations/${e}`,t,r==null?void 0:r.fetchFn);return i},te=async(e,r,t)=>{if(!o.isValidChapterId(e))throw new Error("Invalid chapter id");let i=c(t,N),{audioFile:n}=await a(`/chapter_recitations/${r}/${e}`,i,t==null?void 0:t.fetchFn);return n},se=async(e,r,t)=>{if(!o.isValidChapterId(e))throw new Error("Invalid chapter id");let i=c(t,l);return await a(`/recitations/${r}/by_chapter/${e}`,i,t==null?void 0:t.fetchFn)},ie=async(e,r,t)=>{if(!o.isValidJuz(e))throw new Error("Invalid juz");let i=c(t,l);return await a(`/recitations/${r}/by_juz/${e}`,i,t==null?void 0:t.fetchFn)},ae=async(e,r,t)=>{if(!o.isValidQuranPage(e))throw new Error("Invalid page");let i=c(t,l);return await a(`/recitations/${r}/by_page/${e}`,i,t==null?void 0:t.fetchFn)},ne=async(e,r,t)=>{if(!o.isValidRub(e))throw new Error("Invalid rub");let i=c(t,l);return await a(`/recitations/${r}/by_rub/${e}`,i,t==null?void 0:t.fetchFn)},ce=async(e,r,t)=>{if(!o.isValidHizb(e))throw new Error("Invalid hizb");let i=c(t,l);return await a(`/recitations/${r}/by_hizb/${e}`,i,t==null?void 0:t.fetchFn)},oe=async(e,r,t)=>{if(!o.isValidVerseKey(e))throw new Error("Invalid verse key");let i=c(t,l);return await a(`/recitations/${r}/by_ayah/${e}`,i,t==null?void 0:t.fetchFn)},fe={findAllChapterRecitations:re,findChapterRecitationById:te,findVerseRecitationsByChapter:se,findVerseRecitationsByJuz:ie,findVerseRecitationsByPage:ae,findVerseRecitationsByRub:ne,findVerseRecitationsByHizb:ce,findVerseRecitationsByKey:oe},w=fe;var u={language:"ar"},me=async e=>{let r=c(e),{recitations:t}=await a("/resources/recitations",r,e==null?void 0:e.fetchFn);return t},de=async e=>{let r=c(e,u),{translations:t}=await a("/resources/translations",r,e==null?void 0:e.fetchFn);return t},le=async e=>{let r=c(e,u),{tafsirs:t}=await a("/resources/tafsirs",r,e==null?void 0:e.fetchFn);return t},ue=async e=>{let{recitationStyles:r}=await a("/resources/recitation_styles",void 0,e==null?void 0:e.fetchFn);return r},pe=async e=>{let r=c(e,u),{languages:t}=await a("/resources/languages",r,e==null?void 0:e.fetchFn);return t},he=async e=>{let r=c(e,u),{chapterInfos:t}=await a("/resources/chapter_infos",r,e==null?void 0:e.fetchFn);return t},Re=async e=>{let r=c(e,u),{verseMedia:t}=await a("/resources/verse_media",r,e==null?void 0:e.fetchFn);return t},Ae=async e=>{let r=c(e,u),{reciters:t}=await a("/resources/chapter_reciters",r,e==null?void 0:e.fetchFn);return t},Ie={findAllRecitations:me,findAllTranslations:de,findAllTafsirs:le,findAllRecitationStyles:ue,findAllLanguages:pe,findVerseMedia:Re,findAllChapterReciters:Ae,findAllChapterInfos:he},x=Ie;var be={language:"ar",size:30},ye=async(e,r)=>{let t=c({q:e,...r},be),{search:i}=await a("/search",t,r==null?void 0:r.fetchFn);return i},Oe={search:ye},F=Oe;var Ve={chapters:b,verses:O,juzs:V,audio:w,resources:x,search:F},v=Ve;var Ne={v4:v,utils:o},we=Ne;
8
+
9
+ exports.CharType = C;
10
+ exports.Language = m;
11
+ exports.QuranFont = S;
12
+ exports.quran = we;
13
+ //# sourceMappingURL=index.js.map