# core/selectors/config.selector.ts

> 37 lines of code and 7 definitions.

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

Listed in [core/selectors](https://banes-lab.com/api/source/quality/core/selectors.md), after [core/selectors/concept.selector.ts](https://banes-lab.com/source/quality/core/selectors/concept.selector.ts.md) and before [core/selectors/construct.selector.ts](https://banes-lab.com/source/quality/core/selectors/construct.selector.ts.md).

## Definitions

- `sectionOf` (lexical_declaration, line 36, exported)
- `govlabEslintSettings` (lexical_declaration, line 25, exported)
- `docsConfig` (lexical_declaration, line 9, exported)
- `qualityEngineConfig` (lexical_declaration, line 20, exported)
- `engine` (lexical_declaration, line 21, exported)
- `eslint` (lexical_declaration, line 26, exported)
- `section` (lexical_declaration, line 37, exported)

## Contained in

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

## Uses

- [core/selectors/exclusions.selector.ts](https://banes-lab.com/source/quality/core/selectors/exclusions.selector.ts.md)

## Used by

- [core/adapters/tool.prettier.adapter.ts](https://banes-lab.com/source/quality/core/adapters/tool.prettier.adapter.ts.md)
- [core/resolvers/tool.resolver.ts](https://banes-lab.com/source/quality/core/resolvers/tool.resolver.ts.md)

## Linked from

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

## Source

```typescript
import type {
    GovlabConfig,
    GovlabEslintSettings,
    ResolvedDocsConfig,
    ResolvedQualityEngineConfig,
} from "#types/config.types";
import { masterExcludeMarkers } from "#core/selectors/exclusions.selector";

export const docsConfig = function docsConfig(config: GovlabConfig): ResolvedDocsConfig {
    return {
        boundaryDocs: config.docs?.boundaryDocs ?? [],
        harness: config.docs?.harness,
        hostTokens: config.docs?.hostTokens ?? [],
        ignore: config.docs?.ignore ?? [],
        members: config.docs?.members ?? [],
        prettierConfig: config.docs?.prettierConfig,
    };
};

export const qualityEngineConfig = function qualityEngineConfig(config: GovlabConfig): ResolvedQualityEngineConfig {
    const engine = config.qualityEngine ?? {};
    return { eslintConfig: engine.eslintConfig, root: engine.root, stylelintConfig: engine.stylelintConfig };
};

export const govlabEslintSettings = function govlabEslintSettings(config: GovlabConfig): GovlabEslintSettings {
    const eslint = config.eslint ?? {};
    return {
        contentPolicy: config.contentPolicy ?? {},
        exclude: masterExcludeMarkers(config),
        hostPolicy: config.hostPolicy ?? {},
        layout: eslint.layout ?? {},
        scopes: eslint.scopes ?? {},
    };
};

export const sectionOf = function sectionOf(config: GovlabConfig, key: string): Record<string, unknown> {
    const section = config[key];
    return typeof section === "object" && section !== null && !Array.isArray(section)
        ? Object.fromEntries(Object.entries(section))
        : {};
};
```
