action-gh-release/node_modules/@octokit/plugin-throttling/dist-src/route-matcher.js
2021-07-21 15:17:14 +08:00

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");
}