This is an automated email from the ASF dual-hosted git repository.

pierrejeambrun pushed a commit to branch v3-3-test
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/v3-3-test by this push:
     new 56dc77ced73 Bump eslint-plugin-unicorn to 72.0.0 (#70520)
56dc77ced73 is described below

commit 56dc77ced732fedbe6a8c41acd6f7670ccedaa27
Author: Pierre Jeambrun <[email protected]>
AuthorDate: Mon Jul 27 17:00:58 2026 +0200

    Bump eslint-plugin-unicorn to 72.0.0 (#70520)
    
    Adapted from #70402 (which bumped 71.1.0 to 72.0.0 on main); v3-3-test was 
on ^64.0.0, so this is a larger jump. Includes the lint fixes the newer unicorn 
rules surface.
---
 airflow-core/src/airflow/ui/package.json           |   2 +-
 airflow-core/src/airflow/ui/pnpm-lock.yaml         | 230 ++++++++++++++++-----
 .../src/airflow/ui/src/components/AnsiRenderer.tsx |   2 +-
 .../ui/src/components/MarkdownModal.test.tsx       |   1 +
 .../src/airflow/ui/src/hooks/usePluginTabs.tsx     |   9 +-
 .../src/airflow/ui/src/mocks/handlers/log.ts       |   2 +-
 .../src/pages/Asset/CreateAssetEventModal.test.tsx |   1 +
 .../src/pages/TaskInstance/RenderedTemplates.tsx   |   2 +-
 .../ui/src/pages/TaskInstance/TaskInstance.tsx     |  29 ++-
 .../src/airflow/ui/src/utils/datetimeUtils.test.ts |  14 +-
 10 files changed, 213 insertions(+), 79 deletions(-)

diff --git a/airflow-core/src/airflow/ui/package.json 
b/airflow-core/src/airflow/ui/package.json
index 397bf2687e1..2c46df815cb 100644
--- a/airflow-core/src/airflow/ui/package.json
+++ b/airflow-core/src/airflow/ui/package.json
@@ -103,7 +103,7 @@
     "eslint-plugin-react": "^7.37.5",
     "eslint-plugin-react-hooks": "^7.1.1",
     "eslint-plugin-react-refresh": "^0.5.3",
-    "eslint-plugin-unicorn": "^64.0.0",
+    "eslint-plugin-unicorn": "^72.0.0",
     "globals": "^15.15.0",
     "happy-dom": "^20.10.6",
     "jsonc-eslint-parser": "^2.4.2",
diff --git a/airflow-core/src/airflow/ui/pnpm-lock.yaml 
b/airflow-core/src/airflow/ui/pnpm-lock.yaml
index d006d5ffeee..1929d7bf7fb 100644
--- a/airflow-core/src/airflow/ui/pnpm-lock.yaml
+++ b/airflow-core/src/airflow/ui/pnpm-lock.yaml
@@ -268,8 +268,8 @@ importers:
         specifier: ^0.5.3
         version: 0.5.3([email protected]([email protected]))
       eslint-plugin-unicorn:
-        specifier: ^64.0.0
-        version: 64.0.0([email protected]([email protected]))
+        specifier: ^72.0.0
+        version: 72.0.0([email protected]([email protected]))
       globals:
         specifier: ^15.15.0
         version: 15.15.0
@@ -586,6 +586,10 @@ packages:
     resolution: {integrity: 
sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==}
     engines: {node: ^20.19.0 || ^22.13.0 || >=24}
 
+  '@eslint/[email protected]':
+    resolution: {integrity: 
sha512-iPmijIAq4hlIJB86PYmY/fcZORHtjphSqICDbwuw32A/JmkhZQ/K/6TjHE03zqf3n5yABpVcbRAMG8Mi9ojy8g==}
+    engines: {node: ^20.19.0 || ^22.13.0 || >=24}
+
   '@eslint/[email protected]':
     resolution: {integrity: 
sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==}
     engines: {node: ^20.19.0 || ^22.13.0 || >=24}
@@ -1743,6 +1747,11 @@ packages:
     engines: {node: '>=6.0.0'}
     hasBin: true
 
+  [email protected]:
+    resolution: {integrity: 
sha512-s4+sLr9mZ/CyqeRritFeYV/Zx73OAtmaHn6kkBS1XRoJn1hrg3xIDUcpicAEX68tkcIN0iBCgti31C8zxtkhsQ==}
+    engines: {node: '>=6.0.0'}
+    hasBin: true
+
   [email protected]:
     resolution: {integrity: 
sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
     engines: {node: '>=8'}
@@ -1763,6 +1772,11 @@ packages:
     engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
     hasBin: true
 
+  [email protected]:
+    resolution: {integrity: 
sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==}
+    engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+    hasBin: true
+
   [email protected]:
     resolution: {integrity: 
sha512-nEh+kZOPY1w+gcCMobZ6ETUp9WfibndnosbpwB1iJk/8Gt5ZF2bhS6+B6bPYz424KtwsR6Rflc3tCz1/ghX2dQ==}
     engines: {node: '>=4.0'}
@@ -1802,6 +1816,9 @@ packages:
   [email protected]:
     resolution: {integrity: 
sha512-bOoxfJPyYo+ds6W0YfptaCWbFnJYjh2Y1Eow5lRv+vI2u8ganPZqNm1JwNh0t2ELQCqIWg4B3dWEusgAmsoyOw==}
 
+  [email protected]:
+    resolution: {integrity: 
sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==}
+
   [email protected]:
     resolution: {integrity: 
sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
 
@@ -1881,10 +1898,6 @@ packages:
   [email protected]:
     resolution: {integrity: 
sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==}
 
-  [email protected]:
-    resolution: {integrity: 
sha512-GfisEZEJvzKrmGWkvfhgzcz/BllN1USeqD2V6tg14OAOgaCD2Z/PUEuxnAZ/nPvmaHRG7a8y77p1T/IRQ4D1Hw==}
-    engines: {node: '>=4'}
-
   [email protected]:
     resolution: {integrity: 
sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==}
     engines: {node: '>= 12'}
@@ -1931,6 +1944,10 @@ packages:
     resolution: {integrity: 
sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==}
     engines: {node: ^14.18.0 || >=16.10.0}
 
+  [email protected]:
+    resolution: {integrity: 
sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==}
+    engines: {node: '>=12'}
+
   [email protected]:
     resolution: {integrity: 
sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==}
 
@@ -2095,6 +2112,10 @@ packages:
   [email protected]:
     resolution: {integrity: 
sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==}
 
+  [email protected]:
+    resolution: {integrity: 
sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==}
+    engines: {node: '>=12.20'}
+
   [email protected]:
     resolution: {integrity: 
sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
     engines: {node: '>=8'}
@@ -2133,6 +2154,9 @@ packages:
   [email protected]:
     resolution: {integrity: 
sha512-4MxfbmNDm+KPh066EZy+eUnkcDPcZ35wNmOWzFuh/ijvHsve6kbLTLURy88uCNK5FbpN+yk2nQY6BYh1GEt+wg==}
 
+  [email protected]:
+    resolution: {integrity: 
sha512-yHiw2Y3C3H9U6TMbOfoWK/BPreiOPXRfTWPBwQBoZG6/8TB6eOPnsy5oaRYuatR7Fw2SJ4kKforgufeo7fq0EQ==}
+
   [email protected]:
     resolution: {integrity: 
sha512-zxxR9k+rx5ktMwT/FwyLdPCrq7xN6e4VGGHH8hA01vVYKjTFik7nHOxBnAYtrgYUB1RpAiLvA1/U2YraWxyKKg==}
 
@@ -2142,6 +2166,10 @@ packages:
   [email protected]:
     resolution: {integrity: 
sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
 
+  [email protected]:
+    resolution: {integrity: 
sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
+    engines: {node: '>=0.12'}
+
   [email protected]:
     resolution: {integrity: 
sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==}
     engines: {node: '>=0.12'}
@@ -2191,10 +2219,6 @@ packages:
     resolution: {integrity: 
sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
     engines: {node: '>=6'}
 
-  [email protected]:
-    resolution: {integrity: 
sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
-    engines: {node: '>=0.8.0'}
-
   [email protected]:
     resolution: {integrity: 
sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
     engines: {node: '>=10'}
@@ -2273,11 +2297,11 @@ packages:
     peerDependencies:
       eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7
 
-  [email protected]:
-    resolution: {integrity: 
sha512-rNZwalHh8i0UfPlhNwg5BTUO1CMdKNmjqe+TgzOTZnpKoi8VBgsW7u9qCHIdpxEzZ1uwrJrPF0uRb7l//K38gA==}
-    engines: {node: ^20.10.0 || >=21.0.0}
+  [email protected]:
+    resolution: {integrity: 
sha512-hqO6ksoOHO+ZhdseTuKRVQbx9U7PRO/cv8qAR1mctwzdVO2hYud8uS9luAhp43RJgziYgHAph8eHyipT8GL0ng==}
+    engines: {node: '>=22'}
     peerDependencies:
-      eslint: '>=9.38.0'
+      eslint: '>=10.4'
 
   [email protected]:
     resolution: {integrity: 
sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==}
@@ -2448,6 +2472,10 @@ packages:
   [email protected]:
     resolution: {integrity: 
sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
 
+  [email protected]:
+    resolution: {integrity: 
sha512-939eZS4gJ3htTHAldmyyuzlrD58P03fHG49v2JfFXbV6OhvZKRC9j2yAtdHw/zrp2zXHuv05zMIy40F0ge7spA==}
+    engines: {node: '>=18'}
+
   [email protected]:
     resolution: {integrity: 
sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
     engines: {node: '>= 0.4'}
@@ -2501,8 +2529,8 @@ packages:
     resolution: {integrity: 
sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==}
     engines: {node: '>=18'}
 
-  [email protected]:
-    resolution: {integrity: 
sha512-qoV+HK2yFl/366t2/Cb3+xxPUo5BuMynomoDmiaZBIdbs+0pYbjfZU+twLhGKp4uCZ/+NbtpVepH5bGCxRyy2g==}
+  [email protected]:
+    resolution: {integrity: 
sha512-Zz/LMDZScFmkakeL2cTHzf+PbWKdpU3uclqkZT7TjDG58j5WPt0PpA+n9uPI24fZtlw07q0OtEi84K+umsRzqQ==}
     engines: {node: '>=18'}
 
   [email protected]:
@@ -2617,6 +2645,10 @@ packages:
       typescript:
         optional: true
 
+  [email protected]:
+    resolution: {integrity: 
sha512-SLX4H/vtcYlYnL7XqnuJKHU7Z8517TgsW9nmQiGOgMCjQ8V/deLYu6bEmbGoXe7WMMhc9+EUGyFFneHja8KabA==}
+    engines: {node: '>=18'}
+
   [email protected]:
     resolution: {integrity: 
sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
     engines: {node: '>= 4'}
@@ -2739,6 +2771,10 @@ packages:
   [email protected]:
     resolution: {integrity: 
sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}
 
+  [email protected]:
+    resolution: {integrity: 
sha512-NhOds0mDx9lJu+1lBRO0xbwFo5nobA7GCk/0e5xjr6+6XugX985+0OyGX35BNrTkPAsdLcIKg02HUQJOK8D8kw==}
+    engines: {node: '>=18'}
+
   [email protected]:
     resolution: {integrity: 
sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
     engines: {node: '>= 0.4'}
@@ -3014,6 +3050,10 @@ packages:
   [email protected]:
     resolution: {integrity: 
sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==}
 
+  [email protected]:
+    resolution: {integrity: 
sha512-ayF7iT+44LXdxJLTrTd3TLQpFDDvPCBxXxbv+pMUSuHA5Q8zyAfwkRP6aHHwNVFBUFWtxAHqwNJxF8vMZLAbVg==}
+    engines: {node: '>=18'}
+
   [email protected]:
     resolution: {integrity: 
sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
     engines: {node: '>=10'}
@@ -3075,6 +3115,9 @@ packages:
   [email protected]:
     resolution: {integrity: 
sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
 
+  [email protected]:
+    resolution: {integrity: 
sha512-pVxQFCcaYUEAH853+v7yoI/qzhxXSq1bTb9obMYGYAN1c3Hen+XDCEvr296XhstrwlSTNgOR7mCSD4JPjbJe5A==}
+
   [email protected]:
     resolution: {integrity: 
sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
 
@@ -3251,6 +3294,10 @@ packages:
   [email protected]:
     resolution: {integrity: 
sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw==}
 
+  [email protected]:
+    resolution: {integrity: 
sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==}
+    engines: {node: '>=18'}
+
   [email protected]:
     resolution: {integrity: 
sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
     engines: {node: '>=0.10.0'}
@@ -3313,6 +3360,10 @@ packages:
     resolution: {integrity: 
sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
     engines: {node: '>= 0.4'}
 
+  [email protected]:
+    resolution: {integrity: 
sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==}
+    engines: {node: '>=16.17'}
+
   [email protected]:
     resolution: {integrity: 
sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
     engines: {node: '>=10'}
@@ -3321,6 +3372,10 @@ packages:
     resolution: {integrity: 
sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
     engines: {node: '>=10'}
 
+  [email protected]:
+    resolution: {integrity: 
sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==}
+    engines: {node: '>=14.16'}
+
   [email protected]:
     resolution: {integrity: 
sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
 
@@ -3455,6 +3510,10 @@ packages:
     resolution: {integrity: 
sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
     engines: {node: '>=6'}
 
+  [email protected]:
+    resolution: {integrity: 
sha512-Y3NoRtprEEZQD8RfxMCfS0ZTqc4e+i18OrXEXAvpM6TfC/3y+0L5rNbZiSnbBBEkDfFzbpd8o+cE8q3/anjMGA==}
+    engines: {node: '>=22'}
+
   [email protected]:
     resolution: {integrity: 
sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==}
 
@@ -3582,16 +3641,12 @@ packages:
   [email protected]:
     resolution: {integrity: 
sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
 
-  [email protected]:
-    resolution: {integrity: 
sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==}
-    hasBin: true
-
   [email protected]:
     resolution: {integrity: 
sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
     engines: {node: '>= 0.4'}
 
-  [email protected]:
-    resolution: {integrity: 
sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==}
+  [email protected]:
+    resolution: {integrity: 
sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==}
     hasBin: true
 
   [email protected]:
@@ -3614,6 +3669,10 @@ packages:
     resolution: {integrity: 
sha512-LBnkqsDE7BZKvqylbmn7lTIVdpx4K/QCduRATpO5R+wtPmky/a8pN1bO2D6wXppn1497AJF9mNjqAXr6bdl9jg==}
     engines: {node: '>=0.10.5'}
 
+  [email protected]:
+    resolution: {integrity: 
sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==}
+    engines: {node: '>=18'}
+
   [email protected]:
     resolution: {integrity: 
sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
     engines: {node: '>=4'}
@@ -3657,11 +3716,6 @@ packages:
     resolution: {integrity: 
sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
     hasBin: true
 
-  [email protected]:
-    resolution: {integrity: 
sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==}
-    engines: {node: '>=10'}
-    hasBin: true
-
   [email protected]:
     resolution: {integrity: 
sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==}
     engines: {node: '>=10'}
@@ -3804,6 +3858,10 @@ packages:
   [email protected]:
     resolution: {integrity: 
sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==}
 
+  [email protected]:
+    resolution: {integrity: 
sha512-WHkws2ZflZe41zj6AolvvmaTrWds/VuyeYr9iPVv/oQeaIoVxMKaushfFWpOGDT+GuBrM/sVqF8KUCYQlSSTdQ==}
+    engines: {node: '>=18'}
+
   [email protected]:
     resolution: {integrity: 
sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
     engines: {node: '>=8'}
@@ -3824,6 +3882,10 @@ packages:
     resolution: {integrity: 
sha512-ChjMH33/KetonMTAtpYdgUFr0tbz69Fp2v7zWxQfYZX4g5ZN2nOBXm1R2xyA+lMIKrLKIoKAwFj93jE/avX9cQ==}
     engines: {node: '>=18'}
 
+  [email protected]:
+    resolution: {integrity: 
sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==}
+    engines: {node: '>=12'}
+
   [email protected]:
     resolution: {integrity: 
sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
 
@@ -3889,6 +3951,10 @@ packages:
     resolution: {integrity: 
sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
     engines: {node: '>= 0.8.0'}
 
+  [email protected]:
+    resolution: {integrity: 
sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==}
+    engines: {node: '>=16'}
+
   [email protected]:
     resolution: {integrity: 
sha512-YGYEVz3Fm5iy/AybuA0oyNFq7H4CgQNfRp/qfe8nurE1kuCeNm3/vfm9X4Mtl+qLyaKJUh5xrFZwogr41SMjYA==}
     engines: {node: '>=20'}
@@ -4663,6 +4729,11 @@ snapshots:
     dependencies:
       '@types/json-schema': 7.0.15
 
+  '@eslint/[email protected]':
+    dependencies:
+      mdn-data: 2.29.0
+      source-map-js: 1.2.1
+
   '@eslint/[email protected]([email protected]([email protected]))':
     optionalDependencies:
       eslint: 10.7.0([email protected])
@@ -6192,6 +6263,8 @@ snapshots:
 
   [email protected]: {}
 
+  [email protected]: {}
+
   [email protected]: {}
 
   [email protected]:
@@ -6215,6 +6288,14 @@ snapshots:
       node-releases: 2.0.38
       update-browserslist-db: 1.2.3([email protected])
 
+  [email protected]:
+    dependencies:
+      baseline-browser-mapping: 2.11.4
+      caniuse-lite: 1.0.30001806
+      electron-to-chromium: 1.5.396
+      node-releases: 2.0.51
+      update-browserslist-db: 1.2.3([email protected])
+
   [email protected]:
     dependencies:
       '@types/node': 24.13.3
@@ -6261,6 +6342,8 @@ snapshots:
 
   [email protected]: {}
 
+  [email protected]: {}
+
   [email protected]: {}
 
   [email protected]: {}
@@ -6334,10 +6417,6 @@ snapshots:
 
   [email protected]: {}
 
-  [email protected]:
-    dependencies:
-      escape-string-regexp: 1.0.5
-
   [email protected]: {}
 
   [email protected]:
@@ -6372,6 +6451,8 @@ snapshots:
 
   [email protected]: {}
 
+  [email protected]: {}
+
   [email protected]: {}
 
   [email protected]: {}
@@ -6380,7 +6461,7 @@ snapshots:
 
   [email protected]:
     dependencies:
-      browserslist: 4.28.2
+      browserslist: 4.28.7
 
   [email protected]:
     dependencies:
@@ -6536,6 +6617,8 @@ snapshots:
 
   [email protected]: {}
 
+  [email protected]: {}
+
   [email protected]: {}
 
   [email protected]:
@@ -6571,12 +6654,16 @@ snapshots:
 
   [email protected]: {}
 
+  [email protected]: {}
+
   [email protected]: {}
 
   [email protected]: {}
 
   [email protected]: {}
 
+  [email protected]: {}
+
   [email protected]: {}
 
   [email protected]:
@@ -6687,8 +6774,6 @@ snapshots:
 
   [email protected]: {}
 
-  [email protected]: {}
-
   [email protected]: {}
 
   [email protected]: {}
@@ -6796,25 +6881,29 @@ snapshots:
       string.prototype.matchall: 4.0.12
       string.prototype.repeat: 1.0.0
 
-  [email protected]([email protected]([email protected])):
+  [email protected]([email protected]([email protected])):
     dependencies:
-      '@babel/helper-validator-identifier': 7.28.5
       '@eslint-community/eslint-utils': 4.9.1([email protected]([email protected]))
+      '@eslint/css-tree': 4.0.5
+      browserslist: 4.28.7
       change-case: 5.4.4
       ci-info: 4.4.0
-      clean-regexp: 1.0.0
       core-js-compat: 3.49.0
+      detect-indent: 7.0.2
+      entities: 4.5.0
       eslint: 10.7.0([email protected])
       find-up-simple: 1.0.1
-      globals: 17.5.0
+      globals: 17.8.0
       indent-string: 5.0.0
       is-builtin-module: 5.0.0
-      jsesc: 3.1.0
+      is-identifier: 1.1.0
       pluralize: 8.0.0
-      regexp-tree: 0.1.27
-      regjsparser: 0.13.1
-      semver: 7.7.4
+      quote-js-string: 0.1.0
+      regjsparser: 0.13.2
+      reserved-identifiers: 1.2.0
+      semver: 7.8.5
       strip-indent: 4.1.1
+      yaml: 2.9.0
 
   [email protected]:
     dependencies:
@@ -6987,6 +7076,8 @@ snapshots:
 
   [email protected]: {}
 
+  [email protected]: {}
+
   [email protected]:
     dependencies:
       call-bind: 1.0.8
@@ -7057,7 +7148,7 @@ snapshots:
 
   [email protected]: {}
 
-  [email protected]: {}
+  [email protected]: {}
 
   [email protected]:
     dependencies:
@@ -7202,6 +7293,10 @@ snapshots:
     optionalDependencies:
       typescript: 6.0.3
 
+  [email protected]:
+    dependencies:
+      reserved-identifiers: 1.2.0
+
   [email protected]: {}
 
   [email protected]: {}
@@ -7318,6 +7413,11 @@ snapshots:
 
   [email protected]: {}
 
+  [email protected]:
+    dependencies:
+      identifier-regex: 1.1.0
+      super-regex: 1.1.0
+
   [email protected]: {}
 
   [email protected]: {}
@@ -7570,6 +7670,12 @@ snapshots:
       '@babel/types': 7.29.7
       source-map-js: 1.2.1
 
+  [email protected]:
+    dependencies:
+      p-event: 6.0.1
+      type-fest: 4.41.0
+      web-worker: 1.5.0
+
   [email protected]:
     dependencies:
       semver: 7.8.5
@@ -7733,6 +7839,8 @@ snapshots:
     dependencies:
       '@types/mdast': 4.0.4
 
+  [email protected]: {}
+
   [email protected]: {}
 
   [email protected]:
@@ -8012,6 +8120,8 @@ snapshots:
 
   [email protected]: {}
 
+  [email protected]: {}
+
   [email protected]: {}
 
   [email protected]:
@@ -8097,6 +8207,10 @@ snapshots:
       object-keys: 1.1.1
       safe-push-apply: 1.0.0
 
+  [email protected]:
+    dependencies:
+      p-timeout: 6.1.4
+
   [email protected]:
     dependencies:
       yocto-queue: 0.1.0
@@ -8105,6 +8219,8 @@ snapshots:
     dependencies:
       p-limit: 3.1.0
 
+  [email protected]: {}
+
   [email protected]: {}
 
   [email protected]:
@@ -8230,6 +8346,8 @@ snapshots:
 
   [email protected]: {}
 
+  [email protected]: {}
+
   [email protected]:
     dependencies:
       defu: 6.1.6
@@ -8381,8 +8499,6 @@ snapshots:
 
   [email protected]: {}
 
-  [email protected]: {}
-
   [email protected]:
     dependencies:
       call-bind: 1.0.8
@@ -8392,7 +8508,7 @@ snapshots:
       gopd: 1.2.0
       set-function-name: 2.0.2
 
-  [email protected]:
+  [email protected]:
     dependencies:
       jsesc: 3.1.0
 
@@ -8434,6 +8550,8 @@ snapshots:
 
   [email protected]: {}
 
+  [email protected]: {}
+
   [email protected]: {}
 
   [email protected]:
@@ -8496,8 +8614,6 @@ snapshots:
 
   [email protected]: {}
 
-  [email protected]: {}
-
   [email protected]: {}
 
   [email protected]: {}
@@ -8667,6 +8783,12 @@ snapshots:
 
   [email protected]: {}
 
+  [email protected]:
+    dependencies:
+      function-timeout: 1.0.2
+      make-asynchronous: 1.1.0
+      time-span: 5.1.0
+
   [email protected]:
     dependencies:
       has-flag: 4.0.0
@@ -8687,6 +8809,10 @@ snapshots:
       minizlib: 3.1.0
       yallist: 5.0.0
 
+  [email protected]:
+    dependencies:
+      convert-hrtime: 5.0.0
+
   [email protected]: {}
 
   [email protected]: {}
@@ -8739,6 +8865,8 @@ snapshots:
     dependencies:
       prelude-ls: 1.2.1
 
+  [email protected]: {}
+
   [email protected]:
     dependencies:
       tagged-tag: 1.0.0
@@ -8844,6 +8972,12 @@ snapshots:
       escalade: 3.2.0
       picocolors: 1.1.1
 
+  [email protected]([email protected]):
+    dependencies:
+      browserslist: 4.28.7
+      escalade: 3.2.0
+      picocolors: 1.1.1
+
   [email protected]: {}
 
   [email protected]:
diff --git a/airflow-core/src/airflow/ui/src/components/AnsiRenderer.tsx 
b/airflow-core/src/airflow/ui/src/components/AnsiRenderer.tsx
index 716160d2600..03809a0a7f6 100644
--- a/airflow-core/src/airflow/ui/src/components/AnsiRenderer.tsx
+++ b/airflow-core/src/airflow/ui/src/components/AnsiRenderer.tsx
@@ -131,7 +131,7 @@ const createChakraProps = (bundle: AnserJsonEntry) => {
     case "underline":
       props.textDecoration = "underline";
       break;
-    // eslint-disable-next-line unicorn/no-useless-switch-case
+
     case null:
     default:
       break;
diff --git a/airflow-core/src/airflow/ui/src/components/MarkdownModal.test.tsx 
b/airflow-core/src/airflow/ui/src/components/MarkdownModal.test.tsx
index 383b0c7d9c1..cd60fd4419a 100644
--- a/airflow-core/src/airflow/ui/src/components/MarkdownModal.test.tsx
+++ b/airflow-core/src/airflow/ui/src/components/MarkdownModal.test.tsx
@@ -96,6 +96,7 @@ describe("MarkdownModal", () => {
 
   it("toggles between the textarea and a rendered preview while editing", () 
=> {
     // The modal is controlled, so drive mdContent from a stateful wrapper.
+    // eslint-disable-next-line unicorn/consistent-function-scoping -- 
test-local wrapper, keep beside the test
     const ControlledModal = () => {
       const [value, setValue] = useState("");
 
diff --git a/airflow-core/src/airflow/ui/src/hooks/usePluginTabs.tsx 
b/airflow-core/src/airflow/ui/src/hooks/usePluginTabs.tsx
index 0bde4e06e39..ba3f838834b 100644
--- a/airflow-core/src/airflow/ui/src/hooks/usePluginTabs.tsx
+++ b/airflow-core/src/airflow/ui/src/hooks/usePluginTabs.tsx
@@ -44,11 +44,10 @@ export const usePluginTabs = (destination: string): 
Array<TabPlugin> => {
 
   return externalViews.map((view) => {
     // Choose icon based on theme - prefer dark mode icon if available and in 
dark mode
-    let iconSrc = view.icon;
-
-    if (colorMode === "dark" && view.icon_dark_mode !== undefined && 
view.icon_dark_mode !== null) {
-      iconSrc = view.icon_dark_mode;
-    }
+    const iconSrc =
+      colorMode === "dark" && view.icon_dark_mode !== undefined && 
view.icon_dark_mode !== null
+        ? view.icon_dark_mode
+        : view.icon;
 
     const icon =
       iconSrc !== undefined && iconSrc !== null ? (
diff --git a/airflow-core/src/airflow/ui/src/mocks/handlers/log.ts 
b/airflow-core/src/airflow/ui/src/mocks/handlers/log.ts
index 5f6f2eef241..2ad5051ce8d 100644
--- a/airflow-core/src/airflow/ui/src/mocks/handlers/log.ts
+++ b/airflow-core/src/airflow/ui/src/mocks/handlers/log.ts
@@ -30,7 +30,7 @@ const ti = {
     id: "019518f4-1adb-7223-a917-45fe08b78947",
     version_number: 1,
   },
-  duration: 0.203_977,
+  duration: 0.203977,
   end_date: "2025-02-18T12:19:56.467235Z",
   executor: null,
   executor_config: "{}",
diff --git 
a/airflow-core/src/airflow/ui/src/pages/Asset/CreateAssetEventModal.test.tsx 
b/airflow-core/src/airflow/ui/src/pages/Asset/CreateAssetEventModal.test.tsx
index 95c2eaea737..4c3b4e503d1 100644
--- a/airflow-core/src/airflow/ui/src/pages/Asset/CreateAssetEventModal.test.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/Asset/CreateAssetEventModal.test.tsx
@@ -45,6 +45,7 @@ vi.mock("src/components/ui", async (importOriginal) => {
   // Must stay inside the factory: vitest hoists vi.mock above module scope, 
so an outer-scope
   // component cannot be referenced here.
 
+  // eslint-disable-next-line unicorn/consistent-function-scoping -- must stay 
in the vi.mock factory (hoisting)
   const DialogPart = ({ children }: { readonly children?: ReactNode }) => 
<div>{children}</div>;
 
   return {
diff --git 
a/airflow-core/src/airflow/ui/src/pages/TaskInstance/RenderedTemplates.tsx 
b/airflow-core/src/airflow/ui/src/pages/TaskInstance/RenderedTemplates.tsx
index bcd44ef4dd7..de2c6313699 100644
--- a/airflow-core/src/airflow/ui/src/pages/TaskInstance/RenderedTemplates.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/TaskInstance/RenderedTemplates.tsx
@@ -47,7 +47,7 @@ const RenderedTemplatesContent = () => {
             if (value !== null && value !== undefined) {
               const renderedValue =
                 typeof value === "string"
-                  ? value.split("\\n").join("\n").replaceAll(/\\$/gmu, "")
+                  ? value.replaceAll("\\n", "\n").replaceAll(/\\$/gmu, "")
                   : JSON.stringify(value, null, 2);
               const language = detectLanguage(renderedValue);
 
diff --git 
a/airflow-core/src/airflow/ui/src/pages/TaskInstance/TaskInstance.tsx 
b/airflow-core/src/airflow/ui/src/pages/TaskInstance/TaskInstance.tsx
index c6a53a5ece1..80fdd93268e 100644
--- a/airflow-core/src/airflow/ui/src/pages/TaskInstance/TaskInstance.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/TaskInstance/TaskInstance.tsx
@@ -92,21 +92,20 @@ export const TaskInstance = () => {
   const taskCount = Object.entries(taskInstanceSummary?.child_states ?? {})
     .map(([_state, count]) => count)
     .reduce((sum, val) => sum + val, 0);
-  let newTabs = tabs;
-
-  if (taskInstance && taskInstance.map_index > -1) {
-    newTabs = [
-      ...tabs.slice(0, 1),
-      {
-        icon: <MdOutlineTask />,
-        label: translate("tabs.mappedTaskInstances_other", {
-          count: Number(taskCount),
-        }),
-        value: "task_instances",
-      },
-      ...tabs.slice(1),
-    ];
-  }
+  const newTabs =
+    taskInstance && taskInstance.map_index > -1
+      ? [
+          ...tabs.slice(0, 1),
+          {
+            icon: <MdOutlineTask />,
+            label: translate("tabs.mappedTaskInstances_other", {
+              count: Number(taskCount),
+            }),
+            value: "task_instances",
+          },
+          ...tabs.slice(1),
+        ]
+      : tabs;
 
   const { tabs: requiredActionTabs } = useRequiredActionTabs({ dagId, 
dagRunId: runId, taskId }, newTabs, {
     autoRedirect: true,
diff --git a/airflow-core/src/airflow/ui/src/utils/datetimeUtils.test.ts 
b/airflow-core/src/airflow/ui/src/utils/datetimeUtils.test.ts
index 551b4ca084a..2919167a33f 100644
--- a/airflow-core/src/airflow/ui/src/utils/datetimeUtils.test.ts
+++ b/airflow-core/src/airflow/ui/src/utils/datetimeUtils.test.ts
@@ -70,7 +70,7 @@ describe("getDuration & formatDuration", () => {
     expect(getDuration(null, null)).toBe(undefined);
     expect(getDuration(undefined, undefined)).toBe(undefined);
     expect(getDuration(null, "2024-03-14T10:00:10.000Z")).toBe(undefined);
-    expect(renderDuration(0.000_01)).toBe(undefined);
+    expect(renderDuration(0.00001)).toBe(undefined);
   });
 
   it("falls back to current time when endDate is null (running task)", () => {
@@ -91,12 +91,12 @@ describe("getDuration & formatDuration", () => {
   });
 
   it("handles floating point milliseconds", () => {
-    expect(renderDuration(dayjs.duration(10.000_499_738, 
"seconds"))).toBe("00:00:10");
-    expect(renderDuration(10.000_499_738)).toBe("00:00:10");
-    expect(renderDuration(dayjs.duration(10.000_500, 
"seconds"))).toBe("00:00:10.001");
-    expect(renderDuration(10.000_500)).toBe("00:00:10.001");
-    expect(renderDuration(dayjs.duration(10.838_999_738, 
"seconds"))).toBe("00:00:10.839");
-    expect(renderDuration(10.838_999_738)).toBe("00:00:10.839");
+    expect(renderDuration(dayjs.duration(10.000499738, 
"seconds"))).toBe("00:00:10");
+    expect(renderDuration(10.000499738)).toBe("00:00:10");
+    expect(renderDuration(dayjs.duration(10.0005, 
"seconds"))).toBe("00:00:10.001");
+    expect(renderDuration(10.0005)).toBe("00:00:10.001");
+    expect(renderDuration(dayjs.duration(10.838999738, 
"seconds"))).toBe("00:00:10.839");
+    expect(renderDuration(10.838999738)).toBe("00:00:10.839");
   });
 });
 

Reply via email to