docs: зафиксировать известное ограничение проверки типов frontend
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 внутри объявленных диапазонов.
This commit is contained in:
@@ -111,6 +111,29 @@ Bun обновляется отдельно от остальных: оркес
|
|||||||
полного прохода `bun test → tsc → compile → приёмка на Debian`, а не строки в
|
полного прохода `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` — обязательный шаг сборки между тестами админки и
|
`tools/build/lib/security.sh` — обязательный шаг сборки между тестами админки и
|
||||||
|
|||||||
Reference in New Issue
Block a user