core/converters/surface.converter.ts
core/converters/surface.converter.ts is a file in GovLab Quality. 25 lines of code and 4 definitions.
import type { OwnerOverride, OwnershipSurface } from "#types/canon.types";
const mergeSurface = function mergeSurface(
surface: OwnershipSurface,
langMap: Record<string, string>,
): OwnershipSurface {
const merged: OwnershipSurface = { ...surface, ownerByLanguage: { ...surface.ownerByLanguage } };
for (const [lang, tool] of Object.entries(langMap)) {
if (!surface.fixedOwners.includes(lang)) {
merged.ownerByLanguage[lang] = tool;
}
}
return merged;
};
export const mergeOwnership = function mergeOwnership(
surfaces: OwnershipSurface[],
override?: OwnerOverride,
): OwnershipSurface[] {
if (!override) {
return surfaces;
}
return surfaces.map((surface) => {
const langMap = override[surface.id];
return langMap ? mergeSurface(surface, langMap) : surface;
});
};