Options handed to every schematic.
runtime: TargetRuntime
The project's runtime target, so a schematic can shape platform-specific output.
plugins: ReadonlySet<string>
The @setu-ts packages detected in the target project.
now: () => number
Wall-clock milliseconds, injected so timestamped output (the migration schematic) is deterministic under test.
modules: readonly string[]
The domain modules already present under src/modules/, sorted.
Gathered by the command layer (utils/module-scanner.ts) so the module
schematic can render an aggregate barrel listing every module while staying
a pure function — the same route SchematicOptions.plugins takes
for the detected plugin set.
Read by the module schematic only, exactly as now is read only by
migration and plugins only by the gated schematics.
OPTIONAL purely for backward compatibility: setu generate always supplies
it, but this interface is published, and a custom schematic's own test
constructs one — making it required would break that test's compile with no
deprecation path available (§9.2 assumes a replacement API, and there is
none for an added field). Treat an absent value as "no modules yet".
legacyModules: readonly string[]
Pre-module-declaration directories that retain the old controller/service
barrel exports until their application converts to MODULES.
Optional for the same public-interface compatibility reason as modules.
A missing value means there are no legacy directories to preserve.
artifacts: Readonly<Record<string, readonly string[]>>
The generated artifacts already present in the project, keyed by the schematic
name that emits them ({ 'health-indicator': ['external-api'] }).
Gathered by the command layer (utils/artifact-scanner.ts) so a wired schematic
can render a barrel listing every artifact of its family while staying a pure
function — the same route SchematicOptions.modules takes for domain
modules.
Kept separate from modules rather than folded into it because the two admission
rules genuinely differ: a module is a DIRECTORY that must hold both a controller
and a service, while these families are FILES identified by a suffix.
OPTIONAL for the same reason modules is: this interface is published, a custom
schematic's own test constructs one, and there is no deprecation path for making
an added field required. Treat an absent value as "no artifacts yet".
migrations: readonly string[]
The migrations already present, oldest first.
Optional on the M58 modules precedent — a required field would break a
custom schematic's own test with no deprecation path.