Skip to content

build: pnpm catalog за споделените версии — typescript, @types/node, wrangler - #341

Merged
todorkolev merged 1 commit into
mainfrom
build/dep-catalog
Sep 2, 2026
Merged

build: pnpm catalog за споделените версии — typescript, @types/node, wrangler#341
todorkolev merged 1 commit into
mainfrom
build/dep-catalog

Conversation

@todorkolev

Copy link
Copy Markdown
Collaborator

Втори от трите PR-а за зависимостите (след #339, преди #340).

Проблемът

Три пакета бяха декларирани в два workspace-а с различни версии — и никой не го е избирал; двата scaffold комита от 21.05 просто са взели различни числа:

пакет apps/web root
typescript ^5.9.3 ^6.0.3 — мажорно
@types/node ^22 ^25.9.1
wrangler ^4.75.0 ^4.93.1

Резултатът: два компилатора в едно репо, два @types/node в lockfile-а (и дублирани варианти на miniflare/sharp/vite/vitest покрай тях), и wrangler, който в нито един от двата workspace-а не отваря локалния D1.

Какво прави

catalog: в pnpm-workspace.yaml държи по една версия; двата package.json сочат "catalog:". Workspace вече не може да се отклони от другите, без да редактира един файл — разминаването става структурно невъзможно, вместо да разчита някой да го забележи.

  • wrangler ^4.128.0 — ≥4.123 е това, което отваря локалния D1 (4.93.1 пада на _cf_ALARM has 3 columns but 2 values). Досега това се заобикаляше с пин извън репото; вече не е нужен. Проверено: workspace бинарът чете истинската локална база. Всеки 4.12x wrangler носи miniflare 5 alpha като своя зависимост — пинът е на Cloudflare, не наш; същата линия върти локалния пайплайн от 4.123.0. @cloudflare/vite-plugin още дърпа miniflare 4, тъй че двата съжителстват до неговия bump (1.37 → 1.54, отделна промяна).
  • @types/node ^24.0.0 — съвпада с единствения runtime (build: една версия на Node навсякъде (24) и Dependabot за npm #340); 22 и 25 изчезват от lockfile-а.
  • typescript ^6.0.3 — root вече беше там; apps/web минава на 6 и typecheck-ът е зелен и в двата.

pnpm-lock.yaml е изход на pnpm install — не е редактиран на ръка.

Проверка под Node v24.20.0

lint, typecheck (двата workspace-а), целият turbo пакет (web 521, db 490 …), node --test scripts/*.test.mjs — всичко зелено. Workspace wrangler 4.128.0 отваря локалния D1 (published=279).

🤖 Generated with Claude Code

https://claude.ai/code/session_013pBk7JaPgpsgELYGZgnkwt

@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown

Test coverage

Workspace Lines Δ Branches Δ Functions Statements
apps/etl 75.43% +1.43pp 63.52% +5.32pp 70.00% 74.11%
apps/web 91.50% +0.50pp 83.11% +0.71pp 92.00% 90.34%
packages/config 92.85% +0.05pp 72.22% +0.02pp 92.85% 89.18%
packages/db 94.67% +0.17pp 79.32% +0.02pp 87.50% 91.75%
packages/ingest 90.42% +4.12pp 85.82% +5.42pp 82.05% 88.65%
packages/shared 95.50% +0.00pp 80.83% +0.03pp 92.30% 89.56%
packages/test-support 100.00% +0.00pp 100.00% +0.00pp 100.00% 100.00%
Total (informational) 92.01% 81.94% 88.37% 90.02%

✅ No workspace dropped below its baseline (tolerance 0.5pp).

📈 Coverage rose by more than 1pp — run node scripts/check-coverage.mjs --update locally and commit coverage-baseline.json to ratchet the threshold up.

…wrangler

Три пакета бяха декларирани в два workspace-а с различни версии:
typescript ^5.9.3 (web) срещу ^6.0.3 (root) - мажорно; @types/node ^22
срещу ^25.9.1; wrangler ^4.75.0 срещу ^4.93.1. Никой не го е избирал -
двата scaffold комита от 21.05 просто са взели различни числа. Резултатът
е два компилатора в едно репо, два @types/node в lockfile-а и wrangler,
който в нито един от двата workspace-а не отваря локалния D1.

Catalog в pnpm-workspace.yaml държи по една версия, а package.json-ите
сочат "catalog:". Така workspace не може да се отклони от другите, без
да редактира ЕДИН файл - разминаването става структурно невъзможно,
вместо да разчита някой да го забележи.

- wrangler ^4.128.0: >=4.123 е това, което отваря локалния D1 (4.93.1
  пада на "_cf_ALARM has 3 columns but 2 values"). Досега това се
  заобикаляше с пин ИЗВЪН репото; вече не е нужен. Всеки 4.12x wrangler
  носи miniflare 5 alpha като своя зависимост - пинът е на Cloudflare, не
  наш, и същата линия върти локалния пайплайн от 4.123.0. Проверено:
  workspace бинарът чете истинската локална база.
- @types/node ^24.0.0: съвпада с единствения runtime (build/node-24);
  22 и 25 изчезват от lockfile-а, заедно с дублираните им варианти на
  miniflare, sharp, vite и vitest.
- typescript ^6.0.3: root вече беше там; apps/web минава на 6 и
  typecheck-ът е зелен и в двата workspace-а.

Lockfile-ът е изход на pnpm install, не ръчна редакция. Проверено под
Node 24: lint, typecheck, целият turbo пакет, node --test scripts/*.

По ревюто: @cloudflare/vite-plugin се вдига до ^1.54.3 (peer wrangler
^4.128.0). 1.37 викаше unstable_getWorkerNameFromProject (махнато в
4.103) и старата сигнатура на unstable_printBindings (сменена в 4.128) -
deploy и typecheck не ги стигаха, но клавишът "b" във Vite дев сървъра
даваше TypeError. Бъмпът маха и дублирания miniflare 4, който старият
плъгин носеше. wrangler 4.128 обявява @cloudflare/workers-types ^5 като
незадължителен peer; репото е на 4.x - само експортираните декларации на
wrangler го внасят, CLI и "wrangler types --check" не са засегнати;
workers-types 5 е мажор, отложен за след релийза, и е документиран в
catalog-а.

Верификация 2 под Node 24: lint, typecheck, wrangler types --check, целият
turbo пакет (8/8), vite build на web - зелени.
@todorkolev
todorkolev merged commit 15818e7 into main Sep 2, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant