* Build(deps): bump path-to-regexp from 5.0.0 to 6.2.0 Bumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) from 5.0.0 to 6.2.0. - [Release notes](https://github.com/pillarjs/path-to-regexp/releases) - [Changelog](https://github.com/pillarjs/path-to-regexp/blob/master/History.md) - [Commits](https://github.com/pillarjs/path-to-regexp/compare/v5.0.0...v6.2.0) Signed-off-by: dependabot-preview[bot] <support@dependabot.com> * deps: apply path-to-regexp breaking changes * fix: path-to-regexp types in frontend Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]@users.noreply.github.com> Co-authored-by: Caleb Cartwright <caleb.cartwright@outlook.com> Co-authored-by: repo-ranger[bot] <39074581+repo-ranger[bot]@users.noreply.github.com>
35 lines
1.0 KiB
TypeScript
35 lines
1.0 KiB
TypeScript
import { parse } from 'path-to-regexp'
|
|
|
|
// Given a patternToRegex `pattern` with multiple-choice options like
|
|
// `foo|bar|baz`, return an array with the options. If it can't be described
|
|
// as multiple-choice options, return `undefined`.
|
|
const basicChars = /^[A-za-z0-9-]+$/
|
|
export function patternToOptions(pattern: string): string[] | undefined {
|
|
const split = pattern.split('|')
|
|
if (split.some(part => !part.match(basicChars))) {
|
|
return undefined
|
|
} else {
|
|
return split
|
|
}
|
|
}
|
|
|
|
// Removes regexp for named parameters.
|
|
export function removeRegexpFromPattern(pattern: string): string {
|
|
const tokens = parse(pattern)
|
|
const simplePattern = tokens
|
|
.map(token => {
|
|
if (typeof token === 'string') {
|
|
return token
|
|
} else {
|
|
const { prefix, modifier, name, pattern } = token
|
|
if (typeof name === 'number') {
|
|
return `${prefix}(${pattern})`
|
|
} else {
|
|
return `${prefix}:${name}${modifier}`
|
|
}
|
|
}
|
|
})
|
|
.join('')
|
|
return simplePattern
|
|
}
|