workerd
workerd copied to clipboard
URLPattern doesn't match on URL#pathname
With a Worker, I'm using an URLPattern to extract an arXivId from an URL#pathname.
The following pattern does not match with Workers but does match with Chrome:
const pathname = '/:format(abs|pdf){/:category}?/:arxivId{v:version}?{.pdf}?{/}?';
const pattern = new URLPattern({pathname});
pattern.exec("https://arxiv.org/abs/quant-ph/0503179")?.pathname.groups;
// Chrome: {format: 'abs', category: 'quant-ph', arxivId: '0503179', version: undefined}
// Worker: {"format":"abs","category":"quant-ph","arxivId":"0503179","version":""}
pattern.exec("https://arxiv.org/abs/quant-ph/0503179v3")?.pathname.groups;
// Chrome: {format: 'abs', category: 'quant-ph', arxivId: '0503179', version: '3'}
// Worker: {"format":"abs","category":"quant-ph","arxivId":"0503179v3","version":""}
pattern.exec("https://arxiv.org/pdf/quant-ph/0503179.pdf")?.pathname.groups;
// Chrome: {format: 'pdf', category: 'quant-ph', arxivId: '0503179', version: undefined}
// Worker: {"format":"pdf","category":"quant-ph","arxivId":"0503179.pdf","version":""}
pattern.exec("https://arxiv.org/pdf/quant-ph/0503179v3.pdf")?.pathname.groups;
// Chrome: {format: 'pdf', category: 'quant-ph', arxivId: '0503179', version: '3'}
// Worker: {"format":"pdf","category":"quant-ph","arxivId":"0503179v3.pdf","version":""}