Merge branch 'backstage:master' into master

This commit is contained in:
Gaurav Pandey
2023-07-22 17:17:17 +02:00
committed by GitHub
4 changed files with 42 additions and 3 deletions
+5
View File
@@ -0,0 +1,5 @@
---
'@backstage/plugin-search-backend-node': patch
---
Fix Lunr search engine highlight by ignoring invalid metadata positions.
@@ -1145,6 +1145,35 @@ describe('parseHighlightFields', () => {
bar: 'ghi <>jkl</>',
});
});
it('should filter out non array positions', () => {
expect(
parseHighlightFields({
preTag: '<>',
postTag: '</>',
doc: { foo: 'abc def', bar: 'ghi jkl' },
positionMetadata: {
test: {
foo: {
// invalid position item
position: [null as unknown as number[]],
},
},
anotherTest: {
foo: {
position: [[4, 3]],
},
bar: {
position: [[4, 3]],
},
},
},
}),
).toEqual({
foo: 'abc <>def</>',
bar: 'ghi <>jkl</>',
});
});
});
describe('stopword testing', () => {
@@ -309,8 +309,13 @@ export function parseHighlightFields({
const highlightFieldPositions = Object.values(positionMetadata).reduce(
(fieldPositions, metadata) => {
Object.keys(metadata).map(fieldKey => {
fieldPositions[fieldKey] = fieldPositions[fieldKey] ?? [];
fieldPositions[fieldKey].push(...metadata[fieldKey].position);
const validFieldMetadataPositions = metadata[
fieldKey
]?.position?.filter(position => Array.isArray(position));
if (validFieldMetadataPositions.length) {
fieldPositions[fieldKey] = fieldPositions[fieldKey] ?? [];
fieldPositions[fieldKey].push(...validFieldMetadataPositions);
}
});
return fieldPositions;
+1 -1
View File
@@ -25,7 +25,7 @@ export default async function createPlugin(
});
const catalogClient = new CatalogClient({
discoveryApi: discovery,
discoveryApi: env.discovery,
});
const todoService = new TodoReaderService({