You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
- import pathToRegexp from "path-to-regexp";
-
- var patternCache = {};
- var cacheLimit = 10000;
- var cacheCount = 0;
-
- var compileGenerator = function compileGenerator(pattern) {
- var cacheKey = pattern;
- var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});
-
- if (cache[pattern]) return cache[pattern];
-
- var compiledGenerator = pathToRegexp.compile(pattern);
-
- if (cacheCount < cacheLimit) {
- cache[pattern] = compiledGenerator;
- cacheCount++;
- }
-
- return compiledGenerator;
- };
-
- /**
- * Public API for generating a URL pathname from a pattern and parameters.
- */
- var generatePath = function generatePath() {
- var pattern = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "/";
- var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- if (pattern === "/") {
- return pattern;
- }
- var generator = compileGenerator(pattern);
- return generator(params, { pretty: true });
- };
-
- export default generatePath;
|