@quranjs/api 1.5.1 → 1.7.0
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.
- package/dist/index.d.ts +553 -2
- package/dist/index.js +11 -6
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +6 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +25 -21
- package/src/sdk/utils.ts +18 -9
- package/src/sdk/v4/_fetcher.ts +58 -7
- package/src/sdk/v4/audio.ts +30 -50
- package/src/sdk/v4/chapters.ts +12 -15
- package/src/sdk/v4/juzs.ts +7 -2
- package/src/sdk/v4/resources.ts +27 -31
- package/src/sdk/v4/search.ts +14 -13
- package/src/sdk/v4/verses.ts +79 -58
- package/src/types/BaseApiOptions.ts +6 -0
- package/src/types/FetchFn.ts +1 -0
- package/src/types/index.ts +2 -0
- package/dist/api.cjs.development.js +0 -2723
- package/dist/api.cjs.development.js.map +0 -1
- package/dist/api.cjs.production.min.js +0 -2
- package/dist/api.cjs.production.min.js.map +0 -1
- package/dist/api.esm.js +0 -2715
- package/dist/api.esm.js.map +0 -1
- package/dist/sdk/index.d.ts +0 -183
- package/dist/sdk/utils.d.ts +0 -125
- package/dist/sdk/v4/_fetcher.d.ts +0 -3
- package/dist/sdk/v4/audio.d.ts +0 -52
- package/dist/sdk/v4/chapters.d.ts +0 -13
- package/dist/sdk/v4/index.d.ts +0 -173
- package/dist/sdk/v4/juzs.d.ts +0 -5
- package/dist/sdk/v4/resources.d.ts +0 -26
- package/dist/sdk/v4/search.d.ts +0 -22
- package/dist/sdk/v4/verses.d.ts +0 -64
- package/dist/types/ChapterId.d.ts +0 -4
- package/dist/types/HizbNumber.d.ts +0 -4
- package/dist/types/JuzNumber.d.ts +0 -4
- package/dist/types/PageNumber.d.ts +0 -4
- package/dist/types/RubNumber.d.ts +0 -4
- package/dist/types/VerseKey.d.ts +0 -2
- package/dist/types/api/ApiResponses.d.ts +0 -18
- package/dist/types/api/AudioData.d.ts +0 -17
- package/dist/types/api/AudioResponse.d.ts +0 -8
- package/dist/types/api/Chapter.d.ts +0 -14
- package/dist/types/api/ChapterInfo.d.ts +0 -8
- package/dist/types/api/Footnote.d.ts +0 -6
- package/dist/types/api/Juz.d.ts +0 -8
- package/dist/types/api/Pagination.d.ts +0 -7
- package/dist/types/api/Reciter.d.ts +0 -21
- package/dist/types/api/Resources.d.ts +0 -70
- package/dist/types/api/Segment.d.ts +0 -4
- package/dist/types/api/Tafsir.d.ts +0 -7
- package/dist/types/api/TafsirInfo.d.ts +0 -9
- package/dist/types/api/TranslatedName.d.ts +0 -4
- package/dist/types/api/Translation.d.ts +0 -17
- package/dist/types/api/Transliteration.d.ts +0 -4
- package/dist/types/api/Verse.d.ts +0 -32
- package/dist/types/api/Word.d.ts +0 -28
- package/dist/types/api/index.d.ts +0 -18
- package/dist/types/index.d.ts +0 -88
- package/dist/types/utils.d.ts +0 -5
- package/dist/utils/misc.d.ts +0 -1
- package/dist/utils/qs-stringify.d.ts +0 -21
- package/src/utils/qs-stringify.ts +0 -81
package/src/sdk/v4/audio.ts
CHANGED
|
@@ -11,52 +11,26 @@ import {
|
|
|
11
11
|
VerseKey,
|
|
12
12
|
VerseRecitationField,
|
|
13
13
|
} from '../../types';
|
|
14
|
-
import { decamelize } from 'humps';
|
|
15
14
|
import Utils from '../utils';
|
|
16
|
-
import { fetcher } from './_fetcher';
|
|
15
|
+
import { fetcher, mergeApiOptions } from './_fetcher';
|
|
16
|
+
import { BaseApiOptions } from '../../types/BaseApiOptions';
|
|
17
17
|
|
|
18
|
-
type GetChapterRecitationOptions = Partial<
|
|
19
|
-
language: Language;
|
|
20
|
-
}>;
|
|
18
|
+
type GetChapterRecitationOptions = Partial<BaseApiOptions>;
|
|
21
19
|
|
|
22
20
|
const defaultChapterRecitationsOptions: GetChapterRecitationOptions = {
|
|
23
21
|
language: Language.ARABIC,
|
|
24
22
|
};
|
|
25
23
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
return final;
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
type GetVerseRecitationOptions = Partial<{
|
|
35
|
-
language: Language;
|
|
36
|
-
fields: Partial<Record<VerseRecitationField, boolean>>;
|
|
37
|
-
}>;
|
|
24
|
+
type GetVerseRecitationOptions = Partial<
|
|
25
|
+
BaseApiOptions & {
|
|
26
|
+
fields: Partial<Record<VerseRecitationField, boolean>>;
|
|
27
|
+
}
|
|
28
|
+
>;
|
|
38
29
|
|
|
39
30
|
const defaultVerseRecitationsOptions: GetVerseRecitationOptions = {
|
|
40
31
|
language: Language.ARABIC,
|
|
41
32
|
};
|
|
42
33
|
|
|
43
|
-
const getVerseRecitationsOptions = (
|
|
44
|
-
options: GetVerseRecitationOptions = {}
|
|
45
|
-
) => {
|
|
46
|
-
const initial = { ...defaultVerseRecitationsOptions, ...options };
|
|
47
|
-
const final: any = { language: initial.language };
|
|
48
|
-
|
|
49
|
-
if (initial.fields) {
|
|
50
|
-
const fields: string[] = [];
|
|
51
|
-
for (const [key, value] of Object.entries(initial.fields)) {
|
|
52
|
-
if (value) fields.push(decamelize(key));
|
|
53
|
-
}
|
|
54
|
-
final.fields = fields.join(',');
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return final;
|
|
58
|
-
};
|
|
59
|
-
|
|
60
34
|
/**
|
|
61
35
|
* Get all chapter recitations for specific reciter
|
|
62
36
|
* @description https://quran.api-docs.io/v4/audio-recitations/list-of-all-surah-audio-files-for-specific-reciter
|
|
@@ -69,10 +43,11 @@ const findAllChapterRecitations = async (
|
|
|
69
43
|
reciterId: string,
|
|
70
44
|
options?: GetChapterRecitationOptions
|
|
71
45
|
) => {
|
|
72
|
-
const params =
|
|
46
|
+
const params = mergeApiOptions(options, defaultChapterRecitationsOptions);
|
|
73
47
|
const { audioFiles } = await fetcher<{ audioFiles: ChapterRecitation[] }>(
|
|
74
48
|
`/chapter_recitations/${reciterId}`,
|
|
75
|
-
params
|
|
49
|
+
params,
|
|
50
|
+
options?.fetchFn
|
|
76
51
|
);
|
|
77
52
|
return audioFiles;
|
|
78
53
|
};
|
|
@@ -93,10 +68,11 @@ const findChapterRecitationById = async (
|
|
|
93
68
|
) => {
|
|
94
69
|
if (!Utils.isValidChapterId(chapterId)) throw new Error('Invalid chapter id');
|
|
95
70
|
|
|
96
|
-
const params =
|
|
71
|
+
const params = mergeApiOptions(options, defaultChapterRecitationsOptions);
|
|
97
72
|
const { audioFile } = await fetcher<{ audioFile: ChapterRecitation }>(
|
|
98
73
|
`/chapter_recitations/${reciterId}/${chapterId}`,
|
|
99
|
-
params
|
|
74
|
+
params,
|
|
75
|
+
options?.fetchFn
|
|
100
76
|
);
|
|
101
77
|
|
|
102
78
|
return audioFile;
|
|
@@ -118,11 +94,15 @@ const findVerseRecitationsByChapter = async (
|
|
|
118
94
|
) => {
|
|
119
95
|
if (!Utils.isValidChapterId(chapterId)) throw new Error('Invalid chapter id');
|
|
120
96
|
|
|
121
|
-
const params =
|
|
97
|
+
const params = mergeApiOptions(options, defaultVerseRecitationsOptions);
|
|
122
98
|
const data = await fetcher<{
|
|
123
99
|
audioFiles: VerseRecitation[];
|
|
124
100
|
pagination: Pagination;
|
|
125
|
-
}>(
|
|
101
|
+
}>(
|
|
102
|
+
`/recitations/${recitationId}/by_chapter/${chapterId}`,
|
|
103
|
+
params,
|
|
104
|
+
options?.fetchFn
|
|
105
|
+
);
|
|
126
106
|
|
|
127
107
|
return data;
|
|
128
108
|
};
|
|
@@ -143,11 +123,11 @@ const findVerseRecitationsByJuz = async (
|
|
|
143
123
|
) => {
|
|
144
124
|
if (!Utils.isValidJuz(juz)) throw new Error('Invalid juz');
|
|
145
125
|
|
|
146
|
-
const params =
|
|
126
|
+
const params = mergeApiOptions(options, defaultVerseRecitationsOptions);
|
|
147
127
|
const data = await fetcher<{
|
|
148
128
|
audioFiles: VerseRecitation[];
|
|
149
129
|
pagination: Pagination;
|
|
150
|
-
}>(`/recitations/${recitationId}/by_juz/${juz}`, params);
|
|
130
|
+
}>(`/recitations/${recitationId}/by_juz/${juz}`, params, options?.fetchFn);
|
|
151
131
|
|
|
152
132
|
return data;
|
|
153
133
|
};
|
|
@@ -168,11 +148,11 @@ const findVerseRecitationsByPage = async (
|
|
|
168
148
|
) => {
|
|
169
149
|
if (!Utils.isValidQuranPage(page)) throw new Error('Invalid page');
|
|
170
150
|
|
|
171
|
-
const params =
|
|
151
|
+
const params = mergeApiOptions(options, defaultVerseRecitationsOptions);
|
|
172
152
|
const data = await fetcher<{
|
|
173
153
|
audioFiles: VerseRecitation[];
|
|
174
154
|
pagination: Pagination;
|
|
175
|
-
}>(`/recitations/${recitationId}/by_page/${page}`, params);
|
|
155
|
+
}>(`/recitations/${recitationId}/by_page/${page}`, params, options?.fetchFn);
|
|
176
156
|
|
|
177
157
|
return data;
|
|
178
158
|
};
|
|
@@ -193,11 +173,11 @@ const findVerseRecitationsByRub = async (
|
|
|
193
173
|
) => {
|
|
194
174
|
if (!Utils.isValidRub(rub)) throw new Error('Invalid rub');
|
|
195
175
|
|
|
196
|
-
const params =
|
|
176
|
+
const params = mergeApiOptions(options, defaultVerseRecitationsOptions);
|
|
197
177
|
const data = await fetcher<{
|
|
198
178
|
audioFiles: VerseRecitation[];
|
|
199
179
|
pagination: Pagination;
|
|
200
|
-
}>(`/recitations/${recitationId}/by_rub/${rub}`, params);
|
|
180
|
+
}>(`/recitations/${recitationId}/by_rub/${rub}`, params, options?.fetchFn);
|
|
201
181
|
|
|
202
182
|
return data;
|
|
203
183
|
};
|
|
@@ -218,11 +198,11 @@ const findVerseRecitationsByHizb = async (
|
|
|
218
198
|
) => {
|
|
219
199
|
if (!Utils.isValidHizb(hizb)) throw new Error('Invalid hizb');
|
|
220
200
|
|
|
221
|
-
const params =
|
|
201
|
+
const params = mergeApiOptions(options, defaultVerseRecitationsOptions);
|
|
222
202
|
const data = await fetcher<{
|
|
223
203
|
audioFiles: VerseRecitation[];
|
|
224
204
|
pagination: Pagination;
|
|
225
|
-
}>(`/recitations/${recitationId}/by_hizb/${hizb}`, params);
|
|
205
|
+
}>(`/recitations/${recitationId}/by_hizb/${hizb}`, params, options?.fetchFn);
|
|
226
206
|
|
|
227
207
|
return data;
|
|
228
208
|
};
|
|
@@ -243,11 +223,11 @@ const findVerseRecitationsByKey = async (
|
|
|
243
223
|
) => {
|
|
244
224
|
if (!Utils.isValidVerseKey(key)) throw new Error('Invalid verse key');
|
|
245
225
|
|
|
246
|
-
const params =
|
|
226
|
+
const params = mergeApiOptions(options, defaultVerseRecitationsOptions);
|
|
247
227
|
const data = await fetcher<{
|
|
248
228
|
audioFiles: VerseRecitation[];
|
|
249
229
|
pagination: Pagination;
|
|
250
|
-
}>(`/recitations/${recitationId}/by_ayah/${key}`, params);
|
|
230
|
+
}>(`/recitations/${recitationId}/by_ayah/${key}`, params, options?.fetchFn);
|
|
251
231
|
|
|
252
232
|
return data;
|
|
253
233
|
};
|
package/src/sdk/v4/chapters.ts
CHANGED
|
@@ -1,20 +1,14 @@
|
|
|
1
1
|
import { Chapter, ChapterId, ChapterInfo, Language } from '../../types';
|
|
2
|
-
import { fetcher } from './_fetcher';
|
|
2
|
+
import { fetcher, mergeApiOptions } from './_fetcher';
|
|
3
3
|
import Utils from '../utils';
|
|
4
|
+
import { BaseApiOptions } from '../../types/BaseApiOptions';
|
|
4
5
|
|
|
5
|
-
type GetChapterOptions = Partial<
|
|
6
|
-
language: Language;
|
|
7
|
-
}>;
|
|
6
|
+
type GetChapterOptions = Partial<BaseApiOptions>;
|
|
8
7
|
|
|
9
8
|
const defaultOptions: GetChapterOptions = {
|
|
10
9
|
language: Language.ARABIC,
|
|
11
10
|
};
|
|
12
11
|
|
|
13
|
-
const getChapterOptions = (options: GetChapterOptions = {}) => {
|
|
14
|
-
const final: any = { ...defaultOptions, ...options };
|
|
15
|
-
return final;
|
|
16
|
-
};
|
|
17
|
-
|
|
18
12
|
/**
|
|
19
13
|
* Get all chapters.
|
|
20
14
|
* @description https://quran.api-docs.io/v4/chapters/list-chapters
|
|
@@ -23,10 +17,11 @@ const getChapterOptions = (options: GetChapterOptions = {}) => {
|
|
|
23
17
|
* quran.v4.chapters.findAll()
|
|
24
18
|
*/
|
|
25
19
|
const findAll = async (options?: GetChapterOptions) => {
|
|
26
|
-
const params =
|
|
20
|
+
const params = mergeApiOptions(options, defaultOptions);
|
|
27
21
|
const { chapters } = await fetcher<{ chapters: Chapter[] }>(
|
|
28
22
|
'/chapters',
|
|
29
|
-
params
|
|
23
|
+
params,
|
|
24
|
+
options?.fetchFn
|
|
30
25
|
);
|
|
31
26
|
|
|
32
27
|
return chapters;
|
|
@@ -44,10 +39,11 @@ const findAll = async (options?: GetChapterOptions) => {
|
|
|
44
39
|
const findById = async (id: ChapterId, options?: GetChapterOptions) => {
|
|
45
40
|
if (!Utils.isValidChapterId(id)) throw new Error('Invalid chapter id');
|
|
46
41
|
|
|
47
|
-
const params =
|
|
42
|
+
const params = mergeApiOptions(options, defaultOptions);
|
|
48
43
|
const { chapter } = await fetcher<{ chapter: Chapter }>(
|
|
49
44
|
`/chapters/${id}`,
|
|
50
|
-
params
|
|
45
|
+
params,
|
|
46
|
+
options?.fetchFn
|
|
51
47
|
);
|
|
52
48
|
|
|
53
49
|
return chapter;
|
|
@@ -65,10 +61,11 @@ const findById = async (id: ChapterId, options?: GetChapterOptions) => {
|
|
|
65
61
|
const findInfoById = async (id: ChapterId, options?: GetChapterOptions) => {
|
|
66
62
|
if (!Utils.isValidChapterId(id)) throw new Error('Invalid chapter id');
|
|
67
63
|
|
|
68
|
-
const params =
|
|
64
|
+
const params = mergeApiOptions(options, defaultOptions);
|
|
69
65
|
const { chapterInfo } = await fetcher<{ chapterInfo: ChapterInfo }>(
|
|
70
66
|
`/chapters/${id}/info`,
|
|
71
|
-
params
|
|
67
|
+
params,
|
|
68
|
+
options?.fetchFn
|
|
72
69
|
);
|
|
73
70
|
|
|
74
71
|
return chapterInfo;
|
package/src/sdk/v4/juzs.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Juz } from '../../types';
|
|
2
|
+
import { BaseApiOptions } from '../../types/BaseApiOptions';
|
|
2
3
|
import { fetcher } from './_fetcher';
|
|
3
4
|
|
|
4
5
|
/**
|
|
@@ -7,8 +8,12 @@ import { fetcher } from './_fetcher';
|
|
|
7
8
|
* @example
|
|
8
9
|
* quran.v4.juzs.findAll()
|
|
9
10
|
*/
|
|
10
|
-
const findAll = async () => {
|
|
11
|
-
const { juzs } = await fetcher<{ juzs: Juz[] }>(
|
|
11
|
+
const findAll = async (options?: Omit<BaseApiOptions, 'language'>) => {
|
|
12
|
+
const { juzs } = await fetcher<{ juzs: Juz[] }>(
|
|
13
|
+
'/juzs',
|
|
14
|
+
undefined,
|
|
15
|
+
options?.fetchFn
|
|
16
|
+
);
|
|
12
17
|
return juzs;
|
|
13
18
|
};
|
|
14
19
|
|
package/src/sdk/v4/resources.ts
CHANGED
|
@@ -12,21 +12,15 @@ import {
|
|
|
12
12
|
TranslationResource,
|
|
13
13
|
VerseMediaResource,
|
|
14
14
|
} from '../../types';
|
|
15
|
-
import {
|
|
15
|
+
import { BaseApiOptions } from '../../types/BaseApiOptions';
|
|
16
|
+
import { fetcher, mergeApiOptions } from './_fetcher';
|
|
16
17
|
|
|
17
|
-
type GetResourceOptions = Partial<
|
|
18
|
-
language: Language;
|
|
19
|
-
}>;
|
|
18
|
+
type GetResourceOptions = Partial<BaseApiOptions>;
|
|
20
19
|
|
|
21
20
|
const defaultOptions: GetResourceOptions = {
|
|
22
21
|
language: Language.ARABIC,
|
|
23
22
|
};
|
|
24
23
|
|
|
25
|
-
const getResourcesOptions = (options: GetResourceOptions = {}) => {
|
|
26
|
-
const final: any = { ...defaultOptions, ...options };
|
|
27
|
-
return final;
|
|
28
|
-
};
|
|
29
|
-
|
|
30
24
|
/**
|
|
31
25
|
* Get all recitations.
|
|
32
26
|
* @description https://quran.api-docs.io/v4/resources/recitations
|
|
@@ -35,10 +29,10 @@ const getResourcesOptions = (options: GetResourceOptions = {}) => {
|
|
|
35
29
|
* quran.v4.resources.findAllRecitations()
|
|
36
30
|
*/
|
|
37
31
|
const findAllRecitations = async (options?: GetResourceOptions) => {
|
|
38
|
-
const params =
|
|
32
|
+
const params = mergeApiOptions(options);
|
|
39
33
|
const { recitations } = await fetcher<{
|
|
40
34
|
recitations: RecitationResource[];
|
|
41
|
-
}>('/resources/recitations', params);
|
|
35
|
+
}>('/resources/recitations', params, options?.fetchFn);
|
|
42
36
|
|
|
43
37
|
return recitations;
|
|
44
38
|
};
|
|
@@ -53,10 +47,10 @@ const findAllRecitations = async (options?: GetResourceOptions) => {
|
|
|
53
47
|
* quran.v4.resources.findRecitationInfo('1')
|
|
54
48
|
*/
|
|
55
49
|
// const findRecitationInfo = async (id: string, options?: GetResourceOptions) => {
|
|
56
|
-
// const params =
|
|
50
|
+
// const params = mergeApiOptions(options, defaultOptions);
|
|
57
51
|
// const { info } = await fetcher<{
|
|
58
52
|
// info: RecitationInfoResource;
|
|
59
|
-
// }>(`/resources/recitations/${id}/info`, params);
|
|
53
|
+
// }>(`/resources/recitations/${id}/info`, params, options?.fetchFn);
|
|
60
54
|
|
|
61
55
|
// return info;
|
|
62
56
|
// };
|
|
@@ -69,10 +63,10 @@ const findAllRecitations = async (options?: GetResourceOptions) => {
|
|
|
69
63
|
* quran.v4.resources.findAllTranslations()
|
|
70
64
|
*/
|
|
71
65
|
const findAllTranslations = async (options?: GetResourceOptions) => {
|
|
72
|
-
const params =
|
|
66
|
+
const params = mergeApiOptions(options, defaultOptions);
|
|
73
67
|
const { translations } = await fetcher<{
|
|
74
68
|
translations: TranslationResource[];
|
|
75
|
-
}>('/resources/translations', params);
|
|
69
|
+
}>('/resources/translations', params, options?.fetchFn);
|
|
76
70
|
|
|
77
71
|
return translations;
|
|
78
72
|
};
|
|
@@ -87,10 +81,10 @@ const findAllTranslations = async (options?: GetResourceOptions) => {
|
|
|
87
81
|
* quran.v4.resources.findTranslationInfo('169')
|
|
88
82
|
*/
|
|
89
83
|
// const findTranslationInfo = async (id: string, options?: GetResourceOptions) => {
|
|
90
|
-
// const params =
|
|
84
|
+
// const params = mergeApiOptions(options, defaultOptions);
|
|
91
85
|
// const { info } = await fetcher<{
|
|
92
86
|
// info: TranslationInfoResource;
|
|
93
|
-
// }>(`/resources/translations/${id}/info`, params);
|
|
87
|
+
// }>(`/resources/translations/${id}/info`, params, options?.fetchFn);
|
|
94
88
|
|
|
95
89
|
// return info;
|
|
96
90
|
// };
|
|
@@ -103,10 +97,10 @@ const findAllTranslations = async (options?: GetResourceOptions) => {
|
|
|
103
97
|
* quran.v4.resources.findAllTafsirs()
|
|
104
98
|
*/
|
|
105
99
|
const findAllTafsirs = async (options?: GetResourceOptions) => {
|
|
106
|
-
const params =
|
|
100
|
+
const params = mergeApiOptions(options, defaultOptions);
|
|
107
101
|
const { tafsirs } = await fetcher<{
|
|
108
102
|
tafsirs: TafsirResource[];
|
|
109
|
-
}>('/resources/tafsirs', params);
|
|
103
|
+
}>('/resources/tafsirs', params, options?.fetchFn);
|
|
110
104
|
|
|
111
105
|
return tafsirs;
|
|
112
106
|
};
|
|
@@ -121,10 +115,10 @@ const findAllTafsirs = async (options?: GetResourceOptions) => {
|
|
|
121
115
|
* quran.v4.resources.findTranslationInfo('1')
|
|
122
116
|
*/
|
|
123
117
|
// const findTafsirInfo = async (id: string, options?: GetResourceOptions) => {
|
|
124
|
-
// const params =
|
|
118
|
+
// const params = mergeApiOptions(options, defaultOptions);
|
|
125
119
|
// const { info } = await fetcher<{
|
|
126
120
|
// info: TafsirInfoResource;
|
|
127
|
-
// }>(`/resources/tafsirs/${id}/info`, params);
|
|
121
|
+
// }>(`/resources/tafsirs/${id}/info`, params, options?.fetchFn);
|
|
128
122
|
|
|
129
123
|
// return info;
|
|
130
124
|
// };
|
|
@@ -135,10 +129,12 @@ const findAllTafsirs = async (options?: GetResourceOptions) => {
|
|
|
135
129
|
* @example
|
|
136
130
|
* quran.v4.resources.findAllRecitationStyles()
|
|
137
131
|
*/
|
|
138
|
-
const findAllRecitationStyles = async (
|
|
132
|
+
const findAllRecitationStyles = async (
|
|
133
|
+
options?: Omit<BaseApiOptions, 'language'>
|
|
134
|
+
) => {
|
|
139
135
|
const { recitationStyles } = await fetcher<{
|
|
140
136
|
recitationStyles: RecitationStylesResource;
|
|
141
|
-
}>('/resources/recitation_styles');
|
|
137
|
+
}>('/resources/recitation_styles', undefined, options?.fetchFn);
|
|
142
138
|
|
|
143
139
|
return recitationStyles;
|
|
144
140
|
};
|
|
@@ -151,10 +147,10 @@ const findAllRecitationStyles = async () => {
|
|
|
151
147
|
* quran.v4.resources.findAllLanguages()
|
|
152
148
|
*/
|
|
153
149
|
const findAllLanguages = async (options?: GetResourceOptions) => {
|
|
154
|
-
const params =
|
|
150
|
+
const params = mergeApiOptions(options, defaultOptions);
|
|
155
151
|
const { languages } = await fetcher<{
|
|
156
152
|
languages: LanguageResource[];
|
|
157
|
-
}>('/resources/languages', params);
|
|
153
|
+
}>('/resources/languages', params, options?.fetchFn);
|
|
158
154
|
|
|
159
155
|
return languages;
|
|
160
156
|
};
|
|
@@ -167,10 +163,10 @@ const findAllLanguages = async (options?: GetResourceOptions) => {
|
|
|
167
163
|
* quran.v4.resources.findAllChapterInfos()
|
|
168
164
|
*/
|
|
169
165
|
const findAllChapterInfos = async (options?: GetResourceOptions) => {
|
|
170
|
-
const params =
|
|
166
|
+
const params = mergeApiOptions(options, defaultOptions);
|
|
171
167
|
const { chapterInfos } = await fetcher<{
|
|
172
168
|
chapterInfos: ChapterInfoResource[];
|
|
173
|
-
}>('/resources/chapter_infos', params);
|
|
169
|
+
}>('/resources/chapter_infos', params, options?.fetchFn);
|
|
174
170
|
|
|
175
171
|
return chapterInfos;
|
|
176
172
|
};
|
|
@@ -183,10 +179,10 @@ const findAllChapterInfos = async (options?: GetResourceOptions) => {
|
|
|
183
179
|
* quran.v4.resources.findVerseMedia()
|
|
184
180
|
*/
|
|
185
181
|
const findVerseMedia = async (options?: GetResourceOptions) => {
|
|
186
|
-
const params =
|
|
182
|
+
const params = mergeApiOptions(options, defaultOptions);
|
|
187
183
|
const { verseMedia } = await fetcher<{
|
|
188
184
|
verseMedia: VerseMediaResource;
|
|
189
|
-
}>(`/resources/verse_media`, params);
|
|
185
|
+
}>(`/resources/verse_media`, params, options?.fetchFn);
|
|
190
186
|
|
|
191
187
|
return verseMedia;
|
|
192
188
|
};
|
|
@@ -199,10 +195,10 @@ const findVerseMedia = async (options?: GetResourceOptions) => {
|
|
|
199
195
|
* quran.v4.resources.findAllChapterReciters()
|
|
200
196
|
*/
|
|
201
197
|
const findAllChapterReciters = async (options?: GetResourceOptions) => {
|
|
202
|
-
const params =
|
|
198
|
+
const params = mergeApiOptions(options, defaultOptions);
|
|
203
199
|
const { reciters } = await fetcher<{
|
|
204
200
|
reciters: ChapterReciterResource[];
|
|
205
|
-
}>(`/resources/chapter_reciters`, params);
|
|
201
|
+
}>(`/resources/chapter_reciters`, params, options?.fetchFn);
|
|
206
202
|
|
|
207
203
|
return reciters;
|
|
208
204
|
};
|
package/src/sdk/v4/search.ts
CHANGED
|
@@ -1,22 +1,19 @@
|
|
|
1
1
|
import { Language, SearchResponse } from '../../types';
|
|
2
|
-
import {
|
|
2
|
+
import { BaseApiOptions } from '../../types/BaseApiOptions';
|
|
3
|
+
import { fetcher, mergeApiOptions } from './_fetcher';
|
|
3
4
|
|
|
4
|
-
type SearchOptions = Partial<
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
5
|
+
type SearchOptions = Partial<
|
|
6
|
+
BaseApiOptions & {
|
|
7
|
+
size: number;
|
|
8
|
+
page: number;
|
|
9
|
+
}
|
|
10
|
+
>;
|
|
9
11
|
|
|
10
12
|
const defaultSearchOptions: SearchOptions = {
|
|
11
13
|
language: Language.ARABIC,
|
|
12
14
|
size: 30,
|
|
13
15
|
};
|
|
14
16
|
|
|
15
|
-
const getSearchOptions = (q: string, options: SearchOptions = {}) => {
|
|
16
|
-
const all = { ...defaultSearchOptions, ...options, q };
|
|
17
|
-
return all;
|
|
18
|
-
};
|
|
19
|
-
|
|
20
17
|
/**
|
|
21
18
|
* Search
|
|
22
19
|
* @description https://quran.api-docs.io/v4/search/KfCmk4KQYbtyK9adj
|
|
@@ -29,8 +26,12 @@ const getSearchOptions = (q: string, options: SearchOptions = {}) => {
|
|
|
29
26
|
* quran.v4.search.search('نور', { language: Language.ENGLISH, page: 2 })
|
|
30
27
|
*/
|
|
31
28
|
const search = async (q: string, options?: SearchOptions) => {
|
|
32
|
-
const params =
|
|
33
|
-
const { search } = await fetcher<SearchResponse>(
|
|
29
|
+
const params = mergeApiOptions({ q, ...options }, defaultSearchOptions);
|
|
30
|
+
const { search } = await fetcher<SearchResponse>(
|
|
31
|
+
'/search',
|
|
32
|
+
params,
|
|
33
|
+
options?.fetchFn
|
|
34
|
+
);
|
|
34
35
|
|
|
35
36
|
return search;
|
|
36
37
|
};
|