next-path-matcher
Version:
A tiny utility to match Next.js request paths using glob patterns or regular expressions. Built for use with Next.js middleware and API routes.
27 lines (26 loc) • 832 B
JavaScript
// src/index.ts
import { pathToRegexp as pathToRegexpBase } from "path-to-regexp";
var pathToRegexp = (path) => {
try {
return pathToRegexpBase(path);
} catch (e) {
throw new Error(
`Invalid path: ${path}.
Consult the documentation of path-to-regexp here: https://github.com/pillarjs/path-to-regexp/tree/6.x
${e.message}`
);
}
};
var precomputePathRegex = (patterns) => {
return patterns.map((pattern) => pattern instanceof RegExp ? pattern : pathToRegexp(pattern));
};
var createPathMatcher = (paths) => {
const pathPatterns = [paths || ""].flat().filter(Boolean);
const matchers = precomputePathRegex(pathPatterns);
return (req) => matchers.some((matcher) => matcher.test(req.nextUrl.pathname));
};
var index_default = createPathMatcher;
export {
createPathMatcher,
index_default as default
};