Skip to content

rune-langium / codegen/src/export / GenericModelEmitter

Class: GenericModelEmitter<T> ​

Defined in: packages/codegen/src/emit/generic-model-emitter.ts:33

Parameterized WholeModelEmitter that wraps any NamespaceEmitter plus a LanguageProfile (019 spec §3.2). Collapses the "per-namespace then aggregate" pattern into one place so individual targets only need to ship a NamespaceEmitter + a Profile.

Dispatch flow:

  1. Call the inner NamespaceEmitter for each namespace with suppressBoilerplate: true so shared runtime helpers are emitted once via the Profile's sidecar, not duplicated across per-namespace files.
  2. Resolve the layout (defaults to 'barrel' here — the library default of 'per-namespace' is handled one layer up in resolveEmitter before reaching this class).
  3. For 'single-file': check the Profile's singleFileLimits, then call concatenate(). Emit a fatal diagnostic if exceeded.
  4. For 'barrel': emit per-namespace outputs + the Profile's barrel + the Profile's sidecars.

Type Parameters ​

Type ParameterDefault type
T extends TargetTarget

Implements ​

Constructors ​

Constructor ​

ts
new GenericModelEmitter<T>(innerCtor, profile): GenericModelEmitter<T>;

Defined in: packages/codegen/src/emit/generic-model-emitter.ts:34

Parameters ​

ParameterType
innerCtorNamespaceEmitterConstructor
profileLanguageProfile<T>

Returns ​

GenericModelEmitter<T>

Methods ​

emit() ​

ts
emit(
   walks, 
   registry, 
   options
): Promise<GeneratorOutput[]>;

Defined in: packages/codegen/src/emit/generic-model-emitter.ts:39

Parameters ​

ParameterType
walksReadonlyMap<string, NamespaceWalkResult>
registryNamespaceRegistry
optionsGeneratorOptions

Returns ​

Promise<GeneratorOutput[]>

Implementation of ​

WholeModelEmitter.emit

Core packages released under MIT. Studio app released under FSL-1.1-ALv2.