Документація / Changelog
Changelog
Історія релізів пакетів Hopak з посиланнями на відповідні гіди з оновлення.
Нотатки до релізів пакетів Hopak. Кожен розділ посилається на відповідний гід з оновлення.
Поточні версії
| Пакет | Версія | Опис |
|---|---|---|
@hopak/core | 0.5.0 | ядро фреймворку |
@hopak/cli | 0.3.9 | CLI-інструмент |
@hopak/auth | 0.1.9 | auth + OAuth |
@hopak/testing | 0.2.9 | in-process тестовий сервер |
@hopak/common | 0.1.13 | спільні примітиви |
0.5.0 — db.sql, db.builder(), deprecated db.execute() (breaking)
- Новий примітив:
db.sql— tagged-template SQL для тих ~5% запитів, що.model()не покриває. Інтерполяції стають driver-native placeholder-ами (?/$N); значення ніколи не потрапляють у текст SQL, тож${attacker}безпечний by construction. - Driver-native на кожному діалекті: SQLite йде через
bun:sqlite.prepare().all(), Postgres черезpostgres.js sql.unsafe(), MySQL черезmysql2 pool.execute(). Drizzle на шляху сирого SQL більше немає. db.raw()→db.builder(). Те саме повернення (Drizzle-клієнт діалекту), зрозуміліша назва. Breaking rename, механічна пошук+заміна.db.execute(sql, params?)позначено@deprecated— залишається як forwarder, щоб наявні файли міграцій компілювалися. Новий код пишеdb.sql. Прибрано в 0.6.0.MigrationContextотримуєctx.sqlпоруч зctx.execute(теж deprecated).hopak migrate newза замовчуванням генеруєctx.sql.- Внутрішній код фреймворку (
tracker.ts,introspect.ts) переведено з cast-хакаdb.raw() as { all?, execute? }наdb.sql.
0.4.9 — Гігієна prototype-pollution у deepMerge
deepMergeу@hopak/commonвідкидає ключі__proto__,constructor,prototypeз source, тож JSON-пейлоад більше не може підмінити prototype chain результату. Перші регресійні тести для пакетаcommon.- Algorithm pinning у JWT-верифікації
@hopak/auth: верифікатор більше не приймає токен, підписаний відмінним від налаштованого алгоритмом — закриває algorithm-confusion атаку. - Static-file handler кешує canonical root path (realpath) на інстанс; symlink, що розрішується за межі public root, і далі падає коректно.
FileField.maxSize(n)тепер реально обмежує Valibot-схему на валідації, а не лише на config-write.
0.4.0 — Valibot, безпечніша валідація
- Runtime валідації переведено з Zod на Valibot: бандл ~10× менший, парсинг ~2–3× швидший.
validate()таbuildModelSchema()зберігають той самий API; model-driven валідація лишається незмінною.RouteSchemas.body | query | paramsтепер мають типv.GenericSchemaзамістьz.ZodType.@hopak/coreбільше не залежить відzod.- Експорт типу
ZodFieldSchemaперейменовано наFieldSchema.
0.3.0 — Міграції
- Нові підкоманди
hopak migrate:init,new,up,down,status. hopak syncстає шляхом dev-бутстрапу; він відмовляється виконуватись, щойно вapp/migrations/з’являються файли.hopak devпропускає викликdb.sync()на старті, коли є міграції — рантайм ніколи не змінює схему самостійно.hopak syncтепер виводить попередження про дрейф, коли моделі оголошують колонки, яких немає в активній БД..index()на полі тепер дійсно створюєCREATE INDEX IF NOT EXISTSпід час sync (раніше мовчки ігнорувалося).- Новий публічний API:
ctx.db.execute(sql, params?)для сирого SQL.
0.2.0 — Скафолдинг CRUD (breaking)
- CRUD-ендпоінти переходять з runtime-генерації на скафолдинг через
hopak generate crud <model>. { crud: true }на моделях прибрано; файли маршрутів стають реальними.ts, які Ви можете читати й редагувати.- Dev-сертифікати HTTPS вимагають
hopak generate cert— старт більше не викликаєopensslза Вашою спиною. @hopak/testingвідмовляється відwithCrud: true; під’єднуйте маршрути через нові хелпериcrud.*або передавайтеrootDirдля наскрізних тестів.- Прибрано невикористовувані опції моделі:
owner,publicRead,auth,softDelete.
0.1.0 — Перший реліз
- Моделі, зв’язки, ергономіка запитів, валідація, серіалізація, типізовані помилки.
- CRUD, згенерований у рантаймі через
{ crud: true }, dev-сертифікати, створені у рантаймі дляserver.https.enabled. - Перша версія CLI:
hopak new,hopak use,hopak sync,hopak check,hopak dev.