feat: Prefer exact matches in getNodePath
.
#159
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We've run into an issue where some of our pages were incorrectly matched during sitemap generation. After unsuccessfully trying to solve the issue on our side through various means, we decided to try and see if fixing it on the plugin's side would be accepted.
Description
This PR updates
getNodePath
to prefer exact matches instead of partial ones. As it currently stands,node
is matched to the first entry inallSitePage.edges
that matchesconst slugRegex = new RegExp(
${node.path.replace(//$/, ``)}$,
gi`)`Given the following:
getNodePath
as it currently stands will (incorrectly) matchnode
toallSitePage.edges[0]
instead of the more appropriateallSitePage.edges[1]
.This PR tries to fix this issue by doing both a partial and an exact match. If an exact match is found, then
getNodePath
immediately returns. If a partial match is found, it continues executing until either an exact match is found or the list is exhausted, at which point it will return the last partial match it finds.