# core/coordinators/emitter.coordinator.ts

> 18 lines of code and 4 definitions.

Tree: GovLab Quality
Language: typescript
Layer: application
Canonical: https://banes-lab.com/anatomy/quality#file-quality-core-coordinators-emitter-coordinator-ts
Source text: https://banes-lab.com/source/quality/core/coordinators/emitter.coordinator.ts.txt

Listed in [core/coordinators](https://banes-lab.com/api/source/quality/core/coordinators.md), after [core/coordinators/concern.coordinator.ts](https://banes-lab.com/source/quality/core/coordinators/concern.coordinator.ts.md) and before [core/coordinators/quality.coordinator.ts](https://banes-lab.com/source/quality/core/coordinators/quality.coordinator.ts.md).

## Definitions

- `generateNativeConfigs` (lexical_declaration, line 10, exported)
- `data` (lexical_declaration, line 15, exported)
- `ownership` (lexical_declaration, line 16, exported)
- `plan` (lexical_declaration, line 17, exported)

## Contained in

- [core/coordinators](https://banes-lab.com/anatomy/quality/folder-quality-core-coordinators.md)

## Uses

- [core/emitters/tool.emitter.ts](https://banes-lab.com/source/quality/core/emitters/tool.emitter.ts.md)

## Linked from

- [core/emitters](https://banes-lab.com/anatomy/quality/folder-quality-core-emitters.md)

## Source

```typescript
import type { ConcernConfig } from "#types/concern.types";
import type { EmitFile } from "#types/emitter.types";
import type { OwnerOverride } from "#types/canon.types";
import { concernsToCanonicalConfig } from "#core/converters/concern.converter";
import { emitConfigs } from "#core/emitters/tool.emitter";
import { loadCanonicalData } from "#core/loaders/canon.loader";
import { mergeOwnership } from "#core/converters/surface.converter";
import { resolveConfig } from "#core/resolvers/plan.resolver";

export const generateNativeConfigs = async function generateNativeConfigs(
    concerns: ConcernConfig,
    languages: string[],
    ownerOverride?: OwnerOverride,
): Promise<EmitFile[]> {
    const data = loadCanonicalData();
    const ownership = mergeOwnership(data.ownership, ownerOverride);
    const plan = resolveConfig({ ...concernsToCanonicalConfig(concerns, data), languages }, { ...data, ownership });
    return "conflicts" in plan ? [] : emitConfigs(plan.perToolConfig);
};
```
