anl 25.1203.1 → 26.106.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
@@ -21,6 +21,8 @@
21
21
  - 🎨 دعم تنسيق الكود
22
22
  - ⚡️ دعم تحميل الملفات
23
23
  - 🛠 خيارات توليد كود قابلة للتكوين
24
+ - 🌐 دعم تكوين خوادم Swagger متعددة
25
+ - 🔧 دعم طرق HTTP مثل OPTIONS و HEAD و SEARCH
24
26
 
25
27
  - `anl lint`
26
28
  - 🔍 تكوين أدوات lint المختلفة بنقرة واحدة
@@ -96,13 +98,20 @@ $ anl type
96
98
 
97
99
  #### مثال على ملف التكوين
98
100
 
101
+ **تكوين خادم Swagger واحد:**
102
+
99
103
  ```json
100
104
  {
101
105
  "saveTypeFolderPath": "apps/types",
102
106
  "saveApiListFolderPath": "apps/api/",
103
107
  "saveEnumFolderPath": "apps/enums",
104
108
  "importEnumPath": "../../enums",
105
- "swaggerJsonUrl": "https://generator3.swagger.io/openapi.json",
109
+ "swaggerServers": {
110
+ "url": "https://generator3.swagger.io/openapi2.json",
111
+ "apiListFileName": "index.ts",
112
+ "publicPrefix": "api",
113
+ "headers": {}
114
+ },
106
115
  "requestMethodsImportPath": "./fetch",
107
116
  "dataLevel": "serve",
108
117
  "formatting": {
@@ -122,7 +131,6 @@ $ anl type
122
131
  "method": "post"
123
132
  }
124
133
  ],
125
- "publicPrefix": "api",
126
134
  "parameterSeparator": "_",
127
135
  "enmuConfig": {
128
136
  "erasableSyntaxOnly": false,
@@ -132,26 +140,68 @@ $ anl type
132
140
  }
133
141
  ```
134
142
 
143
+ **تكوين خوادم Swagger متعددة:**
144
+
145
+ ```json
146
+ {
147
+ "saveTypeFolderPath": "apps/types",
148
+ "saveApiListFolderPath": "apps/api/",
149
+ "saveEnumFolderPath": "apps/enums",
150
+ "importEnumPath": "../../enums",
151
+ "requestMethodsImportPath": "./fetch",
152
+ "dataLevel": "serve",
153
+ "formatting": {
154
+ "indentation": "\t",
155
+ "lineEnding": "\n"
156
+ },
157
+ "parameterSeparator": "_",
158
+ "enmuConfig": {
159
+ "erasableSyntaxOnly": false,
160
+ "varnames": "enum-varnames",
161
+ "comment": "enum-descriptions"
162
+ },
163
+ "swaggerServers": [
164
+ {
165
+ "url": "https://generator3.swagger.io/openapi1.json",
166
+ "apiListFileName": "op.ts",
167
+ "headers": {}
168
+ },
169
+ {
170
+ "url": "https://generator3.swagger.io/openapi2.json",
171
+ "apiListFileName": "index.ts",
172
+ "publicPrefix": "/api",
173
+ "headers": {}
174
+ }
175
+ ]
176
+ }
177
+ ```
178
+
135
179
  #### شرح عناصر التكوين
136
180
 
137
- | عنصر التكوين | النوع | مطلوب | الوصف |
138
- | ------------------------------- | ------------------------------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
139
- | saveTypeFolderPath | string | نعم | مسار حفظ ملفات تعريف الأنواع |
140
- | saveApiListFolderPath | string | نعم | مسار حفظ ملفات دوال طلبات API |
141
- | saveEnumFolderPath | string | نعم | مسار حفظ ملفات بيانات التعداد |
142
- | importEnumPath | string | نعم | مسار استيراد التعداد (مسار ملف enum المُشار إليه في apps/types/models/\*.ts) |
143
- | swaggerJsonUrl | string | نعم | عنوان مستند Swagger JSON |
144
- | requestMethodsImportPath | string | نعم | مسار استيراد طرق الطلب |
145
- | dataLevel | 'data' \| 'serve' \| 'axios' | نعم | مستوى بيانات استجابة الواجهة |
146
- | formatting | object | لا | تكوين تنسيق الكود |
147
- | headers | object | لا | تكوين رأس الطلب |
148
- | includeInterface | Array<{path: string, method: string}> | لا | الواجهات المضمنة: ملف قائمة الواجهات المحدد بـ `saveApiListFolderPath` سيتضمن فقط الواجهات في القائمة، متعارض مع حقل `excludeInterface` |
149
- | excludeInterface | Array<{path: string, method: string}> | لا | الواجهات المستبعدة: نص قائمة الواجهات المحدد بـ `saveApiListFolderPath` لن يتضمن الواجهات في هذه القائمة، متعارض مع `includeInterface` |
150
- | publicPrefix | string | لا | البادئة العامة على مسار url، على سبيل المثال: api/users، api/users/{id}، api هي البادئة العامة |
151
- | enmuConfig.erasableSyntaxOnly | boolean | نعم | يتوافق مع خيار `compilerOptions.erasableSyntaxOnly` في tsconfig.json. عندما يكون `true`، يتم إنشاء كائن const بدلاً من enum (صيغة النوع فقط). القيمة الافتراضية: `false` |
152
- | parameterSeparator | string | لا | الفاصل المستخدم بين أجزاء المسار والمعاملات عند إنشاء أسماء API وأسماء الأنواع. على سبيل المثال، `/users/{userId}/posts` مع الفاصل `'_'` ينشئ `users_userId_posts_GET`. القيمة الافتراضية: `'_'` |
153
- | enmuConfig.varnames | string | لا | اسم الحقل في مخطط Swagger الذي يحتوي على أسماء عناصر التعداد المخصصة. القيمة الافتراضية: `enum-varnames`. |
154
- | enmuConfig.comment | string | لا | اسم الحقل في مخطط Swagger الذي يحتوي على أوصاف عناصر التعداد (يُستخدم لإنشاء التعليقات). القيمة الافتراضية: `enum-descriptions`. |
181
+ | عنصر التكوين | النوع | مطلوب | الوصف |
182
+ | -------------------------------- | ------------------------------------- | ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
183
+ | saveTypeFolderPath | string | نعم | مسار حفظ ملفات تعريف الأنواع |
184
+ | saveApiListFolderPath | string | نعم | مسار حفظ ملفات دوال طلبات API |
185
+ | saveEnumFolderPath | string | نعم | مسار حفظ ملفات بيانات التعداد |
186
+ | importEnumPath | string | نعم | مسار استيراد التعداد (مسار ملف enum المُشار إليه في apps/types/models/\*.ts) |
187
+ | swaggerJsonUrl | string | لا | عنوان مستند Swagger JSON (تم نقله إلى `swaggerServers`، محفوظ للتوافق مع التكوين القديم) **سيتم حذف هذا الحقل في الإصدارات التالية** |
188
+ | 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 | لا | تكوين تنسيق الكود |
196
+ | 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`. |
155
205
 
156
206
  #### العلاقة بين عناصر التكوين والملفات المولدة
157
207
 
@@ -164,7 +214,8 @@ project/
164
214
  │ │ ├── models/ # جميع ملفات تعريف الأنواع (باستثناء أنواع التعداد) غير مُتحكم به
165
215
  │ │ ├── connectors/ # تعريفات نوع API (ملفات تعريف الواجهة) غير مُتحكم به
166
216
  │ └── api/ # ملف الطلب: محدد بواسطة عنصر التكوين saveApiListFolderPath
167
- │ │ └── index.ts # قائمة دوال طلبات API غير مُتحكم به
217
+ │ │ └── index.ts # قائمة دوال طلبات API (خادم واحد أو الخادم الأول) غير مُتحكم به
218
+ │ │ └── op.ts # ملفات قائمة API للخوادم الأخرى عند استخدام خوادم متعددة غير مُتحكم به
168
219
  │ │ └── api-type.d.ts # ملف تعريف نوع الطلب غير مُتحكم به
169
220
  │ │ └── config.ts # الطلب، اعتراض الاستجابة، تكوين الطلب غير مُتحكم به
170
221
  │ │ └── error-message.ts # رسائل خطأ على مستوى النظام غير مُتحكم به
@@ -308,12 +359,73 @@ export const uploadFile = (params: UploadFile.Body) =>
308
359
 
309
360
  ملاحظة: لا يمكن استخدام `includeInterface` و `excludeInterface` في نفس الوقت، إذا تم تكوينهما معًا، سيتم إعطاء الأولوية لـ `includeInterface`.
310
361
 
362
+ #### دعم خوادم Swagger متعددة
363
+
364
+ تدعم الأداة تكوين خوادم Swagger متعددة، ويمكن تكوين كل خادم بشكل مستقل:
365
+
366
+ - **خادم واحد**: يمكن ملء `swaggerServers` مباشرة ككائن
367
+ - **خوادم متعددة**: استخدم `swaggerServers` كمصفوفة، ويجب تكوين `apiListFileName` فريد لكل خادم
368
+
369
+ **كيفية العمل:**
370
+
371
+ - يتم توليد API للخادم الأول في `apiListFileName` المحدد (الافتراضي هو `index.ts`)
372
+ - يتم إلحاق API للخوادم اللاحقة بملفات `apiListFileName` الخاصة بها
373
+ - يتم دمج تعريفات الأنواع والتعدادات في مجلد موحد لتجنب التكرار
374
+
375
+ **مثال على التكوين:**
376
+
377
+ ```json
378
+ {
379
+ "swaggerServers": [
380
+ {
381
+ "url": "http://api1.example.com/swagger.json",
382
+ "apiListFileName": "api1.ts",
383
+ "publicPrefix": "/api/v1",
384
+ "headers": {
385
+ "Authorization": "Bearer token1"
386
+ }
387
+ },
388
+ {
389
+ "url": "http://api2.example.com/swagger.json",
390
+ "apiListFileName": "api2.ts",
391
+ "publicPrefix": "/api/v2",
392
+ "headers": {
393
+ "Authorization": "Bearer token2"
394
+ }
395
+ }
396
+ ]
397
+ }
398
+ ```
399
+
400
+ **ملاحظات حول الترحيل:**
401
+
402
+ - لا يزال التكوين القديم (`swaggerJsonUrl` و `publicPrefix` و `headers`) متوافقًا
403
+ - ستكتشف الأداة تلقائيًا التكوين القديم وتقترح طريقة الترحيل
404
+ - يُنصح بالترحيل إلى تكوين `swaggerServers` الجديد للحصول على مرونة أفضل
405
+
406
+ #### دعم طرق HTTP
407
+
408
+ تدعم الأداة طرق HTTP التالية:
409
+
410
+ - `GET` - الحصول على الموارد
411
+ - `POST` - إنشاء الموارد
412
+ - `PUT` - تحديث الموارد (استبدال كامل)
413
+ - `PATCH` - تحديث الموارد (تحديث جزئي)
414
+ - `DELETE` - حذف الموارد
415
+ - `OPTIONS` - طلب التحقق المسبق
416
+ - `HEAD` - الحصول على رأس الاستجابة
417
+ - `SEARCH` - طلب البحث
418
+
419
+ جميع الطرق تدعم تعريفات أنواع آمنة للمعاملات والاستجابة.
420
+
311
421
  ### ملاحظات
312
422
 
313
423
  1. تأكد من إمكانية الوصول إلى عنوان مستند Swagger JSON
314
424
  2. يجب أن تكون المسارات في ملف التكوين نسبية إلى الدليل الجذر للمشروع
315
425
  3. ستستبدل الملفات المولدة الملفات الموجودة بنفس الاسم
316
426
  4. يُنصح بإضافة الملفات المولدة إلى التحكم في الإصدار
427
+ 5. عند استخدام خوادم Swagger متعددة، تأكد من أن `apiListFileName` لكل خادم فريد لتجنب استبدال الملفات
428
+ 6. عند تكوين خوادم متعددة، سيتم دمج تعريفات الأنواع والتعدادات، وقد تحدث تعارضات إذا كانت هناك أنواع بنفس الاسم من خوادم مختلفة
317
429
 
318
430
  ### الأسئلة الشائعة
319
431
 
package/README.es.md CHANGED
@@ -21,6 +21,8 @@
21
21
  - 🎨 Soporte para formateo de código
22
22
  - ⚡️ Soporte para carga de archivos
23
23
  - 🛠 Opciones de generación de código configurables
24
+ - 🌐 Soporte para configuración de múltiples servidores Swagger
25
+ - 🔧 Soporte para métodos HTTP como OPTIONS, HEAD, SEARCH
24
26
 
25
27
  - `anl lint`
26
28
  - 🔍 Configuración de varias herramientas lint con un solo clic
@@ -94,13 +96,20 @@ $ anl type
94
96
 
95
97
  #### Ejemplo de Archivo de Configuración
96
98
 
99
+ **Configuración de un solo servidor Swagger:**
100
+
97
101
  ```json
98
102
  {
99
103
  "saveTypeFolderPath": "apps/types",
100
104
  "saveApiListFolderPath": "apps/api/",
101
105
  "saveEnumFolderPath": "apps/enums",
102
106
  "importEnumPath": "../../enums",
103
- "swaggerJsonUrl": "https://generator3.swagger.io/openapi.json",
107
+ "swaggerServers": {
108
+ "url": "https://generator3.swagger.io/openapi2.json",
109
+ "apiListFileName": "index.ts",
110
+ "publicPrefix": "api",
111
+ "headers": {}
112
+ },
104
113
  "requestMethodsImportPath": "./fetch",
105
114
  "dataLevel": "serve",
106
115
  "formatting": {
@@ -120,7 +129,6 @@ $ anl type
120
129
  "method": "post"
121
130
  }
122
131
  ],
123
- "publicPrefix": "api",
124
132
  "parameterSeparator": "_",
125
133
  "enmuConfig": {
126
134
  "erasableSyntaxOnly": false,
@@ -130,6 +138,42 @@ $ anl type
130
138
  }
131
139
  ```
132
140
 
141
+ **Configuración de múltiples servidores Swagger:**
142
+
143
+ ```json
144
+ {
145
+ "saveTypeFolderPath": "apps/types",
146
+ "saveApiListFolderPath": "apps/api/",
147
+ "saveEnumFolderPath": "apps/enums",
148
+ "importEnumPath": "../../enums",
149
+ "requestMethodsImportPath": "./fetch",
150
+ "dataLevel": "serve",
151
+ "formatting": {
152
+ "indentation": "\t",
153
+ "lineEnding": "\n"
154
+ },
155
+ "parameterSeparator": "_",
156
+ "enmuConfig": {
157
+ "erasableSyntaxOnly": false,
158
+ "varnames": "enum-varnames",
159
+ "comment": "enum-descriptions"
160
+ },
161
+ "swaggerServers": [
162
+ {
163
+ "url": "https://generator3.swagger.io/openapi1.json",
164
+ "apiListFileName": "op.ts",
165
+ "headers": {}
166
+ },
167
+ {
168
+ "url": "https://generator3.swagger.io/openapi2.json",
169
+ "apiListFileName": "index.ts",
170
+ "publicPrefix": "/api",
171
+ "headers": {}
172
+ }
173
+ ]
174
+ }
175
+ ```
176
+
133
177
  #### Descripción de Elementos de Configuración
134
178
 
135
179
  | Elemento de Configuración | Tipo | Requerido | Descripción |
@@ -138,14 +182,20 @@ $ anl type
138
182
  | saveApiListFolderPath | string | Sí | Ruta de guardado de archivos de funciones de solicitud API |
139
183
  | saveEnumFolderPath | string | Sí | Ruta de guardado de archivos de datos enum |
140
184
  | importEnumPath | string | Sí | Ruta de importación de enum (ruta de referencia de archivos enum en apps/types/models/\*.ts) |
141
- | swaggerJsonUrl | string | | Dirección del documento Swagger JSON |
185
+ | swaggerJsonUrl | string | No | Dirección del documento Swagger JSON (migrado a `swaggerServers`, conservado para compatibilidad con configuración antigua) **Este campo se eliminará en versiones futuras** |
186
+ | swaggerServers | object \| Array<object> | No | Configuración del servidor Swagger. Un solo servidor se puede completar directamente como objeto, múltiples servidores usan array. Cada servidor puede configurar `url`, `publicPrefix`, `apiListFileName`, `headers`<br />Este campo corresponde a los ejemplos de configuración de un solo servidor Swagger y configuración de múltiples servidores Swagger, desplázate hacia arriba para verlos |
187
+ | swaggerServers[].url | string | Sí | Dirección del documento Swagger JSON |
188
+ | swaggerServers[].publicPrefix | string | No | Prefijo público en la ruta URL, por ejemplo: api/users, api/users/{id}, api es el prefijo público |
189
+ | swaggerServers[].apiListFileName | string | No | Nombre del archivo de lista de API, el predeterminado es `index.ts`. Cuando hay múltiples servidores, el nombre de archivo de cada servidor debe ser único |
190
+ | swaggerServers[].headers | object | No | Configuración de encabezados de solicitud |
142
191
  | requestMethodsImportPath | string | Sí | Ruta de importación de métodos de solicitud |
143
192
  | dataLevel | 'data' \| 'serve' \| 'axios' | Sí | Nivel de datos de retorno de interfaz |
144
193
  | formatting | object | No | Configuración de formateo de código |
145
- | headers | object | No | Configuración de encabezados de solicitud |
194
+ | headers | object | No | Configuración de encabezados de solicitud (migrado a `swaggerServers`, conservado para compatibilidad con configuración antigua) |
146
195
  | includeInterface | Array<{path: string, method: string}> | No | Interfaces incluidas: el archivo de lista de interfaces especificado por `saveApiListFolderPath` solo incluirá las interfaces en la lista, es mutuamente excluyente con el campo `excludeInterface` |
147
196
  | excludeInterface | Array<{path: string, method: string}> | No | Interfaces excluidas: el texto de lista de interfaces especificado por `saveApiListFolderPath` no incluirá las interfaces en esta lista, es mutuamente excluyente con `includeInterface` |
148
- | publicPrefix | string | No | Prefijo público en la ruta URL, por ejemplo: api/users, api/users/{id}, api es el prefijo público |
197
+ | publicPrefix | string | No | Prefijo público en la ruta URL (migrado a `swaggerServers`, conservado para compatibilidad con configuración antigua) |
198
+ | apiListFileName | string | No | Nombre del archivo de lista de API, el predeterminado es `index.ts` (migrado a `swaggerServers`, conservado para compatibilidad con configuración antigua) |
149
199
  | enmuConfig.erasableSyntaxOnly | boolean | Sí | Alineado con la opción `compilerOptions.erasableSyntaxOnly` de tsconfig.json. Cuando es `true`, genera objetos const en lugar de enum (solo sintaxis de tipo). Valor predeterminado: `false` |
150
200
  | parameterSeparator | string | No | Separador utilizado entre segmentos de ruta y parámetros al generar nombres de API y nombres de tipo. Por ejemplo, `/users/{userId}/posts` con el separador `'_'` genera `users_userId_posts_GET`. Valor predeterminado: `'_'` |
151
201
  | enmuConfig.varnames | string | No | Nombre del campo en el esquema Swagger que contiene los nombres personalizados de los miembros del enum. Valor predeterminado: `enum-varnames`. |
@@ -162,7 +212,8 @@ project/
162
212
  │ │ ├── models/ # Todos los archivos de definición de tipos (sin incluir tipos enum) no controlado
163
213
  │ │ ├── connectors/ # Definiciones de tipos API (archivos de definición de interfaz) no controlado
164
214
  │ └── api/ # Archivos de solicitud: especificado por el elemento de configuración saveApiListFolderPath
165
- │ │ └── index.ts # Lista de funciones de solicitud API no controlado
215
+ │ │ └── index.ts # Lista de funciones de solicitud API (servidor único o primer servidor) no controlado
216
+ │ │ └── op.ts # Archivos de lista de API de otros servidores cuando se usan múltiples servidores no controlado
166
217
  │ │ └── api-type.d.ts # Archivo de definición de tipos de solicitud no controlado
167
218
  │ │ └── config.ts # Solicitud, interceptor de respuesta, configuración de solicitud no controlado
168
219
  │ │ └── error-message.ts # Mensajes de error a nivel de sistema no controlado
@@ -306,12 +357,73 @@ Ejemplo de configuración: Esta configuración va en `an.config.json`
306
357
 
307
358
  Nota: `includeInterface` y `excludeInterface` no se pueden usar simultáneamente. Si se configuran ambos, se usará `includeInterface` con prioridad.
308
359
 
360
+ #### Soporte para Múltiples Servidores Swagger
361
+
362
+ La herramienta admite la configuración de múltiples servidores Swagger, cada servidor se puede configurar de forma independiente:
363
+
364
+ - **Un solo servidor**: `swaggerServers` se puede completar directamente como objeto
365
+ - **Múltiples servidores**: `swaggerServers` usa formato de array, cada servidor debe configurar un `apiListFileName` único
366
+
367
+ **Cómo funciona:**
368
+
369
+ - Las API del primer servidor se generan en el `apiListFileName` especificado (el predeterminado es `index.ts`)
370
+ - Las API de los servidores posteriores se agregan a sus respectivos archivos `apiListFileName`
371
+ - Las definiciones de tipos y enumeraciones se fusionan en una carpeta unificada para evitar duplicados
372
+
373
+ **Ejemplo de configuración:**
374
+
375
+ ```json
376
+ {
377
+ "swaggerServers": [
378
+ {
379
+ "url": "http://api1.example.com/swagger.json",
380
+ "apiListFileName": "api1.ts",
381
+ "publicPrefix": "/api/v1",
382
+ "headers": {
383
+ "Authorization": "Bearer token1"
384
+ }
385
+ },
386
+ {
387
+ "url": "http://api2.example.com/swagger.json",
388
+ "apiListFileName": "api2.ts",
389
+ "publicPrefix": "/api/v2",
390
+ "headers": {
391
+ "Authorization": "Bearer token2"
392
+ }
393
+ }
394
+ ]
395
+ }
396
+ ```
397
+
398
+ **Notas sobre migración:**
399
+
400
+ - La configuración antigua (`swaggerJsonUrl`, `publicPrefix`, `headers`) sigue siendo compatible
401
+ - La herramienta detectará automáticamente la configuración antigua y sugerirá el método de migración
402
+ - Se recomienda migrar a la nueva configuración `swaggerServers` para obtener mayor flexibilidad
403
+
404
+ #### Soporte para Métodos HTTP
405
+
406
+ La herramienta admite los siguientes métodos HTTP:
407
+
408
+ - `GET` - Obtener recursos
409
+ - `POST` - Crear recursos
410
+ - `PUT` - Actualizar recursos (reemplazo completo)
411
+ - `PATCH` - Actualizar recursos (actualización parcial)
412
+ - `DELETE` - Eliminar recursos
413
+ - `OPTIONS` - Solicitud de preflight
414
+ - `HEAD` - Obtener encabezados de respuesta
415
+ - `SEARCH` - Solicitud de búsqueda
416
+
417
+ Todos los métodos admiten definiciones de tipos seguros para parámetros y respuestas.
418
+
309
419
  ### Notas
310
420
 
311
421
  1. Asegúrate de que la dirección del documento Swagger JSON sea accesible
312
422
  2. Las rutas en el archivo de configuración deben ser relativas al directorio raíz del proyecto
313
423
  3. Los archivos generados sobrescribirán archivos existentes con el mismo nombre
314
424
  4. Se recomienda incluir los archivos generados en el control de versiones
425
+ 5. Al usar múltiples servidores Swagger, asegúrate de que el `apiListFileName` de cada servidor sea único para evitar sobrescritura de archivos
426
+ 6. Al configurar múltiples servidores, las definiciones de tipos y enumeraciones se fusionarán, y pueden ocurrir conflictos si hay tipos con el mismo nombre de diferentes servidores
315
427
 
316
428
  ### Preguntas Frecuentes
317
429
 
package/README.fr.md CHANGED
@@ -21,6 +21,8 @@
21
21
  - 🎨 Support du formatage de code
22
22
  - ⚡️ Support du téléchargement de fichiers
23
23
  - 🛠 Options de génération de code configurables
24
+ - 🌐 Support de la configuration de plusieurs serveurs Swagger
25
+ - 🔧 Support des méthodes HTTP OPTIONS, HEAD, SEARCH, etc.
24
26
 
25
27
  - `anl lint`
26
28
  - 🔍 Configuration en un clic de divers outils lint
@@ -96,13 +98,20 @@ $ anl type
96
98
 
97
99
  #### Exemple de fichier de configuration
98
100
 
101
+ **Configuration d'un seul serveur Swagger :**
102
+
99
103
  ```json
100
104
  {
101
105
  "saveTypeFolderPath": "apps/types",
102
106
  "saveApiListFolderPath": "apps/api/",
103
107
  "saveEnumFolderPath": "apps/enums",
104
108
  "importEnumPath": "../../enums",
105
- "swaggerJsonUrl": "https://generator3.swagger.io/openapi.json",
109
+ "swaggerServers": {
110
+ "url": "https://generator3.swagger.io/openapi2.json",
111
+ "apiListFileName": "index.ts",
112
+ "publicPrefix": "api",
113
+ "headers": {}
114
+ },
106
115
  "requestMethodsImportPath": "./fetch",
107
116
  "dataLevel": "serve",
108
117
  "formatting": {
@@ -122,7 +131,6 @@ $ anl type
122
131
  "method": "post"
123
132
  }
124
133
  ],
125
- "publicPrefix": "api",
126
134
  "parameterSeparator": "_",
127
135
  "enmuConfig": {
128
136
  "erasableSyntaxOnly": false,
@@ -132,6 +140,42 @@ $ anl type
132
140
  }
133
141
  ```
134
142
 
143
+ **Configuration de plusieurs serveurs Swagger :**
144
+
145
+ ```json
146
+ {
147
+ "saveTypeFolderPath": "apps/types",
148
+ "saveApiListFolderPath": "apps/api/",
149
+ "saveEnumFolderPath": "apps/enums",
150
+ "importEnumPath": "../../enums",
151
+ "requestMethodsImportPath": "./fetch",
152
+ "dataLevel": "serve",
153
+ "formatting": {
154
+ "indentation": "\t",
155
+ "lineEnding": "\n"
156
+ },
157
+ "parameterSeparator": "_",
158
+ "enmuConfig": {
159
+ "erasableSyntaxOnly": false,
160
+ "varnames": "enum-varnames",
161
+ "comment": "enum-descriptions"
162
+ },
163
+ "swaggerServers": [
164
+ {
165
+ "url": "https://generator3.swagger.io/openapi1.json",
166
+ "apiListFileName": "op.ts",
167
+ "headers": {}
168
+ },
169
+ {
170
+ "url": "https://generator3.swagger.io/openapi2.json",
171
+ "apiListFileName": "index.ts",
172
+ "publicPrefix": "/api",
173
+ "headers": {}
174
+ }
175
+ ]
176
+ }
177
+ ```
178
+
135
179
  #### Explication des éléments de configuration
136
180
 
137
181
  | Élément de configuration | Type | Obligatoire | Description |
@@ -140,14 +184,20 @@ $ anl type
140
184
  | saveApiListFolderPath | string | Oui | Chemin de sauvegarde des fichiers de fonctions de requête API |
141
185
  | saveEnumFolderPath | string | Oui | Chemin de sauvegarde des fichiers de données enum |
142
186
  | importEnumPath | string | Oui | Chemin d'import enum (chemin des fichiers enum référencés dans apps/types/models/\*.ts) |
143
- | swaggerJsonUrl | string | Oui | Adresse du document Swagger JSON |
187
+ | swaggerJsonUrl | string | Non | Adresse du document Swagger JSON (migré vers `swaggerServers`, conservé pour compatibilité avec les anciennes configurations) **Ce champ sera supprimé dans les versions futures** |
188
+ | swaggerServers | object \| Array<object> | Non | Configuration des serveurs Swagger. Un seul serveur peut être directement rempli comme objet, plusieurs serveurs utilisent un tableau. Chaque serveur peut configurer `url`, `publicPrefix`, `apiListFileName`, `headers`<br />Ce champ correspond aux exemples de configuration d'un seul serveur Swagger et de plusieurs serveurs Swagger, veuillez faire défiler vers le haut pour voir |
189
+ | swaggerServers[].url | string | Oui | Adresse du document Swagger JSON |
190
+ | swaggerServers[].publicPrefix | string | Non | Préfixe commun sur le chemin URL, par exemple : api/users, api/users/{id}, api est le préfixe commun |
191
+ | swaggerServers[].apiListFileName | string | Non | Nom du fichier de liste API, par défaut `index.ts`. Lors de l'utilisation de plusieurs serveurs, le nom de fichier de chaque serveur doit être unique |
192
+ | swaggerServers[].headers | object | Non | Configuration des en-têtes de requête |
144
193
  | requestMethodsImportPath | string | Oui | Chemin d'import des méthodes de requête |
145
194
  | dataLevel | 'data' \| 'serve' \| 'axios' | Oui | Niveau de données retournées par l'interface |
146
195
  | formatting | object | Non | Configuration du formatage du code |
147
- | headers | object | Non | Configuration des en-têtes de requête |
196
+ | headers | object | Non | Configuration des en-têtes de requête (migré vers `swaggerServers`, conservé pour compatibilité avec les anciennes configurations) |
148
197
  | includeInterface | Array<{path: string, method: string}> | Non | Interfaces à inclure : Le fichier de liste d'interfaces spécifié par `saveApiListFolderPath` ne contiendra que les interfaces de la liste, mutuellement exclusif avec `excludeInterface` |
149
198
  | excludeInterface | Array<{path: string, method: string}> | Non | Interfaces à exclure : Le fichier de liste d'interfaces spécifié par `saveApiListFolderPath` ne contiendra pas les interfaces de cette liste, mutuellement exclusif avec `includeInterface` |
150
- | publicPrefix | string | Non | Préfixe commun sur le chemin URL, par exemple : api/users, api/users/{id}, api est le préfixe commun |
199
+ | publicPrefix | string | Non | Préfixe commun sur le chemin URL (migré vers `swaggerServers`, conservé pour compatibilité avec les anciennes configurations) |
200
+ | apiListFileName | string | Non | Nom du fichier de liste API, par défaut `index.ts` (migré vers `swaggerServers`, conservé pour compatibilité avec les anciennes configurations) |
151
201
  | enmuConfig.erasableSyntaxOnly | boolean | Oui | Doit être cohérent avec l'option `compilerOptions.erasableSyntaxOnly` de tsconfig.json. Si `true`, génère un objet const au lieu d'un enum (syntaxe de type uniquement). Valeur par défaut : `false` |
152
202
  | parameterSeparator | string | Non | Séparateur utilisé entre les segments de chemin et les paramètres lors de la génération des noms d'API et des noms de type. Par exemple, `/users/{userId}/posts` avec le séparateur `'_'` génère `users_userId_posts_GET`. Valeur par défaut : `'_'` |
153
203
  | enmuConfig.varnames | string | Non | Nom du champ dans le schéma Swagger contenant les noms personnalisés des membres d'enum. Valeur par défaut : `enum-varnames`. |
@@ -164,7 +214,8 @@ project/
164
214
  │ │ ├── models/ # Tous les fichiers de définition de types (excluant les types enum) non contrôlé
165
215
  │ │ ├── connectors/ # Définitions de types API (fichiers de définition d'interface) non contrôlé
166
216
  │ └── api/ # Fichiers de requête : Spécifié par l'élément de configuration saveApiListFolderPath
167
- │ │ └── index.ts # Liste des fonctions de requête API non contrôlé
217
+ │ │ └── index.ts # Liste des fonctions de requête API (serveur unique ou premier serveur) non contrôlé
218
+ │ │ └── op.ts # Fichier de liste API d'autres serveurs lors de l'utilisation de plusieurs serveurs non contrôlé
168
219
  │ │ └── api-type.d.ts # Fichier de définition de types de requête non contrôlé
169
220
  │ │ └── config.ts # Configuration de requête, interception de requête/réponse non contrôlé
170
221
  │ │ └── error-message.ts # Messages d'erreur au niveau système non contrôlé
@@ -308,12 +359,73 @@ Exemple de configuration : Cette configuration est dans `an.config.json`
308
359
 
309
360
  Note : `includeInterface` et `excludeInterface` ne peuvent pas être utilisés simultanément, si les deux sont configurés, `includeInterface` sera prioritaire.
310
361
 
362
+ #### Support de plusieurs serveurs Swagger
363
+
364
+ L'outil prend en charge la configuration de plusieurs serveurs Swagger, chaque serveur peut être configuré indépendamment :
365
+
366
+ - **Un seul serveur** : `swaggerServers` peut être directement rempli comme objet
367
+ - **Plusieurs serveurs** : `swaggerServers` utilise un tableau, chaque serveur doit configurer un `apiListFileName` unique
368
+
369
+ **Principe de fonctionnement :**
370
+
371
+ - Les API du premier serveur seront générées dans le `apiListFileName` spécifié (par défaut `index.ts`)
372
+ - Les API des serveurs suivants seront ajoutées dans leurs propres fichiers `apiListFileName`
373
+ - Les définitions de types et les enum seront fusionnées dans un dossier unifié pour éviter les doublons
374
+
375
+ **Exemple de configuration :**
376
+
377
+ ```json
378
+ {
379
+ "swaggerServers": [
380
+ {
381
+ "url": "http://api1.example.com/swagger.json",
382
+ "apiListFileName": "api1.ts",
383
+ "publicPrefix": "/api/v1",
384
+ "headers": {
385
+ "Authorization": "Bearer token1"
386
+ }
387
+ },
388
+ {
389
+ "url": "http://api2.example.com/swagger.json",
390
+ "apiListFileName": "api2.ts",
391
+ "publicPrefix": "/api/v2",
392
+ "headers": {
393
+ "Authorization": "Bearer token2"
394
+ }
395
+ }
396
+ ]
397
+ }
398
+ ```
399
+
400
+ **Instructions de migration :**
401
+
402
+ - Les anciennes configurations (`swaggerJsonUrl`, `publicPrefix`, `headers`) restent compatibles
403
+ - L'outil détectera automatiquement les anciennes configurations et suggérera des méthodes de migration
404
+ - Il est recommandé de migrer vers la nouvelle configuration `swaggerServers` pour une meilleure flexibilité
405
+
406
+ #### Support des méthodes HTTP
407
+
408
+ L'outil prend en charge les méthodes HTTP suivantes :
409
+
410
+ - `GET` - Obtenir des ressources
411
+ - `POST` - Créer des ressources
412
+ - `PUT` - Mettre à jour des ressources (remplacement complet)
413
+ - `PATCH` - Mettre à jour des ressources (mise à jour partielle)
414
+ - `DELETE` - Supprimer des ressources
415
+ - `OPTIONS` - Requête de pré-vérification
416
+ - `HEAD` - Obtenir les en-têtes de réponse
417
+ - `SEARCH` - Requête de recherche
418
+
419
+ Toutes les méthodes prennent en charge les définitions de types sécurisées pour les paramètres et les types de réponse.
420
+
311
421
  ### Remarques
312
422
 
313
423
  1. Assurez-vous que l'adresse du document Swagger JSON est accessible
314
424
  2. Les chemins dans le fichier de configuration doivent être relatifs au répertoire racine du projet
315
425
  3. Les fichiers générés écraseront les fichiers existants du même nom
316
426
  4. Il est recommandé d'ajouter les fichiers générés au contrôle de version
427
+ 5. Lors de l'utilisation de plusieurs serveurs Swagger, assurez-vous que le `apiListFileName` de chaque serveur est unique pour éviter l'écrasement des fichiers
428
+ 6. Lors de la configuration de plusieurs serveurs, les définitions de types et les enum seront fusionnées, si différents serveurs ont des types du même nom, des conflits peuvent survenir
317
429
 
318
430
  ### Problèmes courants
319
431