From 162316f74a3a87bd080ddd371530e94e64cdf117 Mon Sep 17 00:00:00 2001 From: Ricardo Devis Agullo Date: Tue, 19 Aug 2025 22:08:07 +0200 Subject: [PATCH 1/2] filter more fields --- src/registry/routes/index.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/registry/routes/index.ts b/src/registry/routes/index.ts index 72344887..892709ba 100644 --- a/src/registry/routes/index.ts +++ b/src/registry/routes/index.ts @@ -106,6 +106,12 @@ export default function (repository: Repository) { ); } else { const state = req.query['state'] || ''; + const author = req.query['author'] || ''; + const keyword = Array.isArray(req.query['keyword']) + ? req.query['keyword'] + : req.query['keyword'] + ? [req.query['keyword']] + : ''; let list = componentResults; if (!res.conf.discovery.experimental) { list = list.filter( @@ -115,6 +121,20 @@ export default function (repository: Repository) { if (state) { list = list.filter((component) => component.oc?.state === state); } + if (author) { + list = list.filter((component) => + typeof component.author === 'string' + ? component.author === author + : component.author?.name === author + ); + } + if (keyword) { + list = list.filter((component) => + Array.isArray(component.keywords) + ? component.keywords.some((keyword) => keyword.includes(keyword)) + : component.keywords === keyword + ); + } res.status(200).json( Object.assign(baseResponse, { From 1f7aca1da0d0a2f35096901b47193d2103012a6a Mon Sep 17 00:00:00 2001 From: Ricardo Devis Agullo Date: Tue, 19 Aug 2025 22:11:01 +0200 Subject: [PATCH 2/2] fix filter --- src/registry/routes/index.ts | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/registry/routes/index.ts b/src/registry/routes/index.ts index 892709ba..0b6e6028 100644 --- a/src/registry/routes/index.ts +++ b/src/registry/routes/index.ts @@ -107,7 +107,7 @@ export default function (repository: Repository) { } else { const state = req.query['state'] || ''; const author = req.query['author'] || ''; - const keyword = Array.isArray(req.query['keyword']) + const keywords = Array.isArray(req.query['keyword']) ? req.query['keyword'] : req.query['keyword'] ? [req.query['keyword']] @@ -128,11 +128,16 @@ export default function (repository: Repository) { : component.author?.name === author ); } - if (keyword) { + if (keywords) { list = list.filter((component) => Array.isArray(component.keywords) - ? component.keywords.some((keyword) => keyword.includes(keyword)) - : component.keywords === keyword + ? keywords.some( + (requestedKeyword) => + component.keywords?.some((keyword) => + keyword.includes(String(requestedKeyword)) + ) ?? false + ) + : keywords.includes(component.keywords ?? '') ); }