islamic-content-sdk 1.0.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.js ADDED
@@ -0,0 +1,741 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ IslamicContentSdk: () => IslamicContentSdk
24
+ });
25
+ module.exports = __toCommonJS(index_exports);
26
+
27
+ // src/services/base.ts
28
+ var BaseService = class {
29
+ async request(url, method = "GET", body, customHeaders) {
30
+ const options = {
31
+ method,
32
+ headers: {
33
+ "Content-Type": "application/json",
34
+ ...customHeaders
35
+ }
36
+ };
37
+ if (body) {
38
+ if (typeof body === "string" || body instanceof URLSearchParams) {
39
+ options.body = body;
40
+ } else {
41
+ options.body = JSON.stringify(body);
42
+ }
43
+ }
44
+ try {
45
+ const response = await fetch(url, options);
46
+ if (!response.ok) {
47
+ throw new Error(`API request failed with status ${response.status}: ${response.statusText}`);
48
+ }
49
+ const text = await response.text();
50
+ if (!text) {
51
+ return {};
52
+ }
53
+ try {
54
+ return JSON.parse(text);
55
+ } catch {
56
+ return text;
57
+ }
58
+ } catch (error) {
59
+ if (error instanceof Error) {
60
+ throw new Error(`[IslamicContentSdk] ${error.message}`);
61
+ }
62
+ throw new Error("[IslamicContentSdk] An unknown error occurred during the API request.");
63
+ }
64
+ }
65
+ };
66
+
67
+ // src/services/quranenc.ts
68
+ var QuranencService = class extends BaseService {
69
+ baseurl;
70
+ audioBaseUrl;
71
+ constructor() {
72
+ super();
73
+ this.baseurl = "https://quranenc.com/api/v1";
74
+ this.audioBaseUrl = "https://d.quranenc.com/data/audio";
75
+ }
76
+ // 1 & 2 & 3: الترجمات (جميعها، حسب اللغة، أو مع التوطين)
77
+ async translationList(params = {}) {
78
+ let url = `${this.baseurl}/translations/list`;
79
+ if (params.language) {
80
+ url += `/${params.language}`;
81
+ }
82
+ if (params.localization) {
83
+ url += `?localization=${params.localization}`;
84
+ }
85
+ return this.request(url);
86
+ }
87
+ // 4: ترجمة سورة كاملة
88
+ async translationSura(translationKey, suraNumber) {
89
+ const url = `${this.baseurl}/translation/sura/${translationKey}/${suraNumber}`;
90
+ return this.request(url);
91
+ }
92
+ // 5: ترجمة آية معينة
93
+ async translationAya(translationKey, suraNumber, ayaNumber) {
94
+ const url = `${this.baseurl}/translation/aya/${translationKey}/${suraNumber}/${ayaNumber}`;
95
+ return this.request(url);
96
+ }
97
+ // 6: الترجمة الصوتية للآية (ملف MP3)
98
+ async ayaAudio(translationKey, suraNumber, ayaNumber) {
99
+ const sura3Digits = String(suraNumber).padStart(3, "0");
100
+ const aya3Digits = String(ayaNumber).padStart(3, "0");
101
+ const url = `${this.audioBaseUrl}/${translationKey}/${sura3Digits}${aya3Digits}.mp3`;
102
+ return {
103
+ status: 200,
104
+ file_url: url,
105
+ content_type: "audio/mpeg"
106
+ };
107
+ }
108
+ // 7: إضافة ملاحظة على الترجمة (POST request)
109
+ async addNote(payload) {
110
+ const url = `${this.baseurl}/translations/note`;
111
+ return this.request(url, "POST", payload);
112
+ }
113
+ };
114
+
115
+ // src/services/hadeethenc.ts
116
+ var HadeethencService = class extends BaseService {
117
+ baseurl;
118
+ constructor() {
119
+ super();
120
+ this.baseurl = "https://hadeethenc.com/api/v1";
121
+ }
122
+ // 1: جلب اللغات المتاحة
123
+ async languages() {
124
+ return this.request(`${this.baseurl}/languages`);
125
+ }
126
+ // 2: جلب قائمة التصنيفات حسب رمز اللغة
127
+ async categories(languageCode) {
128
+ const params = new URLSearchParams({ language: languageCode });
129
+ return this.request(`${this.baseurl}/categories/list/?${params.toString()}`);
130
+ }
131
+ // 3: جلب التصنيفات الرئيسية حسب رمز اللغة
132
+ async rootCategories(languageCode) {
133
+ const params = new URLSearchParams({ language: languageCode });
134
+ return this.request(`${this.baseurl}/categories/roots/?${params.toString()}`);
135
+ }
136
+ // 4: جلب قائمة الأحاديث بالتصنيف والتصفح
137
+ async hadithsList(params) {
138
+ const queryParams = new URLSearchParams({ language: params.language });
139
+ if (params.categoryId !== void 0) {
140
+ queryParams.append("category_id", String(params.categoryId));
141
+ }
142
+ if (params.page !== void 0) {
143
+ queryParams.append("page", String(params.page));
144
+ }
145
+ if (params.perPage !== void 0) {
146
+ queryParams.append("per_page", String(params.perPage));
147
+ }
148
+ return this.request(`${this.baseurl}/hadeeths/list/?${queryParams.toString()}`);
149
+ }
150
+ // 5: جلب تفاصيل حديث واحد بالمعرف واللغة
151
+ async hadithDetails(params) {
152
+ const queryParams = new URLSearchParams({
153
+ id: String(params.id),
154
+ language: params.language
155
+ });
156
+ return this.request(`${this.baseurl}/hadeeths/one/?${queryParams.toString()}`);
157
+ }
158
+ };
159
+
160
+ // src/services/islamhouse.ts
161
+ var IslamhouseCategoriesAndTypesService = class extends BaseService {
162
+ constructor(baseurl) {
163
+ super();
164
+ this.baseurl = baseurl;
165
+ }
166
+ baseurl;
167
+ // All Types (أنواع المواد)
168
+ async allTypes(siteLang, contentLang) {
169
+ const url = `${this.baseurl}/main/sitecontent/${siteLang}/${contentLang}/json`;
170
+ return this.request(url);
171
+ }
172
+ // All categories (جميع التصنيفات)
173
+ async allCategories(language) {
174
+ const url = `${this.baseurl}/categories/showall/${language}/json`;
175
+ return this.request(url);
176
+ }
177
+ // All categories tree (شجرة التصنيفات الكاملة)
178
+ async categoriesTree(language) {
179
+ const url = `${this.baseurl}/main/get-object-category-tree/${language}/json`;
180
+ return this.request(url);
181
+ }
182
+ // Child categories (التصنيفات الفرعية)
183
+ async childCategories(id, siteLang, contentLang) {
184
+ const url = `${this.baseurl}/categories/viewcat/${id}/${siteLang}/${contentLang}/json`;
185
+ return this.request(url);
186
+ }
187
+ // Single category (basic) (معلومات تصنيف واحد)
188
+ async singleCategoryBasic(id, language) {
189
+ const url = `${this.baseurl}/categories/viewitem/${id}/${language}/json`;
190
+ return this.request(url);
191
+ }
192
+ // Single category (With subs) (التصنيفات الفرعية مع الأبناء)
193
+ async subCategories(id, language) {
194
+ const url = `${this.baseurl}/main/get-sub-categories/${id}/${language}/json`;
195
+ return this.request(url);
196
+ }
197
+ // Available types (By category ID) (الأنواع المتاحة لتصنيف معين)
198
+ async categoryTypes(id, siteLang, contentLang) {
199
+ const url = `${this.baseurl}/main/get-category-types-available/${id}/${siteLang}/${contentLang}/json`;
200
+ return this.request(url);
201
+ }
202
+ // Source languages (By category ID) (اللغات المتاحة لتصنيف معين)
203
+ async categoryLanguages(id, slang, language) {
204
+ const url = `${this.baseurl}/main/get-category-source-languages/${id}/${slang}/${language}/json`;
205
+ return this.request(url);
206
+ }
207
+ };
208
+ var IslamhouseItemsService = class extends BaseService {
209
+ constructor(baseurl) {
210
+ super();
211
+ this.baseurl = baseurl;
212
+ }
213
+ baseurl;
214
+ // List Items by type and language (قائمة المواد حسب النوع واللغة)
215
+ async listItems(type, siteLang, slang, page = 1, limit = 25) {
216
+ const url = `${this.baseurl}/main/${type}/${siteLang}/${slang}/${page}/${limit}/json`;
217
+ return this.request(url);
218
+ }
219
+ // List Items by author id (قائمة المواد لمؤلف معين)
220
+ async authorItems(authorId, slang, siteLang, contentLang, page = 1, limit = 20) {
221
+ const url = `${this.baseurl}/main/get-author-items/${authorId}/${slang}/${siteLang}/${contentLang}/${page}/${limit}/json`;
222
+ return this.request(url);
223
+ }
224
+ // List Items by category id (قائمة المواد لتصنيف معين)
225
+ async categoryItems(categoryId, slang, siteLang, contentLang, page = 1, limit = 20) {
226
+ const url = `${this.baseurl}/main/get-category-items/${categoryId}/${slang}/${siteLang}/${contentLang}/${page}/${limit}/json`;
227
+ return this.request(url);
228
+ }
229
+ // List items by date (recent additions) (قائمة أحدث المواد)
230
+ async latestItems(period, slang, siteLang, contentLang, page = 1, limit = 25) {
231
+ const url = `${this.baseurl}/main/get-latest/${period}/${slang}/${siteLang}/${contentLang}/${page}/${limit}/json`;
232
+ return this.request(url);
233
+ }
234
+ // Highlighted Items (المواد المميزة)
235
+ async highlightedItems(siteLang, contentLang) {
236
+ const url = `${this.baseurl}/main/get-highlights/${siteLang}/${contentLang}/json`;
237
+ return this.request(url);
238
+ }
239
+ // Items count (عدد المواد المتوفرة)
240
+ async itemsCount(type, siteLang, contentLang) {
241
+ const url = `${this.baseurl}/main/get-language-items-count/${type}/${siteLang}/${contentLang}/json`;
242
+ return this.request(url);
243
+ }
244
+ };
245
+ var IslamhouseItemService = class extends BaseService {
246
+ constructor(baseurl) {
247
+ super();
248
+ this.baseurl = baseurl;
249
+ }
250
+ baseurl;
251
+ // Item details (تفاصيل المادة)
252
+ async details(id, language) {
253
+ const url = `${this.baseurl}/main/get-item/${id}/${language}/json`;
254
+ return this.request(url);
255
+ }
256
+ // Item attachments (مرفقات المادة)
257
+ async attachments(id) {
258
+ const url = `${this.baseurl}/main/check-attachment/${id}/json`;
259
+ return this.request(url);
260
+ }
261
+ // Item category(ies) tree (شجرة تصنيفات مادة معينة)
262
+ async tree(id, language) {
263
+ const url = `${this.baseurl}/main/get-item-tree/${id}/${language}/json`;
264
+ return this.request(url);
265
+ }
266
+ // Item card translations (ترجمة بطاقة مادة)
267
+ async cardTranslations(id, language) {
268
+ const url = `${this.baseurl}/main/get-item-card-translations/${id}/${language}/json`;
269
+ return this.request(url);
270
+ }
271
+ // Item translations (ترجمات المادة الواحدة)
272
+ async translations(id, language) {
273
+ const url = `${this.baseurl}/main/get-item-translations/${id}/${language}/json`;
274
+ return this.request(url);
275
+ }
276
+ };
277
+ var IslamhouseAuthorsService = class extends BaseService {
278
+ constructor(baseurl) {
279
+ super();
280
+ this.baseurl = baseurl;
281
+ }
282
+ baseurl;
283
+ // List authors/sources (قائمة المؤلفين والمصادر)
284
+ async list(params = {}) {
285
+ const kind = params.kind || "showall";
286
+ const locale = params.locale || "showall";
287
+ const sort = params.sort || "countdesc";
288
+ const page = params.page !== void 0 ? params.page : 1;
289
+ const perPage = params.perPage !== void 0 ? params.perPage : 20;
290
+ const url = `${this.baseurl}/main/get-authors-data/${kind}/${locale}/${sort}/${page}/${perPage}/json`;
291
+ return this.request(url);
292
+ }
293
+ // Author/Source details (تفاصيل مؤلف محدد)
294
+ async details(id, language) {
295
+ const url = `${this.baseurl}/main/get-author/${id}/${language}/json`;
296
+ return this.request(url);
297
+ }
298
+ // Single author card (By language code) (ترجمة بيانات المؤلف)
299
+ async cardTranslations(id, language) {
300
+ const url = `${this.baseurl}/main/get-author-card-translations/${id}/${language}/json`;
301
+ return this.request(url);
302
+ }
303
+ // Available types (الأنواع المتاحة لمؤلف)
304
+ async availableTypes(id, siteLang, contentLang) {
305
+ const url = `${this.baseurl}/main/get-author-types-avaliable/${id}/${siteLang}/${contentLang}/json`;
306
+ return this.request(url);
307
+ }
308
+ // Available locales (اللغات المتاحة لمؤلف)
309
+ async availableLocales(id, slang, language) {
310
+ const url = `${this.baseurl}/main/get-author-available-languages/${id}/${slang}/${language}/json`;
311
+ return this.request(url);
312
+ }
313
+ };
314
+ var IslamhouseLanguagesService = class extends BaseService {
315
+ constructor(baseurl) {
316
+ super();
317
+ this.baseurl = baseurl;
318
+ }
319
+ baseurl;
320
+ // Keys (locales) (بيانات وتفاصيل اللغات المتوفرة)
321
+ async keys() {
322
+ return this.request(`${this.baseurl}/languages/get-language-details/json`);
323
+ }
324
+ // Terms and sentences (المصطلحات والترجمات)
325
+ async terms(language) {
326
+ const url = `${this.baseurl}/languages/get-language-terms/${language}/json`;
327
+ return this.request(url);
328
+ }
329
+ // Available languages (of certain another language) (اللغات المتاحة للغة معينة)
330
+ async availableLanguages(slang, language) {
331
+ const url = `${this.baseurl}/main/get-available-languages/${slang}/${language}/json`;
332
+ return this.request(url);
333
+ }
334
+ };
335
+ var IslamhouseQuranService = class extends BaseService {
336
+ constructor(baseurl) {
337
+ super();
338
+ this.baseurl = baseurl;
339
+ }
340
+ baseurl;
341
+ // Quran categories (تصنيفات المصحف الشريف)
342
+ async categories(language) {
343
+ const url = `${this.baseurl}/quran/get-categories/${language}/json`;
344
+ return this.request(url);
345
+ }
346
+ // Single category (تصنيف محدد)
347
+ async singleCategory(id, language) {
348
+ const url = `${this.baseurl}/quran/get-category/${id}/${language}/json`;
349
+ return this.request(url);
350
+ }
351
+ // Author details (تفاصيل القارئ)
352
+ async authorDetails(id, language) {
353
+ const url = `${this.baseurl}/quran/get-author/${id}/${language}/json`;
354
+ return this.request(url);
355
+ }
356
+ // Author recitations (تلاوات القارئ)
357
+ async authorRecitations(id, language) {
358
+ const url = `${this.baseurl}/quran/get-author-recitations/${id}/${language}/json`;
359
+ return this.request(url);
360
+ }
361
+ // Sura details (تفاصيل سورة معينة)
362
+ async suraDetails(suraId, language) {
363
+ const url = `${this.baseurl}/quran/get-sura/${suraId}/${language}/json`;
364
+ return this.request(url);
365
+ }
366
+ // Sura Recitations (تسجيلات سورة محددة)
367
+ async suraRecitations(suraId, language) {
368
+ const url = `${this.baseurl}/quran/get-sura-recitations/${suraId}/${language}/json`;
369
+ return this.request(url);
370
+ }
371
+ // Recitation details (تفاصيل تلاوة قرآنية محددة)
372
+ async recitationDetails(id, language) {
373
+ const url = `${this.baseurl}/quran/get-recitation/${id}/${language}/json`;
374
+ return this.request(url);
375
+ }
376
+ };
377
+ var IslamhouseService = class {
378
+ categoriesAndTypes;
379
+ items;
380
+ item;
381
+ authors;
382
+ languages;
383
+ quran;
384
+ baseurl = "https://api3.islamhouse.com/v3/paV29H2gm56kvLPy";
385
+ constructor() {
386
+ this.categoriesAndTypes = new IslamhouseCategoriesAndTypesService(this.baseurl);
387
+ this.items = new IslamhouseItemsService(this.baseurl);
388
+ this.item = new IslamhouseItemService(this.baseurl);
389
+ this.authors = new IslamhouseAuthorsService(this.baseurl);
390
+ this.languages = new IslamhouseLanguagesService(this.baseurl);
391
+ this.quran = new IslamhouseQuranService(this.baseurl);
392
+ }
393
+ };
394
+
395
+ // src/services/risalat-al-haramain.ts
396
+ var RisalaContentsService = class extends BaseService {
397
+ constructor(baseurl, apiPath) {
398
+ super();
399
+ this.baseurl = baseurl;
400
+ this.apiPath = apiPath;
401
+ }
402
+ baseurl;
403
+ apiPath;
404
+ // Get Full Contents
405
+ async getFullContents(params = {}) {
406
+ const language = params.language || "en";
407
+ const lang = params.lang || "en";
408
+ const url = `${this.baseurl}/${language}/${this.apiPath}/get_full_contents?lang=${lang}`;
409
+ return this.request(url);
410
+ }
411
+ // Get Contents
412
+ async getContents(params = {}) {
413
+ const language = params.language || "en";
414
+ const lang = params.lang || "en";
415
+ const url = `${this.baseurl}/${language}/${this.apiPath}/content?lang=${lang}`;
416
+ return this.request(url);
417
+ }
418
+ // Single Content
419
+ async singleContent(id, language = "en") {
420
+ const url = `${this.baseurl}/${language}/${this.apiPath}/single-content?id=${id}`;
421
+ return this.request(url);
422
+ }
423
+ // Name search
424
+ async nameSearch(name, language = "ar") {
425
+ const url = `${this.baseurl}/${language}/${this.apiPath}/name_search?name=${encodeURIComponent(name)}`;
426
+ return this.request(url);
427
+ }
428
+ // Available languages
429
+ async availableLanguages(id, language = "ar") {
430
+ const url = `${this.baseurl}/${language}/${this.apiPath}/available_languages/${id}`;
431
+ return this.request(url);
432
+ }
433
+ // Content translation
434
+ async contentTranslation(id, targetLanguage, language = "en") {
435
+ const url = `${this.baseurl}/${language}/${this.apiPath}/content_translation/${id}?language=${targetLanguage}`;
436
+ return this.request(url);
437
+ }
438
+ };
439
+ var RisalaIslamicContentService = class extends BaseService {
440
+ constructor(baseurl, apiPath) {
441
+ super();
442
+ this.baseurl = baseurl;
443
+ this.apiPath = apiPath;
444
+ }
445
+ baseurl;
446
+ apiPath;
447
+ // Fatwas
448
+ async fatwas(params = {}) {
449
+ const language = params.language || "en";
450
+ const lang = params.lang || "ar";
451
+ const isFeatured = params.isFeatured !== void 0 ? params.isFeatured : 1;
452
+ const url = `${this.baseurl}/${language}/${this.apiPath}/fatwas?lang=${lang}&is_featured=${isFeatured}`;
453
+ return this.request(url);
454
+ }
455
+ // Hadeeths
456
+ async hadeeths(params = {}) {
457
+ const language = params.language || "en";
458
+ const lang = params.lang || "ar";
459
+ const isFeatured = params.isFeatured !== void 0 ? params.isFeatured : 1;
460
+ const url = `${this.baseurl}/${language}/${this.apiPath}/hadeeths?lang=${lang}&is_featured=${isFeatured}`;
461
+ return this.request(url);
462
+ }
463
+ // Quran
464
+ async quran(params = {}) {
465
+ const language = params.language || "en";
466
+ const lang = params.lang || "ar";
467
+ const isFeatured = params.isFeatured !== void 0 ? params.isFeatured : 1;
468
+ const url = `${this.baseurl}/${language}/${this.apiPath}/quran?lang=${lang}&is_featured=${isFeatured}`;
469
+ return this.request(url);
470
+ }
471
+ };
472
+ var RisalaSearchService = class extends BaseService {
473
+ constructor(baseurl, apiPath) {
474
+ super();
475
+ this.baseurl = baseurl;
476
+ this.apiPath = apiPath;
477
+ }
478
+ baseurl;
479
+ apiPath;
480
+ // Search Contents
481
+ async contents(query, language = "en") {
482
+ const url = `${this.baseurl}/${language}/${this.apiPath}/search?query=${encodeURIComponent(query)}`;
483
+ return this.request(url);
484
+ }
485
+ };
486
+ var RisalaLookupsService = class extends BaseService {
487
+ constructor(baseurl, apiPath) {
488
+ super();
489
+ this.baseurl = baseurl;
490
+ this.apiPath = apiPath;
491
+ }
492
+ baseurl;
493
+ apiPath;
494
+ // Languages
495
+ async languages(language = "en", apiKey = "A7X9G2L5M8P4T1C3D6V0KJQZRYBWFNSHEUO9682XLMTGVDPKJHQC7R5ZYA1B3W4F") {
496
+ const url = `${this.baseurl}/${language}/${this.apiPath}/langs?api_key=${apiKey}`;
497
+ return this.request(url);
498
+ }
499
+ // Content Types
500
+ async contentTypes(language = "en") {
501
+ const url = `${this.baseurl}/${language}/${this.apiPath}/content-types`;
502
+ return this.request(url);
503
+ }
504
+ };
505
+ var RisalatAlHaramainService = class {
506
+ contents;
507
+ islamicContent;
508
+ search;
509
+ lookups;
510
+ baseurl = "https://risala.prh.gov.sa";
511
+ apiPath = "Api";
512
+ constructor() {
513
+ this.contents = new RisalaContentsService(this.baseurl, this.apiPath);
514
+ this.islamicContent = new RisalaIslamicContentService(this.baseurl, this.apiPath);
515
+ this.search = new RisalaSearchService(this.baseurl, this.apiPath);
516
+ this.lookups = new RisalaLookupsService(this.baseurl, this.apiPath);
517
+ }
518
+ };
519
+
520
+ // src/services/bayan-al-islam.ts
521
+ var BayanAlIslamService = class extends BaseService {
522
+ baseurl;
523
+ constructor() {
524
+ super();
525
+ this.baseurl = "https://byenah.com";
526
+ }
527
+ // Languages List
528
+ async languagesList(language = "ar") {
529
+ const url = `${this.baseurl}/${language}/Api/languages/list`;
530
+ return this.request(url);
531
+ }
532
+ // Muslim List
533
+ async muslimList(language = "en") {
534
+ const url = `${this.baseurl}/${language}/Api/content/muslims/full_list`;
535
+ return this.request(url);
536
+ }
537
+ // Non Muslim List
538
+ async nonMuslimList(language = "en") {
539
+ const url = `${this.baseurl}/${language}/Api/content/non-muslims/full_list`;
540
+ return this.request(url);
541
+ }
542
+ // Single Content
543
+ async singleContent(id, language = "en") {
544
+ const url = `${this.baseurl}/${language}/Api/single-content?id=${id}`;
545
+ return this.request(url);
546
+ }
547
+ // Languages paginated
548
+ async paginatedLanguages(params = {}) {
549
+ const language = params.language || "en";
550
+ const queryParams = new URLSearchParams();
551
+ if (params.name) queryParams.append("name", params.name);
552
+ if (params.page !== void 0) queryParams.append("page", String(params.page));
553
+ const url = `${this.baseurl}/${language}/Api/paginated-languages?${queryParams.toString()}`;
554
+ return this.request(url);
555
+ }
556
+ // Recent contents (Muslims / Non Muslims share the same endpoint in the collection)
557
+ async recentContents(params) {
558
+ const language = params.language || "en";
559
+ const queryParams = new URLSearchParams({
560
+ lang: params.lang,
561
+ init: String(params.init)
562
+ });
563
+ if (params.ids && params.ids.length > 0) {
564
+ queryParams.append("ids", JSON.stringify(params.ids));
565
+ }
566
+ const url = `${this.baseurl}/${language}/Api/recent-contents?${queryParams.toString()}`;
567
+ return this.request(url);
568
+ }
569
+ // Lookups
570
+ async lookups(language = "en") {
571
+ const url = `${this.baseurl}/${language}/Api/lookups`;
572
+ return this.request(url);
573
+ }
574
+ // Name search
575
+ async nameSearch(name, language = "ar") {
576
+ const url = `${this.baseurl}/${language}/Api/name_search?name=${encodeURIComponent(name)}`;
577
+ return this.request(url);
578
+ }
579
+ // Available languages
580
+ async availableLanguages(id, language = "ar") {
581
+ const url = `${this.baseurl}/${language}/Api/available_languages/${id}`;
582
+ return this.request(url);
583
+ }
584
+ // Content translation
585
+ async contentTranslation(id, targetLanguage, language = "en") {
586
+ const url = `${this.baseurl}/${language}/Api/content_translation/${id}?language=${targetLanguage}`;
587
+ return this.request(url);
588
+ }
589
+ // Attachments Translation
590
+ async attachmentsTranslation(id, targetLanguage, language = "en") {
591
+ const url = `${this.baseurl}/${language}/Api/attachments_translation/${id}?language=${targetLanguage}`;
592
+ return this.request(url);
593
+ }
594
+ };
595
+
596
+ // src/services/al-montaka.ts
597
+ var AlMontakaContentsService = class extends BaseService {
598
+ constructor(baseurl) {
599
+ super();
600
+ this.baseurl = baseurl;
601
+ }
602
+ baseurl;
603
+ // GET /comments (All Comments for a specific content)
604
+ async comments(contentId) {
605
+ const url = `${this.baseurl}/comments?content_id=${contentId}`;
606
+ return this.request(url);
607
+ }
608
+ // POST /comment (Comment)
609
+ async addComment(contentId, comment) {
610
+ const url = `${this.baseurl}/comment`;
611
+ const body = new URLSearchParams({
612
+ content_id: String(contentId),
613
+ comment
614
+ });
615
+ return this.request(
616
+ url,
617
+ "POST",
618
+ body,
619
+ { "Content-Type": "application/x-www-form-urlencoded" }
620
+ );
621
+ }
622
+ // GET /content (Contents)
623
+ async content(categories) {
624
+ const queryParams = new URLSearchParams();
625
+ categories.forEach((cat, index) => {
626
+ queryParams.append(`category[${index}]`, String(cat));
627
+ });
628
+ const url = `${this.baseurl}/content?${queryParams.toString()}`;
629
+ return this.request(url);
630
+ }
631
+ };
632
+ var AlMontakaLookupsService = class extends BaseService {
633
+ constructor(baseurl) {
634
+ super();
635
+ this.baseurl = baseurl;
636
+ }
637
+ baseurl;
638
+ // GET /age-groups
639
+ async ageGroups() {
640
+ return this.request(`${this.baseurl}/age-groups`);
641
+ }
642
+ // GET /categories
643
+ async categories(params) {
644
+ const queryParams = new URLSearchParams({
645
+ language_id: String(params.languageId),
646
+ name_cont: params.nameCont
647
+ });
648
+ return this.request(`${this.baseurl}/categories?${queryParams.toString()}`);
649
+ }
650
+ // GET /entities
651
+ async entities(params) {
652
+ const queryParams = new URLSearchParams({
653
+ language_id: String(params.languageId),
654
+ name_cont: params.nameCont
655
+ });
656
+ return this.request(`${this.baseurl}/entities?${queryParams.toString()}`);
657
+ }
658
+ // GET /expert-levels
659
+ async expertLevels(params) {
660
+ const queryParams = new URLSearchParams({
661
+ language_id: String(params.languageId),
662
+ name_cont: params.nameCont
663
+ });
664
+ return this.request(`${this.baseurl}/expert-levels?${queryParams.toString()}`);
665
+ }
666
+ // GET /ideologies
667
+ async ideologies(params) {
668
+ const queryParams = new URLSearchParams({
669
+ language_id: String(params.languageId),
670
+ name_cont: params.nameCont,
671
+ parent_id: String(params.parentId)
672
+ });
673
+ return this.request(`${this.baseurl}/ideologies?${queryParams.toString()}`);
674
+ }
675
+ // GET /languages
676
+ async languages() {
677
+ return this.request(`${this.baseurl}/languages`);
678
+ }
679
+ // GET /persons
680
+ async persons(params = {}) {
681
+ const queryParams = new URLSearchParams();
682
+ if (params.nameCont) queryParams.append("name_cont", params.nameCont);
683
+ if (params.page !== void 0) queryParams.append("page", String(params.page));
684
+ return this.request(`${this.baseurl}/persons?${queryParams.toString()}`);
685
+ }
686
+ // GET /sections
687
+ async sections(params) {
688
+ const queryParams = new URLSearchParams({
689
+ language_id: String(params.languageId),
690
+ name_cont: params.nameCont
691
+ });
692
+ return this.request(`${this.baseurl}/sections?${queryParams.toString()}`);
693
+ }
694
+ // GET /tags
695
+ async tags(params) {
696
+ const queryParams = new URLSearchParams({
697
+ language_id: String(params.languageId),
698
+ name_cont: params.nameCont
699
+ });
700
+ return this.request(`${this.baseurl}/tags?${queryParams.toString()}`);
701
+ }
702
+ // GET /targeted-groups
703
+ async targetedGroups() {
704
+ return this.request(`${this.baseurl}/targeted-groups`);
705
+ }
706
+ // GET /youtube-channels
707
+ async youtubeChannels() {
708
+ return this.request(`${this.baseurl}/youtube-channels`);
709
+ }
710
+ };
711
+ var AlMontakaService = class {
712
+ contents;
713
+ lookups;
714
+ baseurl = "https://content.mofeed.org/Api";
715
+ constructor() {
716
+ this.contents = new AlMontakaContentsService(this.baseurl);
717
+ this.lookups = new AlMontakaLookupsService(this.baseurl);
718
+ }
719
+ };
720
+
721
+ // src/client.ts
722
+ var IslamicContentSdk = class {
723
+ quranenc;
724
+ hadeethenc;
725
+ islamhouse;
726
+ risalatAlHaramain;
727
+ bayanAlIslam;
728
+ alMontaka;
729
+ constructor() {
730
+ this.quranenc = new QuranencService();
731
+ this.hadeethenc = new HadeethencService();
732
+ this.islamhouse = new IslamhouseService();
733
+ this.risalatAlHaramain = new RisalatAlHaramainService();
734
+ this.bayanAlIslam = new BayanAlIslamService();
735
+ this.alMontaka = new AlMontakaService();
736
+ }
737
+ };
738
+ // Annotate the CommonJS export names for ESM import in node:
739
+ 0 && (module.exports = {
740
+ IslamicContentSdk
741
+ });