From e30fdaa004dbea61f68a929b8a4d59888748baed Mon Sep 17 00:00:00 2001 From: Crimson Date: Sat, 29 Aug 2026 21:38:40 +0500 Subject: [PATCH] =?UTF-8?q?docs:=20=D0=B7=D0=B0=D1=84=D0=B8=D0=BA=D1=81?= =?UTF-8?q?=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20=D0=B8=D0=B7=D0=B2?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D0=BD=D0=BE=D0=B5=20=D0=BE=D0=B3=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=87=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B5=D1=80=D0=BA=D0=B8=20=D1=82=D0=B8=D0=BF=D0=BE=D0=B2?= =?UTF-8?q?=20frontend?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit vue-tsc 0.35.0 (2022) шаблоны Vue практически не типизирует: build:prod проходит зелёной, не давая гарантии, которую обещает. Замер записан — на паре typescript@5.9 + vue-tsc@2.2 тот же код даёт около 155 ошибок в четырёх файлах. Обновление typechecker'а тянет vue 3.2 -> 3.5, а за ним element-plus, pinia и vue-router, поэтому вынесено в отдельную работу. На безопасность не влияет: уязвимые пакеты обновляются движением lockfile внутри объявленных диапазонов. --- docs/02-build-layer-and-package.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/docs/02-build-layer-and-package.md b/docs/02-build-layer-and-package.md index 513be77..cedfc39 100644 --- a/docs/02-build-layer-and-package.md +++ b/docs/02-build-layer-and-package.md @@ -111,6 +111,29 @@ Bun обновляется отдельно от остальных: оркес полного прохода `bun test → tsc → compile → приёмка на Debian`, а не строки в общем патче. +### Известное ограничение: проверка типов frontend почти ничего не проверяет + +`pnpm run build:prod` выполняет `vite build && vue-tsc --noEmit`, но `vue-tsc` +здесь версии `0.35.0` (2022 год) и шаблоны Vue практически не типизирует. +Проверка проходит зелёной, не давая гарантии, которую обещает. + +Замер сделан: на паре `typescript@5.9` + `vue-tsc@2.2` тот же исходный код даёт +**около 155 ошибок типов** в четырёх файлах — почти все одного вида +(`possibly 'undefined'` при обращении к необязательным полям модели конфига +Hysteria в шаблоне) плюс несовместимость `DefaultRow` с `PeerVo` в слотах +таблицы пиров. + +Это не дефект безопасности и не блокер релиза: ошибки существуют в коде уже +сейчас и ни на что в рантайме не влияют. Но обновление typechecker'а тянет за +собой обновление `vue` (3.2 → 3.5, иначе `vue-tsc` 2.x не разбирает +`JSX.IntrinsicElements`), а за ним — `element-plus`, `pinia` и `vue-router`. +То есть это отдельная работа с собственной проверкой на живой панели, а не +строка в security-патче. + +Ограничение на безопасность не влияет: уязвимые пакеты frontend обновляются +независимо от версии typechecker'а, движением lockfile внутри уже объявленных +диапазонов (см. `pnpm.overrides` в `apps/frontend/package.json`). + ### Проверка зависимостей на уязвимости `tools/build/lib/security.sh` — обязательный шаг сборки между тестами админки и