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 +133 -21
- package/README.es.md +118 -6
- package/README.fr.md +118 -6
- package/README.jp.md +132 -20
- package/README.md +133 -21
- package/README.ru.md +133 -21
- package/README.zh.md +133 -21
- 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,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
|
|
140
|
-
| saveApiListFolderPath
|
|
141
|
-
| saveEnumFolderPath
|
|
142
|
-
| importEnumPath
|
|
143
|
-
| swaggerJsonUrl
|
|
144
|
-
|
|
|
145
|
-
|
|
|
146
|
-
|
|
|
147
|
-
|
|
|
148
|
-
|
|
|
149
|
-
|
|
|
150
|
-
|
|
|
151
|
-
|
|
|
152
|
-
|
|
|
153
|
-
|
|
|
154
|
-
|
|
|
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
|
-
"
|
|
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 |
|
|
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
|
|
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
|
-
"
|
|
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 |
|
|
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
|
|
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
|
|