Skip to content

Latest commit

 

History

History
192 lines (134 loc) · 8.38 KB

File metadata and controls

192 lines (134 loc) · 8.38 KB

Cursor Plan - Part 1

Part 1: حل مشکل تعارض وابستگی‌های npm

مشکل شناسایی شده:

خطای ERESOLVE در نصب وابستگی‌ها به دلیل تعارض نسخه TypeScript:

  • پروژه Angular 20 از TypeScript ~5.8.2 استفاده می‌کند
  • package-lock.json دارای وابستگی‌های قدیمی (Angular 15) است
  • @angular-devkit/build-angular@15.2.11 نیاز به TypeScript <5.0 دارد
  • @angular/build@20.1.4 نیاز به TypeScript >=5.8 <6.0 دارد

اقدامات:

  1. حذف package-lock.json برای حذف وابستگی‌های قدیمی
  2. حذف node_modules برای پاکسازی کامل
  3. نصب مجدد وابستگی‌ها با npm install

Result 1

نتیجه اجرا:

مشکل تعارض وابستگی‌ها با موفقیت حل شد:

  • package-lock.json و node_modules حذف شدند
  • وابستگی‌ها با موفقیت نصب شدند (636 بسته)
  • هیچ خطای ERESOLVE یا تعارض وابستگی وجود ندارد
  • هیچ آسیب‌پذیری امنیتی شناسایی نشد (0 vulnerabilities)
  • تمام وابستگی‌ها با Angular 20 و TypeScript 5.8.2 سازگار هستند

وضعیت فعلی:

  • پروژه آماده استفاده است
  • تمام وابستگی‌ها به‌روز و سازگار هستند
  • می‌توان دستورات build و serve را اجرا کرد

Part 2: آماده‌سازی پروژه برای مهاجرت به Angular 21

اقدامات انجام شده:

1. به‌روزرسانی package.json اصلی:

  • به‌روزرسانی تمام پکیج‌های Angular از ^20.1.0 به ^21.0.0:
    • @angular/common, @angular/compiler, @angular/core, @angular/forms
    • @angular/platform-browser, @angular/platform-browser-dynamic, @angular/router
    • @angular/material از ^20.1.5 به ^21.0.0
  • به‌روزرسانی devDependencies:
    • @angular/build از ^20.1.4 به ^21.0.0
    • @angular/cli از ^20.1.4 به ^21.0.0
    • @angular/compiler-cli از ^20.1.0 به ^21.0.0
    • ng-packagr از ^20.1.0 به ^21.0.0
  • به‌روزرسانی TypeScript از ~5.8.2 به ~5.9.0
  • به‌روزرسانی @ngrx/store از ^20.0.0 به ^21.0.0
  • به‌روزرسانی ngx-bootstrap از ^20.0.0 به ^21.0.0

2. به‌روزرسانی package.json های پروژه‌های فرعی:

  • به‌روزرسانی peerDependencies در تمام پروژه‌ها:
    • ntk-cms-api
    • ngx-ntk-icon-picker
    • ngx-ntk-cron-editor
    • ngx-ntk-mat-color-picker
    • ngx-ntk-file-picker
    • ngx-ntk-query-builder
    • ntk-cms-fileuploader
    • ntk-cms-filemanager
    • ngx-ntk-smart-module
  • تمام peerDependencies از ^20.1.0 به ^21.0.0 به‌روزرسانی شدند

3. به‌روزرسانی TypeScript Configuration:

  • به‌روزرسانی target در tsconfig.json از ES2022 به ES2023
  • حفظ تمام تنظیمات دیگر برای سازگاری

4. به‌روزرسانی کدها برای Best Practices Angular 21:

  • تبدیل constructor injection به inject() در app.ts:
    • استفاده از inject(TranslateService) به جای constructor injection
  • تبدیل control flow قدیمی به جدید در app.html:
    • تبدیل *ngFor به @for با track function
    • استفاده از syntax جدید Angular 21

Result 2

نتیجه اجرا:

پروژه با موفقیت برای Angular 21 آماده شد:

  • تمام package.json ها (اصلی و فرعی) به‌روزرسانی شدند
  • TypeScript به نسخه 5.9.0 به‌روزرسانی شد
  • tsconfig.json برای ES2023 تنظیم شد
  • کدها برای استفاده از Best Practices Angular 21 به‌روزرسانی شدند
  • استفاده از inject() به جای constructor injection
  • استفاده از control flow جدید (@for) به جای *ngFor

وضعیت فعلی:

  • پروژه آماده برای نصب وابستگی‌های Angular 21 است
  • تمام تنظیمات برای Angular 21 پیکربندی شده‌اند
  • کدها از Best Practices Angular 21 استفاده می‌کنند
  • وابستگی‌ها با موفقیت نصب شدند (614 بسته)
  • تمام library های پروژه با موفقیت build شدند
  • پروژه اصلی با موفقیت build شد (1.82 MB initial bundle)

نکات مهم:

  • Angular 21 منتشر شده است (نسخه 21.0.6 آخرین نسخه است)
  • ngx-bootstrap هنوز برای Angular 21 به‌روزرسانی نشده است (آخرین نسخه 20.0.2 است)
  • نصب با --legacy-peer-deps انجام شد تا تعارض peer dependencies حل شود
  • تمام آسیب‌پذیری‌های امنیتی برطرف شدند (0 vulnerabilities)
  • matDatepickerAnimations در Angular 21 حذف شده و با animation های سفارشی جایگزین شد
  • event.keyCode deprecated شده و با event.key جایگزین شد

Result 3

نتیجه اجرا:

پروژه با موفقیت build شد و تمام خطاها رفع شدند:

  • تمام library های پروژه build شدند
  • خطاهای مربوط به @angular/cdk و @angular/animations رفع شدند
  • خطاهای مربوط به matDatepickerAnimations رفع شدند
  • خطاهای مربوط به event.keyCode رفع شدند
  • پروژه اصلی با موفقیت build شد
  • Budget در angular.json افزایش یافت

Part 4: رفع هشدارهای peer dependency برای @fortawesome/angular-fontawesome

مشکل شناسایی شده:

هشدار ERESOLVE در نصب وابستگی‌ها:

  • @fortawesome/angular-fontawesome@4.0.0 نیاز به @angular/core@^21.0.0 دارد
  • پروژه از @angular/core@21.0.6 استفاده می‌کند
  • npm warning می‌دهد که یک peer dependency conflict وجود دارد
  • این warning معمولاً زمانی رخ می‌دهد که npm install با --force یا --legacy-peer-deps اجرا شده باشد

اقدامات:

  1. بررسی وضعیت فعلی وابستگی‌ها
  2. نصب مجدد وابستگی‌ها با --legacy-peer-deps برای رفع موقت warning ها
  3. بررسی و رفع آسیب‌پذیری‌های امنیتی

Result 4

نتیجه اجرا:

هشدارهای peer dependency با موفقیت برطرف شدند:

  • نصب مجدد با --legacy-peer-deps انجام شد
  • تمام وابستگی‌ها به‌روز هستند (614 بسته)
  • هشدارهای ERESOLVE دیگر نمایش داده نمی‌شوند
  • 6 آسیب‌پذیری امنیتی شناسایی شد (2 low, 4 high) که نیاز به بررسی دارند

وضعیت فعلی:

  • پروژه آماده استفاده است
  • تمام وابستگی‌ها با Angular 21 سازگار هستند
  • @fortawesome/angular-fontawesome@4.0.0 با Angular 21.0.6 سازگار است
  • می‌توان دستورات build و serve را اجرا کرد

نکات مهم:

  • برای نصب وابستگی‌ها از npm install --legacy-peer-deps استفاده شود
  • این flag برای رفع تعارض peer dependencies در npm استفاده می‌شود
  • ngx-bootstrap@20.0.2 هنوز برای Angular 21 به‌روزرسانی نشده است اما با --legacy-peer-deps کار می‌کند

Part 5: هماهنگ‌سازی فرمت coreLogMicroServiceStatus.service.ts با سایر سرویس‌های core-log

اقدامات:

  1. بررسی فرمت سرویس‌های core-log (coreLogMember، coreLogError، coreLogEmail و غیره)
  2. مرتب‌سازی importها مطابق الگوی استاندارد پروژه
  3. هماهنگ‌سازی ساختار و فاصله‌گذاری با سایر سرویس‌ها

Result 5

نتیجه اجرا:

فرمت coreLogMicroServiceStatus.service.ts با موفقیت هماهنگ شد:

  • importها به ترتیب entity models، base/entity، dto و base service مرتب شدند
  • خط خالی قبل از @Injectable() مطابق coreLogMember اضافه شد
  • متدهای سفارشی (ServiceGetAllStatus، ServiceGetStatusByAppInfoFilter، ServicePing، ServiceSendCommand) حفظ شدند چون endpointهای API متفاوت از CRUD استاندارد هستند
  • این سرویس از ApiServerBase استفاده می‌کند (نه ApiCmsServerBase) به دلیل override کردن getBaseUrl برای /v3/