TypeORM 1.0 منتشر شد
خلاصهٔ کاملتر
TypeORM 1.0 بعد از یه دوره طولانی در چرخه ۰.۳.x منتشر شد. این نسخه تمام APIهایی که مدتهاست deprecated بودن رو کاملاً حذف میکنه، الزامات پلتفرم رو مدرن میکنه و دهها باگفیکس و قابلیت جدید با خودش میاره.
تغییرات پلتفرم: حالا حداقل Node.js 20 لازمه و پشتیبانی از نسخههای ۱۶ و ۱۸ قطع شده. چندتا وابستگی خارجی هم جایگزین شدن — مثلاً glob با tinyglobby عوض شده، sha.js و uuid حذف شدن و به جاشون از ماژول native اجرایی crypto استفاده میشه.
تغییرات درایورها: برای MySQL دیگه فقط mysql2 پشتیبانی میشه و بسته قدیمی mysql حذف شده. برای SQLite هم sqlite3 کنار گذاشته شده و better-sqlite3 به عنوان پیشفرض اومده. MongoDB هم حالا نیازمند درایور نسخه ۷ به بالاست.
APIهای حذفشده: مهمترین تغییر اینه که Connection و ConnectionOptions کاملاً برداشته شدن و باید از DataSource و DataSourceOptions استفاده کنید. توابع global قدیمی مثل createConnection، getConnection، getRepository و بقیه دیگه وجود ندارن. همچنین findByIds حذف شده و باید از findBy با In() استفاده کرد، و syntax رشتهای برای select و relations دیگه کار نمیکنه:
// قدیمی — دیگه کار نمیکنه
repo.find({ select: ["id", "name"], relations: ["profile"] })
// جدید — باید از object syntax استفاده کرد
repo.find({ select: { id: true, name: true }, relations: { profile: true } })قابلیتهای جدید: InsertQueryBuilder حالا متد valuesFromSelect() داره که میشه باهاش داده رو مستقیم از یه کوئری select وارد کرد. متدهای update() و upsert() هم گزینه returning پیدا کردن. پشتیبانی از await using برای QueryRunner (مدیریت منابع خودکار در TypeScript 5.2+) هم اضافه شده. PostgreSQL هم بهبودهایی داره از جمله پشتیبانی از partial index و سادهتر شدن اضافه کردن مقادیر به enum با ALTER TYPE ... ADD VALUE.
مهاجرت آسانتر: یه ابزار codemod رسمی اضافه شده که بیشتر تغییرات breaking رو بهصورت خودکار اعمال میکنه. کافیه این دستور رو اجرا کنی:
npx @typeorm/codemod v1 src/نکات کلیدی:
- Node.js 20 به بالا اجباریه
- Connection و APIهای global قدیمی کاملاً حذف شدن؛ باید از DataSource استفاده کرد
- برای MySQL فقط mysql2، برای SQLite فقط better-sqlite3 پشتیبانی میشه
- MongoDB به درایور نسخه ۷+ نیاز داره
- syntax رشتهای select و relations حذف شده؛ از object syntax استفاده کنید
- @typeorm/codemod مهاجرت خودکار به v1 رو ممکن میکنه
- قابلیتهای جدید: valuesFromSelect()، returning در upsert، await using برای QueryRunner




