Initial commit
This commit is contained in:
80
node_modules/react-router/matchPath.js
generated
vendored
Normal file
80
node_modules/react-router/matchPath.js
generated
vendored
Normal file
@@ -0,0 +1,80 @@
|
||||
"use strict";
|
||||
|
||||
exports.__esModule = true;
|
||||
|
||||
var _pathToRegexp = require("path-to-regexp");
|
||||
|
||||
var _pathToRegexp2 = _interopRequireDefault(_pathToRegexp);
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
var patternCache = {};
|
||||
var cacheLimit = 10000;
|
||||
var cacheCount = 0;
|
||||
|
||||
var compilePath = function compilePath(pattern, options) {
|
||||
var cacheKey = "" + options.end + options.strict + options.sensitive;
|
||||
var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});
|
||||
|
||||
if (cache[pattern]) return cache[pattern];
|
||||
|
||||
var keys = [];
|
||||
var re = (0, _pathToRegexp2.default)(pattern, keys, options);
|
||||
var compiledPattern = { re: re, keys: keys };
|
||||
|
||||
if (cacheCount < cacheLimit) {
|
||||
cache[pattern] = compiledPattern;
|
||||
cacheCount++;
|
||||
}
|
||||
|
||||
return compiledPattern;
|
||||
};
|
||||
|
||||
/**
|
||||
* Public API for matching a URL pathname to a path pattern.
|
||||
*/
|
||||
var matchPath = function matchPath(pathname) {
|
||||
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
||||
var parent = arguments[2];
|
||||
|
||||
if (typeof options === "string") options = { path: options };
|
||||
|
||||
var _options = options,
|
||||
path = _options.path,
|
||||
_options$exact = _options.exact,
|
||||
exact = _options$exact === undefined ? false : _options$exact,
|
||||
_options$strict = _options.strict,
|
||||
strict = _options$strict === undefined ? false : _options$strict,
|
||||
_options$sensitive = _options.sensitive,
|
||||
sensitive = _options$sensitive === undefined ? false : _options$sensitive;
|
||||
|
||||
|
||||
if (path == null) return parent;
|
||||
|
||||
var _compilePath = compilePath(path, { end: exact, strict: strict, sensitive: sensitive }),
|
||||
re = _compilePath.re,
|
||||
keys = _compilePath.keys;
|
||||
|
||||
var match = re.exec(pathname);
|
||||
|
||||
if (!match) return null;
|
||||
|
||||
var url = match[0],
|
||||
values = match.slice(1);
|
||||
|
||||
var isExact = pathname === url;
|
||||
|
||||
if (exact && !isExact) return null;
|
||||
|
||||
return {
|
||||
path: path, // the path pattern used to match
|
||||
url: path === "/" && url === "" ? "/" : url, // the matched portion of the URL
|
||||
isExact: isExact, // whether or not we matched exactly
|
||||
params: keys.reduce(function (memo, key, index) {
|
||||
memo[key.name] = values[index];
|
||||
return memo;
|
||||
}, {})
|
||||
};
|
||||
};
|
||||
|
||||
exports.default = matchPath;
|
||||
Reference in New Issue
Block a user