anl 26.106.0 → 26.107.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/README.ar.md CHANGED
@@ -106,32 +106,30 @@ $ anl type
106
106
  "saveApiListFolderPath": "apps/api/",
107
107
  "saveEnumFolderPath": "apps/enums",
108
108
  "importEnumPath": "../../enums",
109
- "swaggerServers": {
110
- "url": "https://generator3.swagger.io/openapi2.json",
111
- "apiListFileName": "index.ts",
112
- "publicPrefix": "api",
113
- "headers": {}
114
- },
115
109
  "requestMethodsImportPath": "./fetch",
116
110
  "dataLevel": "serve",
111
+ "parameterSeparator": "_",
117
112
  "formatting": {
118
113
  "indentation": "\t",
119
114
  "lineEnding": "\n"
120
115
  },
121
- "headers": {},
122
- "includeInterface": [
123
- {
124
- "path": "/api/user",
125
- "method": "get"
126
- }
127
- ],
128
- "excludeInterface": [
129
- {
130
- "path": "/api/admin",
131
- "method": "post"
132
- }
133
- ],
134
- "parameterSeparator": "_",
116
+ "swaggerServers": {
117
+ "url": "https://generator3.swagger.io/openapi2.json",
118
+ "apiListFileName": "index.ts",
119
+ "publicPrefix": "/api",
120
+ "pathPrefix": "/gateway",
121
+ "dataLevel": "serve",
122
+ "parameterSeparator": "_",
123
+ "headers": {
124
+ "Authorization": "Bearer token"
125
+ },
126
+ "includeInterface": [
127
+ {
128
+ "path": "/api/user",
129
+ "method": "get"
130
+ }
131
+ ]
132
+ },
135
133
  "enmuConfig": {
136
134
  "erasableSyntaxOnly": false,
137
135
  "varnames": "enum-varnames",
@@ -164,12 +162,22 @@ $ anl type
164
162
  {
165
163
  "url": "https://generator3.swagger.io/openapi1.json",
166
164
  "apiListFileName": "op.ts",
167
- "headers": {}
165
+ "pathPrefix": "/forward",
166
+ "dataLevel": "serve",
167
+ "parameterSeparator": "_",
168
+ "headers": {},
169
+ "includeInterface": [
170
+ {
171
+ "path": "/op/trade/order/queryPage",
172
+ "method": "post"
173
+ }
174
+ ]
168
175
  },
169
176
  {
170
177
  "url": "https://generator3.swagger.io/openapi2.json",
171
178
  "apiListFileName": "index.ts",
172
179
  "publicPrefix": "/api",
180
+ "dataLevel": "data",
173
181
  "headers": {}
174
182
  }
175
183
  ]
@@ -186,22 +194,31 @@ $ anl type
186
194
  | importEnumPath | string | نعم | مسار استيراد التعداد (مسار ملف enum المُشار إليه في apps/types/models/\*.ts) |
187
195
  | swaggerJsonUrl | string | لا | عنوان مستند Swagger JSON (تم نقله إلى `swaggerServers`، محفوظ للتوافق مع التكوين القديم) **سيتم حذف هذا الحقل في الإصدارات التالية** |
188
196
  | swaggerServers | object \| Array<object> | لا | تكوين خادم Swagger. يمكن ملء خادم واحد مباشرة ككائن، أو استخدام مصفوفة لخوادم متعددة. يمكن تكوين `url` و `publicPrefix` و `apiListFileName` و `headers` لكل خادم<br />يتوافق هذا الحقل مع أمثلة تكوين خادم Swagger الواحد وتكوين خوادم Swagger المتعددة، يرجى التمرير لأعلى للعرض |
189
- | swaggerServers[].url | string | نعم | عنوان مستند Swagger JSON |
190
- | swaggerServers[].publicPrefix | string | لا | البادئة العامة على مسار url، على سبيل المثال: api/users، api/users/{id}، api هي البادئة العامة |
191
- | swaggerServers[].apiListFileName | string | لا | اسم ملف قائمة API، الافتراضي هو `index.ts`. عند استخدام خوادم متعددة، يجب أن يكون اسم الملف لكل خادم فريدًا |
192
- | swaggerServers[].headers | object | لا | تكوين رأس الطلب |
193
- | requestMethodsImportPath | string | نعم | مسار استيراد طرق الطلب |
194
- | dataLevel | 'data' \| 'serve' \| 'axios' | نعم | مستوى بيانات استجابة الواجهة |
195
- | formatting | object | لا | تكوين تنسيق الكود |
197
+ | swaggerServers[].url | string | نعم | عنوان مستند Swagger JSON |
198
+ | swaggerServers[].publicPrefix | string | لا | البادئة العامة على مسار url، على سبيل المثال: api/users، api/users/{id}، api هي البادئة العامة |
199
+ | swaggerServers[].pathPrefix | string | لا | بادئة مسار الطلب (يمكن فهمها كاسم وحدة)، سيتم إضافتها تلقائيًا أمام كل مسار طلب API.<br />على سبيل المثال: عندما `pathPrefix: "/forward"`، <br />`/publicPrefix/pathPrefix/user` سيصبح `/api/forward/user` |
200
+ | swaggerServers[].apiListFileName | string | لا | اسم ملف قائمة API، الافتراضي هو `index.ts`. عند استخدام خوادم متعددة، يجب أن يكون اسم الملف لكل خادم فريدًا |
201
+ | swaggerServers[].headers | object | لا | تكوين رأس طلب هذا الخادم |
202
+ | swaggerServers[].dataLevel | 'data' \| 'serve' \| 'axios' | لا | مستوى بيانات إرجاع واجهة هذا الخادم. إذا لم يتم تعيينه، يتم استخدام تكوين `dataLevel` العام |
203
+ | swaggerServers[].parameterSeparator | '$' \| '\_' | لا | الفاصل المستخدم عند إنشاء أسماء API وأسماء الأنواع لهذا الخادم. إذا لم يتم تعيينه، يتم استخدام تكوين `parameterSeparator` العام |
204
+ | swaggerServers[].includeInterface | Array<{path: string, method: string}> | لا | قائمة الواجهات المضمنة في هذا الخادم. إذا لم يتم تعيينها، يتم استخدام تكوين `includeInterface` العام |
205
+ | swaggerServers[].excludeInterface | Array<{path: string, method: string}> | لا | قائمة الواجهات المستبعدة في هذا الخادم. إذا لم يتم تعيينها، يتم استخدام تكوين `excludeInterface` العام |
206
+ | requestMethodsImportPath | string | نعم | مسار استيراد طرق الطلب |
207
+ | dataLevel | 'data' \| 'serve' \| 'axios' | لا | تكوين مستوى بيانات إرجاع الواجهة العامة، القيمة الافتراضية: `'serve'`. يمكن لكل خادم تكوينه بشكل منفصل للتجاوز |
208
+ | formatting | object | لا | تكوين تنسيق الكود |
209
+ | formatting.indentation | string | لا | حرف مسافة بادئة الكود، على سبيل المثال: `"\t"` أو `" "` (مسافتان) |
210
+ | formatting.lineEnding | string | لا | حرف سطر جديد، على سبيل المثال: `"\n"` (LF) أو `"\r\n"` (CRLF) |
196
211
  | headers | object | لا | تكوين رأس الطلب (تم نقله إلى `swaggerServers`، محفوظ للتوافق مع التكوين القديم) |
197
- | includeInterface | Array<{path: string, method: string}> | لا | الواجهات المضمنة: ملف قائمة الواجهات المحدد بـ `saveApiListFolderPath` سيتضمن فقط الواجهات في القائمة، متعارض مع حقل `excludeInterface` |
198
- | excludeInterface | Array<{path: string, method: string}> | لا | الواجهات المستبعدة: نص قائمة الواجهات المحدد بـ `saveApiListFolderPath` لن يتضمن الواجهات في هذه القائمة، متعارض مع `includeInterface` |
199
- | publicPrefix | string | لا | البادئة العامة على مسار url (تم نقله إلى `swaggerServers`، محفوظ للتوافق مع التكوين القديم) |
200
- | apiListFileName | string | لا | اسم ملف قائمة API، الافتراضي هو `index.ts` (تم نقله إلى `swaggerServers`، محفوظ للتوافق مع التكوين القديم) |
201
- | enmuConfig.erasableSyntaxOnly | boolean | نعم | يتوافق مع خيار `compilerOptions.erasableSyntaxOnly` في tsconfig.json. عندما يكون `trueيتم إنشاء كائن const بدلاً من enum (صيغة النوع فقط). القيمة الافتراضية: `false` |
202
- | parameterSeparator | string | لا | الفاصل المستخدم بين أجزاء المسار والمعاملات عند إنشاء أسماء API وأسماء الأنواع. على سبيل المثال، `/users/{userId}/posts` مع الفاصل `'_'` ينشئ `users_userId_posts_GET`. القيمة الافتراضية: `'_'` |
203
- | enmuConfig.varnames | string | لا | اسم الحقل في مخطط Swagger الذي يحتوي على أسماء عناصر التعداد المخصصة. القيمة الافتراضية: `enum-varnames`. |
204
- | enmuConfig.comment | string | لا | اسم الحقل في مخطط Swagger الذي يحتوي على أوصاف عناصر التعداد (يُستخدم لإنشاء التعليقات). القيمة الافتراضية: `enum-descriptions`. |
212
+ | includeInterface | Array<{path: string, method: string}> | لا | الواجهات المضمنة عالميًا: ملف قائمة الواجهات المحدد بـ `saveApiListFolderPath` سيتضمن فقط الواجهات في القائمة، متعارض مع حقل `excludeInterface`. يمكن لكل خادم تكوينه بشكل منفصل للتجاوز |
213
+ | excludeInterface | Array<{path: string, method: string}> | لا | الواجهات المستبعدة عالميًا: نص قائمة الواجهات المحدد بـ `saveApiListFolderPath` لن يتضمن الواجهات في هذه القائمة، متعارض مع `includeInterface`. يمكن لكل خادم تكوينه بشكل منفصل للتجاوز |
214
+ | publicPrefix | string | لا | البادئة العامة على مسار url عالميًا (تم نقله إلى `swaggerServers`، محفوظ للتوافق مع التكوين القديم) |
215
+ | pathPrefix | string | لا | بادئة مسار الطلب العامة (يمكن لكل خادم تكوينه بشكل منفصل للتجاوز) |
216
+ | apiListFileName | string | لا | اسم ملف قائمة API العامة، الافتراضي هو `index.ts` (تم نقله إلى `swaggerServersمحفوظ للتوافق مع التكوين القديم) |
217
+ | enmuConfig | object | نعم | كائن تكوين التعداد |
218
+ | enmuConfig.erasableSyntaxOnly | boolean | نعم | يتوافق مع خيار `compilerOptions.erasableSyntaxOnly` في tsconfig.json. عندما يكون `true`، يتم إنشاء كائن const بدلاً من enum (صيغة النوع فقط). القيمة الافتراضية: `false` |
219
+ | enmuConfig.varnames | string | لا | اسم الحقل في مخطط Swagger الذي يحتوي على أسماء عناصر التعداد المخصصة. القيمة الافتراضية: `enum-varnames`. |
220
+ | enmuConfig.comment | string | لا | اسم الحقل في مخطط Swagger الذي يحتوي على أوصاف عناصر التعداد (يُستخدم لإنشاء التعليقات). القيمة الافتراضية: `enum-descriptions`. |
221
+ | parameterSeparator | '$' \| '\_' | لا | الفاصل المستخدم بين أجزاء المسار والمعاملات عالميًا عند إنشاء أسماء API وأسماء الأنواع. على سبيل المثال، `/users/{userId}/posts` مع الفاصل `'_'` ينشئ `users_userId_posts_GET`. القيمة الافتراضية: `'_'`. يمكن لكل خادم تكوينه بشكل منفصل للتجاوز |
205
222
 
206
223
  #### العلاقة بين عناصر التكوين والملفات المولدة
207
224
 
@@ -255,6 +272,48 @@ export const userDetailGet = (params: UserDetail_GET.Query) => GET<UserDetail_GE
255
272
 
256
273
  ### شرح الميزات
257
274
 
275
+ #### أولوية التكوين
276
+
277
+ تدعم الأداة التكوين العام والتكوين على مستوى الخادم، وتتبع قواعد الأولوية التالية:
278
+
279
+ **الأولوية: تكوين مستوى الخادم > التكوين العام > القيم الافتراضية**
280
+
281
+ عناصر التكوين التالية تدعم تجاوز التكوين العام على مستوى الخادم:
282
+
283
+ - `dataLevel`: مستوى بيانات إرجاع الواجهة
284
+ - `parameterSeparator`: الفاصل لأسماء API وأسماء الأنواع
285
+ - `includeInterface`: قائمة الواجهات المضمنة
286
+ - `excludeInterface`: قائمة الواجهات المستبعدة
287
+ - `pathPrefix`: بادئة مسار الطلب
288
+ - `publicPrefix`: البادئة العامة لـ URL
289
+ - `headers`: تكوين رأس الطلب
290
+
291
+ **مثال:**
292
+
293
+ ```json
294
+ {
295
+ "dataLevel": "serve",
296
+ "parameterSeparator": "_",
297
+ "swaggerServers": [
298
+ {
299
+ "url": "http://api1.example.com/swagger.json",
300
+ "dataLevel": "data",
301
+ "apiListFileName": "api1.ts"
302
+ },
303
+ {
304
+ "url": "http://api2.example.com/swagger.json",
305
+ "apiListFileName": "api2.ts"
306
+ }
307
+ ]
308
+ }
309
+ ```
310
+
311
+ في التكوين أعلاه:
312
+
313
+ - يستخدم `api1.ts` `dataLevel: "data"` (تكوين مستوى الخادم)
314
+ - يستخدم `api2.ts` `dataLevel: "serve"` (التكوين العام)
315
+ - يستخدم كلا الخادمين `parameterSeparator: "_"` (التكوين العام)
316
+
258
317
  #### تحليل الأنواع
259
318
 
260
319
  - يدعم جميع أنواع البيانات في مواصفات OpenAPI 3.0
@@ -305,6 +364,46 @@ interface User {
305
364
  }
306
365
  ```
307
366
 
367
+ #### تكوين مستوى البيانات (dataLevel)
368
+
369
+ يُستخدم `dataLevel` لتكوين مستوى استخراج البيانات المرتجعة من الواجهة، ويدعم ثلاثة خيارات:
370
+
371
+ 1. **`'serve'` (القيمة الافتراضية)**: استخراج حقل `data` المرتجع من الخادم
372
+
373
+ ```typescript
374
+ // إرجاع الخادم: { code: 200, message: 'success', data: { id: 1, name: 'user' } }
375
+ // إرجاع الدالة: { id: 1, name: 'user' }
376
+ ```
377
+
378
+ 2. **`'data'`**: استخراج حقل `data.data` (مناسب لسيناريوهات data المتداخلة)
379
+
380
+ ```typescript
381
+ // إرجاع الخادم: { data: { code: 200, data: { id: 1, name: 'user' } } }
382
+ // إرجاع الدالة: { id: 1, name: 'user' }
383
+ ```
384
+
385
+ 3. **`'axios'`**: إرجاع كائن استجابة axios الكامل
386
+ ```typescript
387
+ // إرجاع الخادم: { code: 200, message: 'success', data: { id: 1, name: 'user' } }
388
+ // إرجاع الدالة: { code: 200, message: 'success', data: { id: 1, name: 'user' } }
389
+ ```
390
+
391
+ **مثال على التكوين:**
392
+
393
+ ```json
394
+ {
395
+ "dataLevel": "serve",
396
+ "swaggerServers": [
397
+ {
398
+ "url": "http://api1.example.com/swagger.json",
399
+ "dataLevel": "data"
400
+ }
401
+ ]
402
+ }
403
+ ```
404
+
405
+ > **ملاحظة**: تكوين `dataLevel` على مستوى الخادم سيتجاوز التكوين العام.
406
+
308
407
  #### تحميل الملفات
309
408
 
310
409
  عند اكتشاف نوع تحميل ملف، سيتم إضافة رأس الطلب المقابل تلقائيًا:
@@ -316,6 +415,33 @@ export const uploadFile = (params: UploadFile.Body) =>
316
415
  });
317
416
  ```
318
417
 
418
+ #### تنسيق الكود
419
+
420
+ تدعم الأداة خيارات تنسيق كود مخصصة، يتم التحكم فيها من خلال تكوين `formatting`:
421
+
422
+ **مثال على التكوين:**
423
+
424
+ ```json
425
+ {
426
+ "formatting": {
427
+ "indentation": "\t",
428
+ "lineEnding": "\n"
429
+ }
430
+ }
431
+ ```
432
+
433
+ **شرح التكوين:**
434
+
435
+ - `indentation`: حرف مسافة بادئة الكود
436
+ - `"\t"`: استخدام مسافة بادئة Tab (افتراضي)
437
+ - `" "`: استخدام مسافة بادئة بمسافتين
438
+ - `" "`: استخدام مسافة بادئة بأربع مسافات
439
+ - `lineEnding`: نوع حرف السطر الجديد
440
+ - `"\n"`: LF (نمط Linux/macOS، موصى به)
441
+ - `"\r\n"`: CRLF (نمط Windows)
442
+
443
+ **ملاحظة:** إذا تم تكوين Prettier في المشروع، سيتم تنسيق الكود المولد تلقائيًا باستخدام Prettier، وقد يتم تجاوز تكوين `formatting` بواسطة Prettier.
444
+
319
445
  #### معالجة الأخطاء
320
446
 
321
447
  تحتوي الأداة على آلية معالجة أخطاء كاملة:
@@ -372,8 +498,88 @@ export const uploadFile = (params: UploadFile.Body) =>
372
498
  - يتم إلحاق API للخوادم اللاحقة بملفات `apiListFileName` الخاصة بها
373
499
  - يتم دمج تعريفات الأنواع والتعدادات في مجلد موحد لتجنب التكرار
374
500
 
501
+ **تكوين على مستوى الخادم:**
502
+
503
+ كل خادم يدعم تكوينًا مستقلاً للخيارات التالية، إذا لم يتم تعيينها، يتم استخدام التكوين العام:
504
+
505
+ - `dataLevel` - مستوى بيانات إرجاع الواجهة
506
+ - `parameterSeparator` - الفاصل لأسماء API وأسماء الأنواع
507
+ - `includeInterface` - قائمة الواجهات المضمنة
508
+ - `excludeInterface` - قائمة الواجهات المستبعدة
509
+ - `pathPrefix` - بادئة مسار الطلب
510
+
511
+ #### بادئة المسار (pathPrefix)
512
+
513
+ يُستخدم `pathPrefix` لإضافة بادئة تلقائيًا أمام جميع مسارات طلبات API، وهو مفيد بشكل خاص في السيناريوهات التالية:
514
+
515
+ 1. **سيناريو الوكيل العكسي**: عندما يتم توجيه خدمة الخلفية من خلال وكيل عكسي
516
+ 2. **بوابة API**: إضافة بادئة بوابة موحدة أمام المسار
517
+ 3. **تكوين بيئات متعددة**: استخدام بادئات مسار مختلفة لبيئات مختلفة
518
+
519
+ **مثال على الاستخدام:**
520
+
521
+ ```json
522
+ {
523
+ "swaggerServers": [
524
+ {
525
+ "url": "http://api.example.com/swagger.json",
526
+ "pathPrefix": "/forward",
527
+ "apiListFileName": "api.ts"
528
+ }
529
+ ]
530
+ }
531
+ ```
532
+
533
+ **التأثير:**
534
+
535
+ المسار `/api/user/list` المحدد في Swagger سيتم توليده كـ:
536
+
537
+ ```typescript
538
+ export const apiUserListGet = (params: ApiUserList_GET.Query) => GET<ApiUserList_GET.Response>('/forward/api/user/list', params);
539
+ ```
540
+
541
+ **الفرق مع publicPrefix:**
542
+
543
+ - `publicPrefix`: يُستخدم لإزالة البادئة العامة من مسار الواجهة (يؤثر فقط على اسم الدالة المولدة)
544
+ - `pathPrefix`: يُستخدم لإضافة بادئة أمام مسار الطلب الفعلي (يؤثر على URL الطلب في وقت التشغيل)
545
+
375
546
  **مثال على التكوين:**
376
547
 
548
+ ```json
549
+ {
550
+ "swaggerServers": [
551
+ {
552
+ "url": "http://api1.example.com/swagger.json",
553
+ "apiListFileName": "api1.ts",
554
+ "publicPrefix": "/api/v1",
555
+ "pathPrefix": "/forward",
556
+ "dataLevel": "serve",
557
+ "parameterSeparator": "_",
558
+ "headers": {
559
+ "Authorization": "Bearer token1"
560
+ },
561
+ "includeInterface": [
562
+ {
563
+ "path": "/api/v1/users",
564
+ "method": "get"
565
+ }
566
+ ]
567
+ },
568
+ {
569
+ "url": "http://api2.example.com/swagger.json",
570
+ "apiListFileName": "api2.ts",
571
+ "publicPrefix": "/api/v2",
572
+ "dataLevel": "data",
573
+ "headers": {
574
+ "Authorization": "Bearer token2"
575
+ }
576
+ }
577
+ ]
578
+ }
579
+ ```
580
+
581
+ **مثال على التكوين (التنسيق القديم):**
582
+
377
583
  ```json
378
584
  {
379
585
  "swaggerServers": [
@@ -422,10 +628,12 @@ export const uploadFile = (params: UploadFile.Body) =>
422
628
 
423
629
  1. تأكد من إمكانية الوصول إلى عنوان مستند Swagger JSON
424
630
  2. يجب أن تكون المسارات في ملف التكوين نسبية إلى الدليل الجذر للمشروع
425
- 3. ستستبدل الملفات المولدة الملفات الموجودة بنفس الاسم
631
+ 3. ستستبدل الملفات المولدة الملفات الموجودة بنفس الاسم (لكن `config.ts` و `error-message.ts` و `fetch.ts` و `api-type.d.ts` لن يتم استبدالها إذا كانت موجودة بالفعل)
426
632
  4. يُنصح بإضافة الملفات المولدة إلى التحكم في الإصدار
427
633
  5. عند استخدام خوادم Swagger متعددة، تأكد من أن `apiListFileName` لكل خادم فريد لتجنب استبدال الملفات
428
634
  6. عند تكوين خوادم متعددة، سيتم دمج تعريفات الأنواع والتعدادات، وقد تحدث تعارضات إذا كانت هناك أنواع بنفس الاسم من خوادم مختلفة
635
+ 7. تكوين مستوى الخادم (`dataLevel` و `parameterSeparator` و `includeInterface` و `excludeInterface` و `pathPrefix`) سيتجاوز التكوين العام
636
+ 8. لا يمكن تكوين `includeInterface` و `excludeInterface` في نفس الوقت، إذا تم تكوينهما معًا، سيتم إعطاء الأولوية لـ `includeInterface`
429
637
 
430
638
  ### الأسئلة الشائعة
431
639
 
@@ -437,6 +645,61 @@ export const uploadFile = (params: UploadFile.Body) =>
437
645
  - تحقق من صحة تكوين requestMethodsImportPath
438
646
  - تأكد من وجود ملف طريقة الطلب
439
647
 
648
+ 3. **متى تستخدم `pathPrefix`؟**
649
+ - عندما تحتاج واجهة API الخاصة بك إلى الوصول عبر وكيل عكسي أو بوابة
650
+ - على سبيل المثال: المحدد في Swagger هو `/api/user`، لكن الطلب الفعلي يحتاج إلى `/gateway/api/user`
651
+ - ما عليك سوى تعيين `pathPrefix: "/gateway"`
652
+
653
+ 4. **ما الفرق بين `publicPrefix` و `pathPrefix`؟**
654
+ - `publicPrefix`: يزيل البادئة من مسار الواجهة، ويؤثر فقط على اسم الدالة المولدة
655
+ - على سبيل المثال: `/api/user/list` بعد إزالة `/api`، يكون اسم الدالة `userListGet`
656
+ - `pathPrefix`: يضيف بادئة أمام مسار الطلب، ويؤثر على URL الطلب الفعلي
657
+ - على سبيل المثال: `/api/user/list` بعد إضافة `/forward`، يكون URL الطلب `/forward/api/user/list`
658
+
659
+ 5. **كيفية تكوين `dataLevel` مختلف لخوادم متعددة؟**
660
+
661
+ ```json
662
+ {
663
+ "dataLevel": "serve",
664
+ "swaggerServers": [
665
+ {
666
+ "url": "http://old-api.com/swagger.json",
667
+ "dataLevel": "axios",
668
+ "apiListFileName": "old-api.ts"
669
+ },
670
+ {
671
+ "url": "http://new-api.com/swagger.json",
672
+ "apiListFileName": "new-api.ts"
673
+ }
674
+ ]
675
+ }
676
+ ```
677
+
678
+ - يستخدم `old-api.ts` `dataLevel: "axios"`
679
+ - يستخدم `new-api.ts` `dataLevel: "serve"` العام
680
+
681
+ 6. **كيفية توليد واجهات جزئية فقط؟**
682
+ - استخدم تكوين `includeInterface`:
683
+ ```json
684
+ {
685
+ "swaggerServers": [
686
+ {
687
+ "url": "http://api.com/swagger.json",
688
+ "includeInterface": [
689
+ { "path": "/api/user", "method": "get" },
690
+ { "path": "/api/user/{id}", "method": "post" }
691
+ ]
692
+ }
693
+ ]
694
+ }
695
+ ```
696
+ - أو استخدم `excludeInterface` لاستبعاد الواجهات غير المطلوبة
697
+
698
+ 7. **ماذا تفعل إذا تم استبدال الملفات المولدة؟**
699
+ - الملفات `config.ts` و `error-message.ts` و `fetch.ts` و `api-type.d.ts` تُنشأ فقط عند عدم وجودها لأول مرة
700
+ - ملفات قائمة API وملفات الأنواع تُعاد توليدها في كل مرة
701
+ - يُنصح بإدراج الملفات المولدة في التحكم في الإصدار لسهولة مراجعة التغييرات
702
+
440
703
  # تعليمات استخدام أمر `anl lint`
441
704
 
442
705
  > يوفر وظيفة تكوين أدوات lint المختلفة لمشروع الواجهة الأمامية بنقرة واحدة، بما في ذلك: