Changelog - 2026-10-18
noImplicitAny is on, and sibling packages pin each other exactly
Behavior ChangeIn one line. Projects on @venizia/dev-configs compile with noImplicitAny, and installing one IGNIS package always brings the siblings released with it.
What changed
noImplicitAnyis on intsconfig.base.json. With it off, TypeScript gives up inferring the callback parameters of a method called on a union of array types (Object.values(index).flatMap(classes => classes.map(target => ...))), and editors flag hundreds ofimplicitly has an 'any' typehints that the compiler never reports. With it on, those parameters infer, and only real gaps fail.useUnknownInCatchVariablesis on too. Acatch (error)variable isunknown, so code narrows it before readingerror.message.strictPropertyInitializationstays off: a property injected by a DI decorator has no initializer.- Siblings are pinned exactly. A release wrote
^x.y.zfor the packages of this repository, so a project pinning one package could install the next release's sibling - and a breaking prerelease change with it. The repository's manifests now name each siblingworkspace:*:bun publishwrites the sibling's exact version into the tarball, and development keeps linking the workspace copy. Other dependencies keep a caret.
Who is affected
- Projects on
@venizia/dev-configs. Code with implicitanyfails to compile, andnoEmitOnErrorstops the emit. Fix the reported spots before upgrading dev-configs - add a type annotation, give areduceits generic, read string keys throughObject.entries- or set"noImplicitAny": falsein the project's own tsconfig while you do. - Installers of IGNIS packages. A fresh install resolves the exact set that was released together.
Files: packages/dev-configs/src/tsconfig/tsconfig.base.json, packages/core-server/package.json