Skip to content

build: upgrade nanoid to v6 - #104

Closed
agentHits wants to merge 1 commit into
AgentHits-Devfrom
build/nanoid-v6
Closed

agentHits wants to merge 1 commit into
AgentHits-Devfrom
build/nanoid-v6

Conversation

@agentHits

Copy link
Copy Markdown
Collaborator

Зачем

nanoid 3.x поддерживается только ради CommonJS, а apps/dokploy и packages/server уже ESM ("type": "module"). Переход на актуальную ветку 6.x: nanoid() и customAlphabet() быстрее, исправлены ошибки customRandom и зависание на отрицательном размере.

Что изменилось

  • nanoid 3.3.20 → 6.0.2 (выпуск 2026-10-05), точная версия, одинаково в apps/dokploy/package.json и packages/server/package.json.
  • bun.lock: меняется только дерево nanoid; postcss сохраняет свою копию nanoid@3.3.20.
  • Новый тест apps/dokploy/__test__/lib/id-format.test.ts: nanoid() даёт 21 символ из A-Za-z0-9_-, generateAppName() заканчивается 6-символьным суффиксом из customAlphabet.

Ломающие изменения по changelog и их влияние:

  • 4.0: убран CommonJS, убрана поддержка Node 10/12. В коде нет require("nanoid"), все импорты — ESM в серверном коде, сборка esbuild идёт в format: "esm".
  • 5.0: переход на Web Crypto, убран nanoid/async, убраны Node 14/16. nanoid/async нигде не используется.
  • 6.0: убраны Node 18 и 20 (engines: ^22 || ^24 || >=26). Локально и в CI Node 24.22.1.
  • Сигнатуры nanoid(size?) и customAlphabet(alphabet, size), размер по умолчанию 21 и алфавит по умолчанию не менялись, поэтому формат id строк БД, токенов и суффикса имени приложения прежний.

Проверки

  • bun install --frozen-lockfile до и после — без изменений.
  • bun run typecheck — все 4 воркспейса без ошибок.
  • bun run test в apps/dokploy: 374 файла и 4286 тестов прошли, 1 файл и 5 тестов пропущены. Два теста упали по таймингу из-за нагрузки на машину (backup-failure-output — таймаут 5 с, secret-scrub — 3024 мс при лимите 3000); при повторном запуске вместе с новым тестом все 118 тестов прошли.
  • bunx biome check по изменённым файлам — чисто.
  • bun audit --audit-level=moderate — уязвимостей нет.
  • next build и сборку образа локально не запускал — их проверяет CI.

Что проверить вручную на dev

  • Создать новый проект и сервис (приложение и базу): id в URL выглядят как раньше (21 символ), имя приложения заканчивается 6-символьным суффиксом из строчных букв и цифр.
  • Существующие проекты и сервисы открываются, деплой существующего сервиса проходит.

🤖 Generated with Claude Code

Что: nanoid 3.3.20 -> 6.0.2 (точная версия) в apps/dokploy и
packages/server. Добавлен тест формата id (21 символ A-Za-z0-9_-) и
6-символьного суффикса имени приложения из customAlphabet.

Зачем: ветка 3.x поддерживается только ради CommonJS; оба пакета уже
ESM. В 6.x nanoid() и customAlphabet() быстрее, исправлены ошибки
customRandom и защита от отрицательного размера.

Риски: v4 убрала CommonJS, v5 убрала nanoid/async и Node 14/16, v6
требует Node ^22 || ^24 || >=26. В коде нет require("nanoid") и
удалённых точек входа, всё в серверном ESM-коде; Node 24.22.1. API
nanoid() и customAlphabet(alphabet, size), размер по умолчанию 21 и
алфавит не менялись. postcss сохраняет свою копию nanoid 3.

Проверки: bun install --frozen-lockfile, bun run typecheck, полный
набор тестов (4286 пройдено, 2 упавших по таймингу под нагрузкой
прошли при повторном запуске), biome check, bun audit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@agentHits

Copy link
Copy Markdown
Collaborator Author

Влито в составе #108 одним PR, чтобы вся вторая волна вышла одной версией. Этот PR закрываю без слияния, его коммит есть в #108.

@agentHits agentHits closed this Oct 27, 2026
@agentHits
agentHits deleted the build/nanoid-v6 branch October 27, 2026 18:51
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