From a91b9f288fb20caa096a89ca0844dbbb6e93f7b3 Mon Sep 17 00:00:00 2001 From: AustinMroz Date: Sat, 22 Nov 2025 12:43:05 -0800 Subject: [PATCH] When filtering by IO type, put wildcards last (#6829) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit | Before | After | | ------ | ----- | | before | after | ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6829-When-filtering-by-IO-type-put-wildcards-last-2b36d73d36508196a41fed40b62f5b84) by [Unito](https://www.unito.io) --- src/services/nodeSearchService.ts | 15 ++++++++++++++- src/utils/fuseUtil.ts | 7 +++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/services/nodeSearchService.ts b/src/services/nodeSearchService.ts index d2388fc7b..c29507f2e 100644 --- a/src/services/nodeSearchService.ts +++ b/src/services/nodeSearchService.ts @@ -79,9 +79,22 @@ export class NodeSearchService { const results = matchedNodes.filter((node) => { return filters.every((filterAndValue) => { const { filterDef, value } = filterAndValue - return filterDef.matches(node, value, { wildcard }) + return filterDef.matches(node, value) }) }) + if (matchWildcards) { + const alreadyValid = new Set(results.map((result) => result.name)) + results.push( + ...matchedNodes + .filter((node) => !alreadyValid.has(node.name)) + .filter((node) => { + return filters.every((filterAndValue) => { + const { filterDef, value } = filterAndValue + return filterDef.matches(node, value, { wildcard }) + }) + }) + ) + } return options?.limit ? results.slice(0, options.limit) : results } diff --git a/src/utils/fuseUtil.ts b/src/utils/fuseUtil.ts index 8967ccd2a..d0b8020d1 100644 --- a/src/utils/fuseUtil.ts +++ b/src/utils/fuseUtil.ts @@ -62,10 +62,9 @@ export class FuseFilter { return true } const options = this.getItemOptions(item) - return ( - options.includes(value) || - (!!wildcard && options.some((option) => option === wildcard)) - ) + return wildcard + ? options.some((option) => option === wildcard) + : options.includes(value) } }