in src/api/catalog-search/catalog-search.ts [249:280]
private filter(
results: CatalogSearchResults,
filters: CatalogSearchFilters
): CatalogSearchResults {
const { cdkType, cdkMajor, keywords, languages, tags } = filters;
const copiedResults = new Map(results);
const filterFunctions = [
FILTER_FUNCTIONS.cdkType(cdkType),
// Ignore major version filter if no CDK Type is defined
FILTER_FUNCTIONS.cdkMajor(cdkType ? cdkMajor : undefined),
FILTER_FUNCTIONS.keywords(keywords),
FILTER_FUNCTIONS.languages(languages),
FILTER_FUNCTIONS.tags(tags),
].filter(Boolean) as ((pkg: ExtendedCatalogPackage) => boolean)[];
copiedResults.forEach((result) => {
let isFiltered = false;
filterFunctions.forEach((filterFn) => {
if (!isFiltered && !filterFn(result)) {
isFiltered = true;
}
});
if (isFiltered) {
copiedResults.delete(result.id);
}
});
return copiedResults;
}