anl 1.7.1 → 1.7.2

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.
Files changed (142) hide show
  1. package/README.ar.md +182 -182
  2. package/README.es.md +180 -182
  3. package/README.fr.md +182 -182
  4. package/README.jp.md +181 -181
  5. package/README.md +162 -164
  6. package/README.ru.md +176 -176
  7. package/README.zh.md +89 -75
  8. package/package.json +1 -1
  9. package/lib/_virtual/argument.js +0 -1
  10. package/lib/_virtual/command.js +0 -1
  11. package/lib/_virtual/error.js +0 -1
  12. package/lib/_virtual/help.js +0 -1
  13. package/lib/_virtual/index.js +0 -1
  14. package/lib/_virtual/index2.js +0 -1
  15. package/lib/_virtual/option.js +0 -1
  16. package/lib/_virtual/suggestSimilar.js +0 -1
  17. package/lib/ajax-config/api-type.d.ts +0 -20
  18. package/lib/ajax-config/config.ts +0 -81
  19. package/lib/ajax-config/error-message.ts +0 -59
  20. package/lib/ajax-config/fetch.ts +0 -128
  21. package/lib/data/open-api.json.js +0 -1
  22. package/lib/git-local-config/.commit-type.cjs +0 -89
  23. package/lib/git-local-config/.gitattributes +0 -2
  24. package/lib/git-local-config/.gitconfig +0 -18
  25. package/lib/git-local-config/.githooks/commit-msg +0 -95
  26. package/lib/git-local-config/.githooks/get-commit-emoji.cjs +0 -16
  27. package/lib/git-local-config/.gitscripts/get-branch-types.cjs +0 -43
  28. package/lib/git-local-config/.gitscripts/get-branch-types.js +0 -43
  29. package/lib/git-local-config/.gitscripts/random-branch.bat +0 -97
  30. package/lib/git-local-config/.gitscripts/random-branch.sh +0 -102
  31. package/lib/node_modules/@inquirer/checkbox/dist/esm/index.mjs.js +0 -1
  32. package/lib/node_modules/@inquirer/confirm/dist/esm/index.mjs.js +0 -1
  33. package/lib/node_modules/@inquirer/core/dist/esm/lib/Separator.mjs.js +0 -1
  34. package/lib/node_modules/@inquirer/core/dist/esm/lib/create-prompt.mjs.js +0 -1
  35. package/lib/node_modules/@inquirer/core/dist/esm/lib/errors.mjs.js +0 -1
  36. package/lib/node_modules/@inquirer/core/dist/esm/lib/hook-engine.mjs.js +0 -1
  37. package/lib/node_modules/@inquirer/core/dist/esm/lib/key.mjs.js +0 -1
  38. package/lib/node_modules/@inquirer/core/dist/esm/lib/make-theme.mjs.js +0 -1
  39. package/lib/node_modules/@inquirer/core/dist/esm/lib/pagination/lines.mjs.js +0 -1
  40. package/lib/node_modules/@inquirer/core/dist/esm/lib/pagination/position.mjs.js +0 -1
  41. package/lib/node_modules/@inquirer/core/dist/esm/lib/pagination/use-pagination.mjs.js +0 -1
  42. package/lib/node_modules/@inquirer/core/dist/esm/lib/promise-polyfill.mjs.js +0 -1
  43. package/lib/node_modules/@inquirer/core/dist/esm/lib/screen-manager.mjs.js +0 -1
  44. package/lib/node_modules/@inquirer/core/dist/esm/lib/theme.mjs.js +0 -1
  45. package/lib/node_modules/@inquirer/core/dist/esm/lib/use-effect.mjs.js +0 -1
  46. package/lib/node_modules/@inquirer/core/dist/esm/lib/use-keypress.mjs.js +0 -1
  47. package/lib/node_modules/@inquirer/core/dist/esm/lib/use-memo.mjs.js +0 -1
  48. package/lib/node_modules/@inquirer/core/dist/esm/lib/use-prefix.mjs.js +0 -1
  49. package/lib/node_modules/@inquirer/core/dist/esm/lib/use-ref.mjs.js +0 -1
  50. package/lib/node_modules/@inquirer/core/dist/esm/lib/use-state.mjs.js +0 -1
  51. package/lib/node_modules/@inquirer/core/dist/esm/lib/utils.mjs.js +0 -1
  52. package/lib/node_modules/@inquirer/core/node_modules/signal-exit/dist/mjs/index.js +0 -1
  53. package/lib/node_modules/@inquirer/core/node_modules/signal-exit/dist/mjs/signals.js +0 -1
  54. package/lib/node_modules/@inquirer/editor/dist/esm/index.mjs.js +0 -1
  55. package/lib/node_modules/@inquirer/expand/dist/esm/index.mjs.js +0 -1
  56. package/lib/node_modules/@inquirer/figures/dist/esm/index.js +0 -1
  57. package/lib/node_modules/@inquirer/input/dist/esm/index.mjs.js +0 -1
  58. package/lib/node_modules/@inquirer/number/dist/esm/index.mjs.js +0 -1
  59. package/lib/node_modules/@inquirer/password/dist/esm/index.mjs.js +0 -1
  60. package/lib/node_modules/@inquirer/rawlist/dist/esm/index.mjs.js +0 -1
  61. package/lib/node_modules/@inquirer/search/dist/esm/index.mjs.js +0 -1
  62. package/lib/node_modules/@inquirer/select/dist/esm/index.mjs.js +0 -1
  63. package/lib/node_modules/commander/esm.mjs.js +0 -1
  64. package/lib/node_modules/commander/index.js +0 -1
  65. package/lib/node_modules/commander/lib/argument.js +0 -1
  66. package/lib/node_modules/commander/lib/command.js +0 -1
  67. package/lib/node_modules/commander/lib/error.js +0 -1
  68. package/lib/node_modules/commander/lib/help.js +0 -1
  69. package/lib/node_modules/commander/lib/option.js +0 -1
  70. package/lib/node_modules/commander/lib/suggestSimilar.js +0 -1
  71. package/lib/node_modules/inquirer/dist/esm/index.mjs.js +0 -1
  72. package/lib/node_modules/inquirer/dist/esm/ui/prompt.mjs.js +0 -1
  73. package/lib/node_modules/run-async/index.js +0 -1
  74. package/lib/node_modules/rxjs/dist/esm5/internal/Observable.js +0 -1
  75. package/lib/node_modules/rxjs/dist/esm5/internal/Subscriber.js +0 -1
  76. package/lib/node_modules/rxjs/dist/esm5/internal/Subscription.js +0 -1
  77. package/lib/node_modules/rxjs/dist/esm5/internal/config.js +0 -1
  78. package/lib/node_modules/rxjs/dist/esm5/internal/lastValueFrom.js +0 -1
  79. package/lib/node_modules/rxjs/dist/esm5/internal/observable/defer.js +0 -1
  80. package/lib/node_modules/rxjs/dist/esm5/internal/observable/empty.js +0 -1
  81. package/lib/node_modules/rxjs/dist/esm5/internal/observable/from.js +0 -1
  82. package/lib/node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js +0 -1
  83. package/lib/node_modules/rxjs/dist/esm5/internal/observable/of.js +0 -1
  84. package/lib/node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js +0 -1
  85. package/lib/node_modules/rxjs/dist/esm5/internal/operators/concatMap.js +0 -1
  86. package/lib/node_modules/rxjs/dist/esm5/internal/operators/filter.js +0 -1
  87. package/lib/node_modules/rxjs/dist/esm5/internal/operators/map.js +0 -1
  88. package/lib/node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js +0 -1
  89. package/lib/node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js +0 -1
  90. package/lib/node_modules/rxjs/dist/esm5/internal/operators/observeOn.js +0 -1
  91. package/lib/node_modules/rxjs/dist/esm5/internal/operators/reduce.js +0 -1
  92. package/lib/node_modules/rxjs/dist/esm5/internal/operators/scanInternals.js +0 -1
  93. package/lib/node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js +0 -1
  94. package/lib/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js +0 -1
  95. package/lib/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js +0 -1
  96. package/lib/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js +0 -1
  97. package/lib/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js +0 -1
  98. package/lib/node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js +0 -1
  99. package/lib/node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js +0 -1
  100. package/lib/node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js +0 -1
  101. package/lib/node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js +0 -1
  102. package/lib/node_modules/rxjs/dist/esm5/internal/symbol/iterator.js +0 -1
  103. package/lib/node_modules/rxjs/dist/esm5/internal/symbol/observable.js +0 -1
  104. package/lib/node_modules/rxjs/dist/esm5/internal/util/EmptyError.js +0 -1
  105. package/lib/node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js +0 -1
  106. package/lib/node_modules/rxjs/dist/esm5/internal/util/args.js +0 -1
  107. package/lib/node_modules/rxjs/dist/esm5/internal/util/arrRemove.js +0 -1
  108. package/lib/node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js +0 -1
  109. package/lib/node_modules/rxjs/dist/esm5/internal/util/errorContext.js +0 -1
  110. package/lib/node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js +0 -1
  111. package/lib/node_modules/rxjs/dist/esm5/internal/util/identity.js +0 -1
  112. package/lib/node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js +0 -1
  113. package/lib/node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js +0 -1
  114. package/lib/node_modules/rxjs/dist/esm5/internal/util/isFunction.js +0 -1
  115. package/lib/node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js +0 -1
  116. package/lib/node_modules/rxjs/dist/esm5/internal/util/isIterable.js +0 -1
  117. package/lib/node_modules/rxjs/dist/esm5/internal/util/isObservable.js +0 -1
  118. package/lib/node_modules/rxjs/dist/esm5/internal/util/isPromise.js +0 -1
  119. package/lib/node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js +0 -1
  120. package/lib/node_modules/rxjs/dist/esm5/internal/util/isScheduler.js +0 -1
  121. package/lib/node_modules/rxjs/dist/esm5/internal/util/lift.js +0 -1
  122. package/lib/node_modules/rxjs/dist/esm5/internal/util/noop.js +0 -1
  123. package/lib/node_modules/rxjs/dist/esm5/internal/util/pipe.js +0 -1
  124. package/lib/node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js +0 -1
  125. package/lib/node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js +0 -1
  126. package/lib/node_modules/tslib/tslib.es6.js +0 -1
  127. package/lib/package.json.js +0 -1
  128. package/lib/src/build-type/core/components.js +0 -1
  129. package/lib/src/build-type/core/get-data.js +0 -1
  130. package/lib/src/build-type/core/path.js +0 -1
  131. package/lib/src/build-type/index.js +0 -1
  132. package/lib/src/build-type/tools/index.js +0 -1
  133. package/lib/src/git-local-config/index.js +0 -1
  134. package/lib/src/git-local-config/utils.js +0 -1
  135. package/lib/src/index.js +0 -1
  136. package/lib/src/standard/const.js +0 -1
  137. package/lib/src/standard/install-commitlint.js +0 -1
  138. package/lib/src/standard/install-eslint.js +0 -1
  139. package/lib/src/standard/lint-init.js +0 -1
  140. package/lib/src/standard/prettier.js +0 -1
  141. package/lib/src/standard/vscode.js +0 -1
  142. package/lib/src/utils/index.js +0 -1
package/README.ar.md CHANGED
@@ -2,75 +2,99 @@
2
2
 
3
3
  [简体中文](./README.zh.md) | [English](./README.md) | [Español](./README.es.md) | العربية | [Français](./README.fr.md) | [Русский](./README.ru.md) | [日本語](./README.jp.md)
4
4
 
5
- ## الوصف
5
+ # نظرة عامة على الوظائف
6
6
 
7
- an-cli هو أداة سطر أوامر للواجهات الأمامية وتوفر الأوامر التالية:
8
-
9
- > `anl type`: أداة CLI تُولّد تلقائيًا تعريفات الأنواع TypeScript ودوال طلبات API اعتمادًا على ملف Swagger/OpenAPI JSON.
10
-
11
- > `anl lint`: تُنشئ إعدادات ESLint وStylelint وPrettier وCommitLint وVSCode لمشاريع React أو Vue.
12
-
13
- > `anl git`: تُنشئ إعدادات Git محلية تشمل فروع gitflow القياسية وموضوعات رسائل الالتزام وأوامر Git مخصصة.
7
+ > an-cli هو أداة سطر أوامر للواجهة الأمامية، يتضمن الأوامر التالية:
8
+ >
9
+ > - أمر `anl type`: أداة سطر أوامر لتوليد تعريفات أنواع TypeScript ودوال طلبات API تلقائيًا بناءً على Swagger JSON.
10
+ > - أمر `anl lint`: توليد تكوينات eslint و stylelint و prettier و commitLint و VSCode ذات الصلة لمشاريع react أو vue
11
+ > - أمر `anl git`: توليد تكوين git المحلي، مع وظائف اختيارية: إنشاء فروع gitflow القياسية، موضوعات رسائل git commit، تكوين أوامر git المخصصة
14
12
 
15
- ## الميزات
13
+ # الميزات الرئيسية
16
14
 
17
15
  - `anl type`
18
- - 🚀 تحليل تلقائي لملفات Swagger JSON
19
- - 📦 توليد ملفات تعريف الأنواع TypeScript
20
- - 🔄 توليد دوال طلبات API آمنة الأنواع
21
- - 🎯 دعم معاملات المسار والاستعلام ومتن الطلب
22
- - 📝 توليد تلقائي لتعريفات التعدادات
23
- - 🎨 دعم تنسيق الشيفرة
24
- - ⚡️ دعم رفع الملفات
25
- - 🛠 خيارات توليد قابلة للتهيئة
16
+ - 🚀 تحليل مستندات Swagger JSON تلقائيًا
17
+ - 📦 توليد ملفات تعريف أنواع TypeScript
18
+ - 🔄 توليد دوال طلبات API آمنة من حيث الأنواع
19
+ - 🎯 دعم معاملات المسار ومعاملات الاستعلام وجسم الطلب
20
+ - 📝 توليد تعريفات أنواع التعداد تلقائيًا
21
+ - 🎨 دعم تنسيق الكود
22
+ - ⚡️ دعم تحميل الملفات
23
+ - 🛠 خيارات توليد كود قابلة للتكوين
26
24
 
27
25
  - `anl lint`
28
- - 🔍 إعداد أدوات الفحص البرمجي بنقرة واحدة
29
- - 🎨 تهيئة تلقائية لـ ESLint
30
- - 🎯 إعدادات Prettier
31
- - 🔄 معايير رسائل الالتزام عبر CommitLint
32
- - 📦 إعدادات محرر VSCode
26
+ - 🔍 تكوين أدوات lint المختلفة بنقرة واحدة
27
+ - 🎨 أتمتة تكوين ESLint
28
+ - 🎯 تكوين تنسيق Prettier
29
+ - 🔄 معيار التزام CommitLint
30
+ - 📦 تكوين محرر VSCode
33
31
 
34
- ## التثبيت
32
+ - `anl git`
33
+ - 🔍 تثبيت اختياري لوظائف متعددة
34
+ - 🎨 إنشاء فروع git flow القياسية
35
+ - 🎯 تعيين موضوع تلقائي يتوافق مع معيار CommitLint
36
+ - 🔄 توفير تكوين أوامر git المخصصة ونقطة الدخول
37
+ - 📦 توليد تلقائي بدون تكوين
35
38
 
36
- > ملاحظة
37
- >
38
- > يتطلب التثبيت عالميًا
39
+ # التثبيت
40
+
41
+ > [!NOTE]
42
+ > يتطلب التثبيت العام
39
43
 
40
44
  ```bash
41
45
  $ npm install anl -g
46
+ ```
42
47
 
48
+ ```bash
43
49
  $ yarn global add anl
44
50
  ```
45
51
 
46
- ## دليل الاستخدام
52
+ ```bash
53
+ $ pnpm add -g anl
54
+ ```
55
+
56
+ # تعليمات الاستخدام
47
57
 
48
- > تلميح
58
+ > [!TIP]
49
59
  >
50
- > 1. إن كانت هذه أول مرة، نفّذ الأمر أولًا لمعاينة التغييرات على مشروعك، ثم عدّل الإعدادات بحسب التوثيق وأعد التوليد حتى تصل للشكل المطلوب.
51
- > 2. أو اتبع الخطوات أدناه واحدة تلو الأخرى.
60
+ > 1. إذا كنت تستخدمه لأول مرة ولا تعرف ما هي النتائج، يُنصح بتنفيذ الأمر أولاً، ومراقبة التغييرات التي ستحدث في المشروع، ثم الجمع بين الوثائق، وتعديل التكوين بشكل أكبر، وإعادة التوليد، للوصول في النهاية إلى الشكل المثالي
61
+ > 2. أو اتبع الخطوات أدناه خطوة بخطوة، وستحصل على نتائج جيدة
62
+ > 3. يرجى تنفيذ أوامر `anl type` و `anl lint` و `anl git` في الدليل الجذر للمشروع
52
63
 
53
- # أمر anl type
64
+ ## تعليمات استخدام أمر `anl type`
54
65
 
55
- ## طريقة الاستخدام
66
+ - عند تنفيذ أمر `anl type` **للمرة الأولى**، سيتم _إنشاء تلقائي_ لملف تكوين باسم `an.config.json` في _الدليل الجذر للمشروع_ (يمكن أيضًا الإنشاء يدويًا) مع قالب تكوين أولي.
56
67
 
57
- 1. تنفيذ الأمر
68
+ - عند تنفيذ أمر `anl type`، سيتم البحث عن ملف تكوين `an.config.json` في الدليل الجذر لمشروع المستخدم، وقراءة معلومات التكوين الخاصة به، وتوليد تغليف axios المقابل، والتكوين، وقائمة الواجهات، وطلبات الواجهة وأنواع TS لمعاملات الطلب والاستجابة لكل واجهة
58
69
 
59
- ```bash
60
- $ anl type
61
- ```
70
+ - عناصر التكوين في ملف التكوين قابلة للتعديل بحرية
71
+
72
+ - حول ملف تكوين `an.config.json`
73
+ - يجب أن يكون ملف التكوين في الدليل الجذر للمشروع
74
+
75
+ - لا يمكن تغيير اسم ملف التكوين
76
+
77
+ - للحصول على وصف تفصيلي للمعاملات، يرجى الاطلاع على [شرح ملف التكوين بالتفصيل](#شرح-ملف-التكوين-بالتفصيل)
78
+
79
+ - قم بتحديث ملف التكوين وفقًا لاحتياجاتك، ثم قم بتنفيذ أمر `anl type` مرة أخرى، وسيتم التوليد وفقًا لمعلومات التكوين المحددة في ملف التكوين، وتوليد معلومات النوع المقابلة
80
+
81
+ - إذا كانت ملفات 'config.ts' و 'error-message.ts' و 'fetch.ts' و 'api-type.d.ts' موجودة، فلن يتم توليدها مرة أخرى
82
+
83
+ -
84
+
85
+ > [!NOTE]
86
+ >
87
+ > إذا لم تكن واضحًا بشأن هذه التكوينات، يمكنك أولاً تنفيذ أمر anl type لتوليد الأنواع أولاً، ثم فحص دليل المشروع، والجمع بين شرح عناصر التكوين، وتعديل عناصر التكوين، وإعادة التوليد، والتحقق تدريجيًا من وظيفة عناصر المشروع، وإكمال التكوين النهائي
62
88
 
63
- 2. شرح ملف الإعداد
89
+ ### طريقة الاستخدام
64
90
 
65
- - عند أول تشغيل لـ `anl type` سيتم إنشاء ملف إعداد باسم `an.config.json` تلقائيًا في جذر المشروع (يمكن إنشاؤه يدويًا أيضًا).
66
- - عند التشغيل سيبحث عن `an.config.json` في جذر المشروع ويقرأه ليُولّد غلاف Axios والإعدادات وقائمة الواجهات وأنواع الطلب/الاستجابة.
67
- - جميع الحقول قابلة للتعديل بحرية.
91
+ ```bash
92
+ $ anl lint
93
+ ```
68
94
 
69
- 3. مثال لملف `an.config.json`
95
+ ### شرح ملف التكوين بالتفصيل
70
96
 
71
- - يجب أن يكون ملف الإعداد في جذر المشروع.
72
- - لا يمكن تغيير اسم الملف.
73
- - تفاصيل المعاملات في قسم «خيارات الإعداد».
97
+ #### مثال على ملف التكوين
74
98
 
75
99
  ```json
76
100
  {
@@ -101,51 +125,46 @@ $ anl type
101
125
  }
102
126
  ```
103
127
 
104
- 3. حدّث الإعداد حسب الحاجة ثم نفّذ `anl type` مرة أخرى لتوليد الشيفرة وفق الإعدادات.
128
+ #### شرح عناصر التكوين
105
129
 
106
- ```bash
107
- $ anl type
108
- ```
130
+ | عنصر التكوين | النوع | مطلوب | الوصف |
131
+ | ------------------------ | ------------------------------------- | ----- | --------------------------------------------------------------------------------------------------------------------------------------- |
132
+ | saveTypeFolderPath | string | نعم | مسار حفظ ملفات تعريف الأنواع |
133
+ | saveApiListFolderPath | string | نعم | مسار حفظ ملفات دوال طلبات API |
134
+ | saveEnumFolderPath | string | نعم | مسار حفظ ملفات بيانات التعداد |
135
+ | importEnumPath | string | نعم | مسار استيراد التعداد (مسار ملف enum المُشار إليه في apps/types/models/\*.ts) |
136
+ | swaggerJsonUrl | string | نعم | عنوان مستند Swagger JSON |
137
+ | requestMethodsImportPath | string | نعم | مسار استيراد طرق الطلب |
138
+ | dataLevel | 'data' \| 'serve' \| 'axios' | نعم | مستوى بيانات استجابة الواجهة |
139
+ | formatting | object | لا | تكوين تنسيق الكود |
140
+ | headers | object | لا | تكوين رأس الطلب |
141
+ | includeInterface | Array<{path: string, method: string}> | لا | الواجهات المضمنة: ملف قائمة الواجهات المحدد بـ `saveApiListFolderPath` سيتضمن فقط الواجهات في القائمة، متعارض مع حقل `excludeInterface` |
142
+ | excludeInterface | Array<{path: string, method: string}> | لا | الواجهات المستبعدة: نص قائمة الواجهات المحدد بـ `saveApiListFolderPath` لن يتضمن الواجهات في هذه القائمة، متعارض مع `includeInterface` |
143
+ | publicPrefix | string | لا | البادئة العامة على مسار url، على سبيل المثال: api/users، api/users/{id}، api هي البادئة العامة |
109
144
 
110
- > ملاحظة
111
- >
112
- > إذا لم تكن متأكدًا من الخيارات، نفّذ `anl type` أولًا وعاين المخرجات ثم عدّل الخيارات وأعد التشغيل حتى تصل لما تريد.
145
+ #### العلاقة بين عناصر التكوين والملفات المولدة
113
146
 
114
- ## خيارات الإعداد
115
-
116
- | الخيار | النوع | إلزامي | الوصف |
117
- | ------------------------ | ------------------------------------- | ------ | ----------------------------- |
118
- | saveTypeFolderPath | string | نعم | مسار حفظ ملفات تعريف الأنواع |
119
- | saveApiListFolderPath | string | نعم | مسار حفظ ملفات دوال طلبات API |
120
- | saveEnumFolderPath | string | نعم | مسار حفظ ملفات التعدادات |
121
- | importEnumPath | string | نعم | مسار الاستيراد للتعدادات |
122
- | swaggerJsonUrl | string | نعم | رابط ملف Swagger JSON |
123
- | requestMethodsImportPath | string | نعم | مسار الاستيراد لطرائق الطلب |
124
- | dataLevel | 'data' \| 'serve' \| 'axios' | نعم | مستوى بيانات الاستجابة |
125
- | formatting | object | لا | إعدادات تنسيق الشيفرة |
126
- | headers | object | لا | ترويسات الطلب |
127
- | includeInterface | Array<{path: string, method: string}> | لا | توليد الواجهات المذكورة فقط |
128
- | excludeInterface | Array<{path: string, method: string}> | لا | استبعاد الواجهات المذكورة |
129
-
130
- ## بنية الملفات المولدة
131
-
132
- - يتم توليد البنية التالية اعتمادًا على ملف الإعداد.
147
+ > يتم إنشاء هيكل الملف بناءً على ملف التكوين، والمُشار إليه بـ **غير مُتحكم به** يعني: يتم إنشاء هذا المجلد وملفاته تلقائيًا ولا تتحكم فيه عناصر التكوين
133
148
 
134
149
  ```
135
150
  project/
136
151
  ├── apps/
137
- │ ├── types/
138
- │ │ ├── models/ # جميع تعريفات الأنواع (عدا التعدادات)
139
- │ │ ├── connectors/ # تعريفات أنواع واجهات API (تعريفات الواجهات)
140
- └── enums/ # تعريفات التعدادات
141
- └── api/
142
- ├── fetch.ts # تنفيذ طرائق الطلب
143
- └── index.ts # دوال طلبات API
152
+ │ ├── types/ # محدد بواسطة عنصر التكوين saveTypeFolderPath
153
+ │ │ ├── models/ # جميع ملفات تعريف الأنواع (باستثناء أنواع التعداد) غير مُتحكم به
154
+ │ │ ├── connectors/ # تعريفات نوع API (ملفات تعريف الواجهة) غير مُتحكم به
155
+ │ └── api/ # ملف الطلب: محدد بواسطة عنصر التكوين saveApiListFolderPath
156
+ │ ├── fetch.ts # تنفيذ طريقة الطلب غير مُتحكم به
157
+ │ └── index.ts # قائمة دوال طلبات API غير مُتحكم به
158
+ └── api-type.d.ts # ملف تعريف نوع الطلب غير مُتحكم به
159
+ │ │ └── config.ts # الطلب، اعتراض الاستجابة، تكوين الطلب غير مُتحكم به
160
+ │ │ └── error-message.ts # رسائل خطأ على مستوى النظام غير مُتحكم به
161
+ │ │ ├── fetch.ts # تغليف طلب axios، يمكن استبداله بـ fetch غير مُتحكم به
162
+ │ └── enums/ # تعريف نوع بيانات التعداد: محدد بواسطة عنصر التكوين saveEnumFolderPath
144
163
  ```
145
164
 
146
- ## أمثلة على الشيفرة المولدة
165
+ ### أمثلة على الكود المولد
147
166
 
148
- ### تعريفات الأنواع
167
+ #### تعريف نوع الواجهة
149
168
 
150
169
  ```typescript
151
170
  declare namespace UserDetail_GET {
@@ -162,29 +181,29 @@ declare namespace UserDetail_GET {
162
181
  }
163
182
  ```
164
183
 
165
- ### دالة طلب API
184
+ #### دالة طلب API
166
185
 
167
186
  ```typescript
168
187
  import { GET } from './fetch';
169
188
 
170
189
  /**
171
- * جلب تفاصيل المستخدم
190
+ * الحصول على تفاصيل المستخدم
172
191
  */
173
192
  export const userDetailGet = (params: UserDetail_GET.Query) => GET<UserDetail_GET.Response>('/user/detail', params);
174
193
  ```
175
194
 
176
- ## مزايا إضافية
195
+ ### شرح الميزات
177
196
 
178
- ### تحليل الأنواع
197
+ #### تحليل الأنواع
179
198
 
180
- - يدعم جميع أنواع بيانات OpenAPI 3.0
181
- - يتعامل تلقائيًا مع الأنواع المتداخلة المعقدة
182
- - يدعم المصفوفات والكائنات والتعدادات وغيرها
183
- - يُولّد تعليقات الواجهات تلقائيًا
199
+ - يدعم جميع أنواع البيانات في مواصفات OpenAPI 3.0
200
+ - معالجة تلقائية للأنواع المتداخلة المعقدة
201
+ - يدعم أنواع المصفوفات والكائنات والتعدادات وغيرها
202
+ - توليد تعليقات الواجهة تلقائيًا
184
203
 
185
- ### رفع الملفات
204
+ #### تحميل الملفات
186
205
 
187
- عند اكتشاف رفع ملفات، تُضاف الترويسات المناسبة تلقائيًا:
206
+ عند اكتشاف نوع تحميل ملف، سيتم إضافة رأس الطلب المقابل تلقائيًا:
188
207
 
189
208
  ```typescript
190
209
  export const uploadFile = (params: UploadFile.Body) =>
@@ -193,29 +212,29 @@ export const uploadFile = (params: UploadFile.Body) =>
193
212
  });
194
213
  ```
195
214
 
196
- ### معالجة الأخطاء
215
+ #### معالجة الأخطاء
197
216
 
198
- يوفر الأداة معالجة قوية للأخطاء:
217
+ تحتوي الأداة على آلية معالجة أخطاء كاملة:
199
218
 
200
- - رسائل أخطاء التحليل
201
- - تحذيرات عند فشل توليد الأنواع
202
- - التعامل مع استثناءات كتابة الملفات
219
+ - مطالبات أخطاء التحليل
220
+ - تحذيرات فشل توليد الأنواع
221
+ - معالجة استثناءات كتابة الملفات
203
222
 
204
- ### ترشيح الواجهات
223
+ #### تصفية الواجهات
205
224
 
206
- يمكن التحكم في الواجهات المولدة عبر الإعدادات:
225
+ تدعم الأداة تصفية الواجهات التي تحتاج إلى التوليد من خلال التكوين:
207
226
 
208
227
  1. تضمين واجهات محددة
209
- - استخدم `includeInterface` لتحديد الواجهات المراد توليدها
210
- - سيتم توليد المدرجة فقط
211
- - الصيغة: مصفوفة كائنات تحتوي `path` و`method`
228
+ - تحديد الواجهات التي تحتاج إلى التوليد من خلال عنصر التكوين `includeInterface`
229
+ - سيتم توليد الواجهات المحددة في التكوين فقط
230
+ - تنسيق التكوين هو مصفوفة كائنات تحتوي على `path` و `method`
212
231
 
213
232
  2. استبعاد واجهات محددة
214
- - استخدم `excludeInterface` لتحديد الواجهات المستبعدة
215
- - سيتم توليد بقية الواجهات
216
- - الصيغة: مصفوفة كائنات تحتوي `path` و`method`
233
+ - تحديد الواجهات التي تحتاج إلى الاستبعاد من خلال عنصر التكوين `excludeInterface`
234
+ - سيتم توليد جميع الواجهات باستثناء تلك المحددة في التكوين
235
+ - تنسيق التكوين هو مصفوفة كائنات تحتوي على `path` و `method`
217
236
 
218
- مثال:
237
+ مثال على التكوين: يتم تكوين هذا في `an.config.json`
219
238
 
220
239
  ```json
221
240
  {
@@ -234,120 +253,101 @@ export const uploadFile = (params: UploadFile.Body) =>
234
253
  }
235
254
  ```
236
255
 
237
- ملاحظة: لا يمكن استخدام `includeInterface` و`excludeInterface` معًا. عند وجودهما، تكون أولوية `includeInterface`.
256
+ ملاحظة: لا يمكن استخدام `includeInterface` و `excludeInterface` في نفس الوقت، إذا تم تكوينهما معًا، سيتم إعطاء الأولوية لـ `includeInterface`.
238
257
 
239
- ## التطوير
240
-
241
- ```bash
242
- # تثبيت الاعتمادات
243
- npm install
244
-
245
- # وضع التطوير
246
- اضغط F5 لبدء التصحيح
247
-
248
- # البناء
249
- npm run build
250
-
251
- # ربط محلي للتصحيح
252
- npm run blink
253
- ```
254
-
255
- ## ملاحظات
256
-
257
- 1. تأكد من إمكانية الوصول إلى رابط Swagger JSON
258
- 2. المسارات في ملف الإعداد نسبية إلى جذر المشروع
259
- 3. سيتم استبدال الملفات المولدة للملفات الموجودة بنفس الاسم
260
- 4. يُنصح بإضافة الملفات المولدة إلى نظام التحكم بالإصدارات
261
-
262
- ## الأسئلة الشائعة
258
+ ### ملاحظات
263
259
 
264
- 1. فشل تنسيق ملفات الأنواع المولدة
265
- - تحقق من تثبيت Prettier
266
- - تأكد من وجود ملف إعداد Prettier في الجذر
260
+ 1. تأكد من إمكانية الوصول إلى عنوان مستند Swagger JSON
261
+ 2. يجب أن تكون المسارات في ملف التكوين نسبية إلى الدليل الجذر للمشروع
262
+ 3. ستستبدل الملفات المولدة الملفات الموجودة بنفس الاسم
263
+ 4. يُنصح بإضافة الملفات المولدة إلى التحكم في الإصدار
267
264
 
268
- 2. مسار الاستيراد في دوال الطلب غير صحيح
269
- - تحقق من صحة `requestMethodsImportPath`
270
- - تأكد من وجود ملف طرائق الطلب
265
+ ### الأسئلة الشائعة
271
266
 
272
- # أمر anl lint
267
+ 1. فشل تنسيق ملف النوع المولد
268
+ - تحقق من تثبيت prettier
269
+ - تأكد من وجود ملف تكوين prettier في الدليل الجذر للمشروع
273
270
 
274
- ### نظرة عامة
271
+ 2. خطأ في مسار استيراد دالة الطلب
272
+ - تحقق من صحة تكوين requestMethodsImportPath
273
+ - تأكد من وجود ملف طريقة الطلب
275
274
 
276
- إعداد سريع لأدوات الفحص البرمجي للواجهات الأمامية، بما في ذلك:
275
+ # تعليمات استخدام أمر `anl lint`
277
276
 
278
- - ESLint لفحص الشيفرة
279
- - Prettier لتنسيق الشيفرة
280
- - CommitLint لمعايير رسائل الالتزام
281
- - إعدادات محرر VSCode
277
+ > يوفر وظيفة تكوين أدوات lint المختلفة لمشروع الواجهة الأمامية بنقرة واحدة، بما في ذلك:
278
+ >
279
+ > - فحص كود ESLint
280
+ > - تنسيق كود Prettier
281
+ > - معيار معلومات الالتزام CommitLint
282
+ > - تكوين محرر VSCode
282
283
 
283
- ### الاستخدام
284
+ ### طريقة الاستخدام
284
285
 
285
286
  ```bash
286
287
  $ anl lint
287
288
  ```
288
289
 
289
- ### تفاصيل الإعداد
290
+ ### تفاصيل التكوين
290
291
 
291
- #### 1. ESLint
292
+ #### 1. تكوين ESLint
292
293
 
293
- - تثبيت الاعتمادات المطلوبة تلقائيًا
294
- - دعم React/Vue
295
- - توليد `.eslintrc.js` و `.eslintignore`
294
+ - تثبيت التبعيات المطلوبة تلقائيًا
295
+ - يدعم إطارات React/Vue
296
+ - توليد `.eslintrc.js` و `.eslintignore` تلقائيًا
296
297
  - دمج دعم TypeScript
297
298
 
298
- #### 2. Prettier
299
+ #### 2. تكوين Prettier
299
300
 
300
- - تثبيت اعتمادات Prettier تلقائيًا
301
- - توليد `.prettierrc.js`
302
- - الإعدادات الافتراضية:
301
+ - تثبيت التبعيات ذات الصلة بـ prettier تلقائيًا
302
+ - توليد ملف تكوين `.prettierrc.js`
303
+ - التكوين الافتراضي يتضمن:
303
304
  - عرض السطر: 80
304
- - استخدام Tab
305
- - علامات اقتباس أحادية
306
- - أقواس الدوال السهمية
307
- - قواعد تنسيق أخرى
305
+ - مسافة بادئة Tab
306
+ - استخدام علامات اقتباس مفردة
307
+ - أقواس دالة السهم
308
+ - معايير نمط الكود الأخرى
308
309
 
309
- #### 3. CommitLint
310
+ #### 3. تكوين CommitLint
310
311
 
311
- - تثبيت اعتمادات CommitLint
312
- - تهيئة git hooks عبر Husky
312
+ - تثبيت التبعيات ذات الصلة بـ commitlint
313
+ - تكوين husky git hooks
313
314
  - توليد `commitlint.config.js`
314
- - توحيد رسائل الالتزام
315
+ - توحيد رسالة git commit
315
316
 
316
- #### 4. VSCode
317
+ #### 4. تكوين VSCode
317
318
 
318
319
  - إنشاء `.vscode/settings.json`
319
- - تفعيل التنسيق التلقائي عند الحفظ
320
- - ضبط المُنسّق الافتراضي
321
- - دعم تحديث الإعدادات الموجودة
322
-
323
- # أمر anl git
320
+ - تكوين التنسيق التلقائي للمحرر
321
+ - تعيين أداة التنسيق الافتراضية
322
+ - يدعم تحديث ملفات التكوين الموجودة
324
323
 
325
- ### نظرة عامة
324
+ # أمر `anl git`
326
325
 
327
- تطبيق قدرات Git التالية عبر اختيار متعدد تفاعلي:
326
+ ### نظرة عامة على الوظائف
328
327
 
329
- - إنشاء فروع gitflow القياسية
330
- - نسخ `.gitscripts/` و`.gitconfig` و`.commit-type.cjs` إلى المشروع (إن لم تكن موجودة)
331
- - إعطاء صلاحية التنفيذ لـ `.gitscripts/random-branch.sh`
332
- - تنفيذ `git config --local include.path ../.gitconfig`
333
- - ضبط موضوع رسالة الالتزام تلقائيًا
334
- - نسخ `.githooks/commit-msg` وضبطه كقابل للتنفيذ
335
- - تنفيذ `git config core.hooksPath .githooks`
336
- - أوامر Git مخصصة
337
- - إضافة `.gitattributes` إلى المشروع (إن لم يكن موجودًا)
328
+ - من خلال الاختيار المتعدد التفاعلي، يمكن تطبيق إمكانيات Git التالية على المستودع الحالي:
329
+ - إنشاء فروع gitflow القياسية
330
+ - نسخ `.gitscripts/` و `.gitconfig` و `.commit-type.cjs` إلى المشروع (فقط عند الغياب)
331
+ - إضافة أذونات التنفيذ لـ `.gitscripts/random-branch.sh`
332
+ - تنفيذ `git config --local include.path ../.gitconfig`
333
+ - تعيين موضوع commit تلقائيًا
334
+ - نسخ `.githooks/commit-msg` وتعيينه كقابل للتنفيذ
335
+ - تنفيذ `git config core.hooksPath .githooks`
336
+ - أوامر git المخصصة
337
+ - إضافة `.gitattributes` إلى المشروع (فقط عند الغياب)
338
338
 
339
- ### الاستخدام
339
+ ### طريقة الاستخدام
340
340
 
341
341
  ```bash
342
342
  $ anl git
343
343
  ```
344
344
 
345
- اختر وظيفة أو أكثر من القائمة. لن تُنشأ الملفات إلا عند عدم وجودها؛ وتحافظ الأداة على الملفات الموجودة.
345
+ اختر وظيفة واحدة أو أكثر في المطالبة. يتم إنشاء الملفات فقط عند عدم وجودها؛ سيتم الاحتفاظ بالملفات الموجودة.
346
346
 
347
347
  ### ملاحظات
348
348
 
349
- - يُرجى التشغيل داخل مستودع Git.
350
- - إذا فشلت أوامر الضبط التلقائي، نفّذ يدويًا:
349
+ - يرجى التشغيل داخل مستودع Git.
350
+ - إذا فشل تنفيذ git config تلقائيًا، يرجى التنفيذ يدويًا:
351
351
 
352
352
  ```bash
353
353
  git config --local include.path ../.gitconfig
@@ -358,6 +358,6 @@ git config core.hooksPath .githooks
358
358
 
359
359
  ISC License
360
360
 
361
- # المساهمة
361
+ # دليل المساهمة
362
362
 
363
- مرحبٌ بـ Issues و Pull Requests: https://github.com/bianliuzhu/an-cli
363
+ نرحب بتقديم [القضايا](https://github.com/bianliuzhu/an-cli/issues) و [طلبات السحب](https://github.com/bianliuzhu/an-cli/pulls)!