anl 25.1203.0 → 26.105.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,30 +131,77 @@ $ anl type
122
131
  "method": "post"
123
132
  }
124
133
  ],
125
- "publicPrefix": "api",
126
- "erasableSyntaxOnly": false,
127
- "parameterSeparator": "_"
134
+ "parameterSeparator": "_",
135
+ "enmuConfig": {
136
+ "erasableSyntaxOnly": false,
137
+ "varnames": "enum-varnames",
138
+ "comment": "enum-descriptions"
139
+ }
140
+ }
141
+ ```
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
+ ]
128
176
  }
129
177
  ```
130
178
 
131
179
  #### شرح عناصر التكوين
132
180
 
133
- | عنصر التكوين | النوع | مطلوب | الوصف |
134
- | ------------------------ | ------------------------------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
135
- | saveTypeFolderPath | string | نعم | مسار حفظ ملفات تعريف الأنواع |
136
- | saveApiListFolderPath | string | نعم | مسار حفظ ملفات دوال طلبات API |
137
- | saveEnumFolderPath | string | نعم | مسار حفظ ملفات بيانات التعداد |
138
- | importEnumPath | string | نعم | مسار استيراد التعداد (مسار ملف enum المُشار إليه في apps/types/models/\*.ts) |
139
- | swaggerJsonUrl | string | نعم | عنوان مستند Swagger JSON |
140
- | requestMethodsImportPath | string | نعم | مسار استيراد طرق الطلب |
141
- | dataLevel | 'data' \| 'serve' \| 'axios' | نعم | مستوى بيانات استجابة الواجهة |
142
- | formatting | object | لا | تكوين تنسيق الكود |
143
- | headers | object | لا | تكوين رأس الطلب |
144
- | includeInterface | Array<{path: string, method: string}> | لا | الواجهات المضمنة: ملف قائمة الواجهات المحدد بـ `saveApiListFolderPath` سيتضمن فقط الواجهات في القائمة، متعارض مع حقل `excludeInterface` |
145
- | excludeInterface | Array<{path: string, method: string}> | لا | الواجهات المستبعدة: نص قائمة الواجهات المحدد بـ `saveApiListFolderPath` لن يتضمن الواجهات في هذه القائمة، متعارض مع `includeInterface` |
146
- | publicPrefix | string | لا | البادئة العامة على مسار url، على سبيل المثال: api/users، api/users/{id}، api هي البادئة العامة |
147
- | erasableSyntaxOnly | boolean | نعم | يتوافق مع خيار `compilerOptions.erasableSyntaxOnly` في tsconfig.json. عندما يكون `true`، يتم إنشاء كائن const بدلاً من enum (صيغة النوع فقط). القيمة الافتراضية: `false` |
148
- | parameterSeparator | string | لا | الفاصل المستخدم بين أجزاء المسار والمعاملات عند إنشاء أسماء API وأسماء الأنواع. على سبيل المثال، `/users/{userId}/posts` مع الفاصل `'_'` ينشئ `users_userId_posts_GET`. القيمة الافتراضية: `'_'` |
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`. |
149
205
 
150
206
  #### العلاقة بين عناصر التكوين والملفات المولدة
151
207
 
@@ -158,7 +214,8 @@ project/
158
214
  │ │ ├── models/ # جميع ملفات تعريف الأنواع (باستثناء أنواع التعداد) غير مُتحكم به
159
215
  │ │ ├── connectors/ # تعريفات نوع API (ملفات تعريف الواجهة) غير مُتحكم به
160
216
  │ └── api/ # ملف الطلب: محدد بواسطة عنصر التكوين saveApiListFolderPath
161
- │ │ └── index.ts # قائمة دوال طلبات API غير مُتحكم به
217
+ │ │ └── index.ts # قائمة دوال طلبات API (خادم واحد أو الخادم الأول) غير مُتحكم به
218
+ │ │ └── op.ts # ملفات قائمة API للخوادم الأخرى عند استخدام خوادم متعددة غير مُتحكم به
162
219
  │ │ └── api-type.d.ts # ملف تعريف نوع الطلب غير مُتحكم به
163
220
  │ │ └── config.ts # الطلب، اعتراض الاستجابة، تكوين الطلب غير مُتحكم به
164
221
  │ │ └── error-message.ts # رسائل خطأ على مستوى النظام غير مُتحكم به
@@ -207,9 +264,9 @@ export const userDetailGet = (params: UserDetail_GET.Query) => GET<UserDetail_GE
207
264
 
208
265
  #### توليد التعداد
209
266
 
210
- تدعم الأداة وضعين لتوليد التعداد، يتم التحكم فيهما من خلال تكوين `erasableSyntaxOnly`:
267
+ تدعم الأداة وضعين لتوليد التعداد، يتم التحكم فيهما من خلال تكوين `enmuConfig.erasableSyntaxOnly`:
211
268
 
212
- **وضع التعداد التقليدي** (`erasableSyntaxOnly: false`، القيمة الافتراضية):
269
+ **وضع التعداد التقليدي** (`enmuConfig.erasableSyntaxOnly: false`، القيمة الافتراضية):
213
270
 
214
271
  ```typescript
215
272
  export enum Status {
@@ -219,7 +276,7 @@ export enum Status {
219
276
  }
220
277
  ```
221
278
 
222
- **وضع الكائن الثابت** (`erasableSyntaxOnly: true`):
279
+ **وضع الكائن الثابت** (`enmuConfig.erasableSyntaxOnly: true`):
223
280
 
224
281
  ```typescript
225
282
  export const Status = {
@@ -302,12 +359,73 @@ export const uploadFile = (params: UploadFile.Body) =>
302
359
 
303
360
  ملاحظة: لا يمكن استخدام `includeInterface` و `excludeInterface` في نفس الوقت، إذا تم تكوينهما معًا، سيتم إعطاء الأولوية لـ `includeInterface`.
304
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
+
305
421
  ### ملاحظات
306
422
 
307
423
  1. تأكد من إمكانية الوصول إلى عنوان مستند Swagger JSON
308
424
  2. يجب أن تكون المسارات في ملف التكوين نسبية إلى الدليل الجذر للمشروع
309
425
  3. ستستبدل الملفات المولدة الملفات الموجودة بنفس الاسم
310
426
  4. يُنصح بإضافة الملفات المولدة إلى التحكم في الإصدار
427
+ 5. عند استخدام خوادم Swagger متعددة، تأكد من أن `apiListFileName` لكل خادم فريد لتجنب استبدال الملفات
428
+ 6. عند تكوين خوادم متعددة، سيتم دمج تعريفات الأنواع والتعدادات، وقد تحدث تعارضات إذا كانت هناك أنواع بنفس الاسم من خوادم مختلفة
311
429
 
312
430
  ### الأسئلة الشائعة
313
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,30 +129,77 @@ $ anl type
120
129
  "method": "post"
121
130
  }
122
131
  ],
123
- "publicPrefix": "api",
124
- "erasableSyntaxOnly": false,
125
- "parameterSeparator": "_"
132
+ "parameterSeparator": "_",
133
+ "enmuConfig": {
134
+ "erasableSyntaxOnly": false,
135
+ "varnames": "enum-varnames",
136
+ "comment": "enum-descriptions"
137
+ }
138
+ }
139
+ ```
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
+ ]
126
174
  }
127
175
  ```
128
176
 
129
177
  #### Descripción de Elementos de Configuración
130
178
 
131
- | Elemento de Configuración | Tipo | Requerido | Descripción |
132
- | ------------------------- | ------------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
133
- | saveTypeFolderPath | string | Sí | Ruta de guardado de archivos de definición de tipos |
134
- | saveApiListFolderPath | string | Sí | Ruta de guardado de archivos de funciones de solicitud API |
135
- | saveEnumFolderPath | string | Sí | Ruta de guardado de archivos de datos enum |
136
- | importEnumPath | string | Sí | Ruta de importación de enum (ruta de referencia de archivos enum en apps/types/models/\*.ts) |
137
- | swaggerJsonUrl | string | | Dirección del documento Swagger JSON |
138
- | requestMethodsImportPath | string | | Ruta de importación de métodos de solicitud |
139
- | dataLevel | 'data' \| 'serve' \| 'axios' | Sí | Nivel de datos de retorno de interfaz |
140
- | formatting | object | No | Configuración de formateo de código |
141
- | headers | object | No | Configuración de encabezados de solicitud |
142
- | 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` |
143
- | 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` |
144
- | publicPrefix | string | No | Prefijo público en la ruta URL, por ejemplo: api/users, api/users/{id}, api es el prefijo público |
145
- | erasableSyntaxOnly | boolean | | 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` |
146
- | 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: `'_'` |
179
+ | Elemento de Configuración | Tipo | Requerido | Descripción |
180
+ | ------------------------------ | ------------------------------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
181
+ | saveTypeFolderPath | string | Sí | Ruta de guardado de archivos de definición de tipos |
182
+ | saveApiListFolderPath | string | Sí | Ruta de guardado de archivos de funciones de solicitud API |
183
+ | saveEnumFolderPath | string | Sí | Ruta de guardado de archivos de datos enum |
184
+ | importEnumPath | string | Sí | Ruta de importación de enum (ruta de referencia de archivos enum en apps/types/models/\*.ts) |
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 |
191
+ | requestMethodsImportPath | string | | Ruta de importación de métodos de solicitud |
192
+ | dataLevel | 'data' \| 'serve' \| 'axios' | Sí | Nivel de datos de retorno de interfaz |
193
+ | formatting | object | No | Configuración de formateo de código |
194
+ | headers | object | No | Configuración de encabezados de solicitud (migrado a `swaggerServers`, conservado para compatibilidad con configuración antigua) |
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` |
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` |
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) |
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` |
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: `'_'` |
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`. |
202
+ | enmuConfig.comment | string | No | Nombre del campo en el esquema Swagger que contiene las descripciones de los miembros del enum (se usa para generar comentarios). Valor predeterminado: `enum-descriptions`. |
147
203
 
148
204
  #### Relación entre Elementos de Configuración y Archivos Generados
149
205
 
@@ -156,7 +212,8 @@ project/
156
212
  │ │ ├── models/ # Todos los archivos de definición de tipos (sin incluir tipos enum) no controlado
157
213
  │ │ ├── connectors/ # Definiciones de tipos API (archivos de definición de interfaz) no controlado
158
214
  │ └── api/ # Archivos de solicitud: especificado por el elemento de configuración saveApiListFolderPath
159
- │ │ └── 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
160
217
  │ │ └── api-type.d.ts # Archivo de definición de tipos de solicitud no controlado
161
218
  │ │ └── config.ts # Solicitud, interceptor de respuesta, configuración de solicitud no controlado
162
219
  │ │ └── error-message.ts # Mensajes de error a nivel de sistema no controlado
@@ -205,9 +262,9 @@ export const userDetailGet = (params: UserDetail_GET.Query) => GET<UserDetail_GE
205
262
 
206
263
  #### Generación de Enumeraciones
207
264
 
208
- La herramienta admite dos modos de generación de enumeraciones, controlados mediante la configuración `erasableSyntaxOnly`:
265
+ La herramienta admite dos modos de generación de enumeraciones, controlados mediante la configuración `enmuConfig.erasableSyntaxOnly`:
209
266
 
210
- **Modo de enumeración tradicional** (`erasableSyntaxOnly: false`, valor predeterminado):
267
+ **Modo de enumeración tradicional** (`enmuConfig.erasableSyntaxOnly: false`, valor predeterminado):
211
268
 
212
269
  ```typescript
213
270
  export enum Status {
@@ -217,7 +274,7 @@ export enum Status {
217
274
  }
218
275
  ```
219
276
 
220
- **Modo de objeto constante** (`erasableSyntaxOnly: true`):
277
+ **Modo de objeto constante** (`enmuConfig.erasableSyntaxOnly: true`):
221
278
 
222
279
  ```typescript
223
280
  export const Status = {
@@ -300,12 +357,73 @@ Ejemplo de configuración: Esta configuración va en `an.config.json`
300
357
 
301
358
  Nota: `includeInterface` y `excludeInterface` no se pueden usar simultáneamente. Si se configuran ambos, se usará `includeInterface` con prioridad.
302
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
+
303
419
  ### Notas
304
420
 
305
421
  1. Asegúrate de que la dirección del documento Swagger JSON sea accesible
306
422
  2. Las rutas en el archivo de configuración deben ser relativas al directorio raíz del proyecto
307
423
  3. Los archivos generados sobrescribirán archivos existentes con el mismo nombre
308
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
309
427
 
310
428
  ### Preguntas Frecuentes
311
429