core/validators/readme.validator.ts
core/validators/readme.validator.ts is a file in GovLab Docs. 49 lines of code and 6 definitions.
import type { GovernanceEngine, ReadmeContext } from "#types/document.output.types";
import {
conceptFinding,
declaredDocFinding,
docsFieldFinding,
docsIncomplete,
principleFinding,
} from "#configuration/strings/package.strings";
import type { DiscoveredModule } from "#types/readme.types";
import { MANIFEST_FILE } from "#configuration/constants/document.constants";
import type { ManifestModule } from "#types/manifest.types";
const manifestAt = function manifestAt(module: ManifestModule): string {
return [module.label, MANIFEST_FILE].join("/");
};
const asDiscovered = function asDiscovered(module: ManifestModule): DiscoveredModule {
return { axis: module.group, dir: module.dir, manifest: module.manifest, slug: module.slug };
};
const ontologyMessages = function ontologyMessages(engine: GovernanceEngine, module: ManifestModule): string[] {
const at = manifestAt(module);
return [
...engine
.governPrinciples(module.manifest)
.map((finding) => principleFinding(at, finding.axis, finding.detail)),
...engine.governConcepts(module.manifest).map((finding) => conceptFinding(at, finding.axis, finding.detail)),
...engine
.governDeclaredDocs(asDiscovered(module))
.map((finding) => declaredDocFinding(at, finding.doc, finding.heading, finding.axis, finding.detail)),
];
};
const docsMessages = function docsMessages(
engine: GovernanceEngine,
module: ManifestModule,
context: ReadmeContext,
): string[] {
if (module.manifest.docs !== undefined) {
const at = manifestAt(module);
return engine
.governManifest(asDiscovered(module))
.map((finding) => docsFieldFinding(at, finding.field, finding.axis, finding.detail));
}
return context.onDiskReadme.startsWith(context.generatedPrefix) ? [docsIncomplete(module.label)] : [];
};
export const governanceMessages = function governanceMessages(
engine: GovernanceEngine,
module: ManifestModule,
context: ReadmeContext,
): string[] {
return [...ontologyMessages(engine, module), ...docsMessages(engine, module, context)];
};