Skip to content

Commit a6ae2d3

Browse files
committed
fix: review update
1 parent 9cf8d69 commit a6ae2d3

2 files changed

Lines changed: 16 additions & 8 deletions

File tree

src/__tests__/patternFly.search.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ describe('filterPatternFly', () => {
9292

9393
controller.abort();
9494

95-
const result = await filterPatternFly(undefined, mockResources as any, controller.signal);
95+
const result = await filterPatternFly(undefined, mockResources as any, { signal: controller.signal });
9696

9797
expect(result.byEntry).toEqual([]);
9898
expect(result.byResource.size).toBe(0);
@@ -228,7 +228,7 @@ describe('dynamicFilterPatternFly', () => {
228228

229229
const signals = memoSpy.mock.calls
230230
.map(call => call[2])
231-
.filter(signal => signal instanceof AbortSignal);
231+
.filter(({ signal }: any) => signal instanceof AbortSignal);
232232

233233
expect(signals.length).toBe(memoSpy.mock.calls.length);
234234
expect(new Set(signals).size).toBe(1);
@@ -241,12 +241,12 @@ describe('dynamicFilterPatternFly', () => {
241241
const first = await filterPatternFly.memo(
242242
filters,
243243
mockResources as any,
244-
new AbortController().signal
244+
{ signal: new AbortController().signal }
245245
);
246246
const second = await filterPatternFly.memo(
247247
filters,
248248
mockResources as any,
249-
new AbortController().signal
249+
{ signal: new AbortController().signal }
250250
);
251251

252252
expect(first.byEntry).toEqual(second.byEntry);

src/patternFly.search.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -139,15 +139,17 @@ const SEARCH_FILTERS: (keyof FilterPatternFlyFilters)[] = ['name', 'section', 'c
139139
* @param {FilterPatternFlyFilters} filters - Available filters for PatternFly data.
140140
* @param [mcpResources] - An optional map of available PatternFly documentation entries to search.
141141
* Internally, defaults to `getPatternFlyMcpResources.resources`
142-
* @param [signal] - Optional abort signal; breaks the resource loop when aborted.
142+
* @param [settings] - Optional settings object
143+
* @param [settings.signal] - Optional abort signal; breaks the resource loop when aborted.
144+
* @param [settings.signalError] - Optional error to throw when aborted.
143145
* @returns {Promise<FilterPatternFlyResults>} - Filtered PatternFly results.
144146
* - `byEntry`: Array of filtered documentation entries.
145147
* - `byResource`: Map of filtered resources by resource name.
146148
*/
147149
const filterPatternFly = async (
148150
filters: FilterPatternFlyFilters | undefined,
149151
mcpResources?: Promise<PatternFlyMcpAvailableResources> | Map<string, PatternFlyMcpResourceFilteredMetadata>,
150-
signal?: AbortSignal
152+
{ signal, signalError }: { signal?: AbortSignal, signalError?: Error | DOMException } = {}
151153
): Promise<FilterPatternFlyResults> => {
152154
const getResources = await (mcpResources || getPatternFlyMcpResources.memo());
153155
const resources = (getResources as PatternFlyMcpAvailableResources)?.resources ||
@@ -177,6 +179,10 @@ const filterPatternFly = async (
177179
};
178180

179181
for (const [name, resource] of resources) {
182+
if (signal?.aborted && signalError) {
183+
throw signalError;
184+
}
185+
180186
if (signal?.aborted) {
181187
break;
182188
}
@@ -305,10 +311,12 @@ const dynamicFilterPatternFly = async (
305311
);
306312

307313
try {
314+
const settings = { signal, signalError: new DOMException('Filter operation aborted', 'AbortError') };
315+
308316
return await Promise.any([
309317
...filtersToTry.map(filter =>
310-
passFail(filterPatternFly.memo({ ...filters, [filter]: searchQuery }, mcpResources, signal))),
311-
passFail(filterPatternFly.memo(filters, mcpResources, signal))
318+
passFail(filterPatternFly.memo({ ...filters, [filter]: searchQuery }, mcpResources, settings))),
319+
passFail(filterPatternFly.memo(filters, mcpResources, settings))
312320
]);
313321
} catch {
314322
// Technically, this should never get to this point since we're passing the original filters as

0 commit comments

Comments
 (0)