Changelog - 2026-10-17
A generated artifact index for the application
New FeatureIn one line. An application returns the index ignis-artifacts generate emits from artifacts(), the same file an IGNIS backend passes to createAppConfig.
typescript
import { BaseArdorApplication, type IApplicationInfo, type IArtifactIndex } from '@venizia/ardor';
const GeneratedArtifacts: IArtifactIndex = { services: [] }; // from src/_artifacts.ts
class Application extends BaseArdorApplication {
getAppInfo(): IApplicationInfo {
return { name: 'shop', version: '1.0.0', description: 'Shop admin' };
}
override artifacts(): Array<IArtifactIndex> {
return [GeneratedArtifacts];
}
bindContext(): void {}
}What changed
artifacts()on the application. It returnsArray<IArtifactIndex>and defaults to[]. An index holds each stereotyped class by value, so a bundler keeps the module instead of dropping a side-effect import.start()checks the index. It throws[artifacts] '<kind>' lists <Class>, which was never discoveredwhen a listed class has no stereotype or the index is stale.- An IGNIS artifact group is accepted.
start()checks the flat index a group carries ascontent. A group withoutcontentis resolved first:start()awaits itsresolve()and checks the index it returns. A group with neithercontentnor aresolvefunction makesstart()throw, namingAutoArtifactsandIgnisArtifactsPlugin. @venizia/ignis-boot/autoregisters the application's decorated classes.@venizia/ignis-boot0.2.1-1 addsAutoArtifactsandIgnisArtifactsPlugin. ReturnAutoArtifactsfromartifacts():bun runresolves it instart(), andBun.buildwith the plugin gives the bundle its class list, so it carries no scanner: a server build resolves it through aresolve(), a browser build imports it eagerly ascontent. In a browser build, import the auto module from the application's own module, not from a shared kit. A class that loses its decorator is simply not registered.IArtifactIndexis exported from@venizia/ardorand@venizia/ardor-kernel. It has the six fields the generator emits,configurationstocontrollers.
Who is affected
- An application that imports a hand-written
register-artifactsfile. Nothing breaks. To move to the shared generator, install@venizia/ignis-boot0.2.1-1, runignis-artifacts generate --root src --out src/_artifacts.ts --source-module @venizia/ardorand return its export fromartifacts(). - Everyone else. No action needed. Discovery binds the same classes as before.