mirror of
https://github.com/softprops/action-gh-release.git
synced 2025-06-29 06:36:02 +00:00
29 lines
917 B
JavaScript
29 lines
917 B
JavaScript
// @ts-ignore
|
|
export function routeMatcher(paths) {
|
|
// EXAMPLE. For the following paths:
|
|
/* [
|
|
"/orgs/:org/invitations",
|
|
"/repos/:owner/:repo/collaborators/:username"
|
|
] */
|
|
// @ts-ignore
|
|
const regexes = paths.map((path) => path
|
|
.split("/")
|
|
// @ts-ignore
|
|
.map((c) => (c.startsWith(":") ? "(?:.+?)" : c))
|
|
.join("/"));
|
|
// 'regexes' would contain:
|
|
/* [
|
|
'/orgs/(?:.+?)/invitations',
|
|
'/repos/(?:.+?)/(?:.+?)/collaborators/(?:.+?)'
|
|
] */
|
|
// @ts-ignore
|
|
const regex = `^(?:${regexes.map((r) => `(?:${r})`).join("|")})[^/]*$`;
|
|
// 'regex' would contain:
|
|
/*
|
|
^(?:(?:\/orgs\/(?:.+?)\/invitations)|(?:\/repos\/(?:.+?)\/(?:.+?)\/collaborators\/(?:.+?)))[^\/]*$
|
|
|
|
It may look scary, but paste it into https://www.debuggex.com/
|
|
and it will make a lot more sense!
|
|
*/
|
|
return new RegExp(regex, "i");
|
|
}
|