next
Version:
The React Framework
41 lines (40 loc) • 1.68 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getPathMatch = getPathMatch;
var _extends = require("@swc/helpers/lib/_extends.js").default;
var _pathToRegexp = require("next/dist/compiled/path-to-regexp");
function getPathMatch(path, options) {
const keys = [];
const regexp = (0, _pathToRegexp).pathToRegexp(path, keys, {
delimiter: '/',
sensitive: false,
strict: options == null ? void 0 : options.strict
});
const matcher = (0, _pathToRegexp).regexpToFunction((options == null ? void 0 : options.regexModifier) ? new RegExp(options.regexModifier(regexp.source), regexp.flags) : regexp, keys);
/**
* A matcher function that will check if a given pathname matches the path
* given in the builder function. When the path does not match it will return
* `false` but if it does it will return an object with the matched params
* merged with the params provided in the second argument.
*/ return (pathname, params)=>{
const res = pathname == null ? false : matcher(pathname);
if (!res) {
return false;
}
/**
* If unnamed params are not allowed they must be removed from
* the matched parameters. path-to-regexp uses "string" for named and
* "number" for unnamed parameters.
*/ if (options == null ? void 0 : options.removeUnnamedParams) {
for (const key of keys){
if (typeof key.name === 'number') {
delete res.params[key.name];
}
}
}
return _extends({}, params, res.params);
};
}
//# sourceMappingURL=path-match.js.map
;