core/selectors/config.selector.ts
core/selectors/config.selector.ts is a file in GovLab Quality. 37 lines of code and 7 definitions.
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))
: {};
};