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 +142 -24
- package/README.es.md +142 -24
- package/README.fr.md +142 -24
- package/README.jp.md +142 -24
- package/README.md +142 -24
- package/README.ru.md +142 -24
- package/README.zh.md +142 -24
- package/lib/ajax-config/error-message.ts +0 -6
- package/lib/ajax-config/fetch.ts +74 -1
- package/lib/git-local-config/.commit-type.cjs +0 -1
- package/lib/package.json.js +1 -1
- package/lib/src/build-type/core/components.js +1 -1
- package/lib/src/build-type/core/get-data.js +1 -1
- package/lib/src/build-type/core/path.js +1 -1
- package/lib/src/build-type/index.js +1 -1
- package/package.json +2 -2
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
|
-
"
|
|
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
|
-
"
|
|
126
|
-
"
|
|
127
|
-
|
|
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
|
|
136
|
-
| saveApiListFolderPath
|
|
137
|
-
| saveEnumFolderPath
|
|
138
|
-
| importEnumPath
|
|
139
|
-
| swaggerJsonUrl
|
|
140
|
-
|
|
|
141
|
-
|
|
|
142
|
-
|
|
|
143
|
-
|
|
|
144
|
-
|
|
|
145
|
-
|
|
|
146
|
-
|
|
|
147
|
-
|
|
|
148
|
-
|
|
|
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
|
-
"
|
|
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
|
-
"
|
|
124
|
-
"
|
|
125
|
-
|
|
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
|
|
132
|
-
|
|
|
133
|
-
| saveTypeFolderPath
|
|
134
|
-
| saveApiListFolderPath
|
|
135
|
-
| saveEnumFolderPath
|
|
136
|
-
| importEnumPath
|
|
137
|
-
| swaggerJsonUrl
|
|
138
|
-
|
|
|
139
|
-
|
|
|
140
|
-
|
|
|
141
|
-
|
|
|
142
|
-
|
|
|
143
|
-
|
|
|
144
|
-
|
|
|
145
|
-
|
|
|
146
|
-
|
|
|
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 | Sí | 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
|
|