Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
 
 
 
 

45 rader
1.2 KiB

  1. "use strict";
  2. exports.__esModule = true;
  3. var _pathToRegexp = require("path-to-regexp");
  4. var _pathToRegexp2 = _interopRequireDefault(_pathToRegexp);
  5. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  6. var patternCache = {};
  7. var cacheLimit = 10000;
  8. var cacheCount = 0;
  9. var compileGenerator = function compileGenerator(pattern) {
  10. var cacheKey = pattern;
  11. var cache = patternCache[cacheKey] || (patternCache[cacheKey] = {});
  12. if (cache[pattern]) return cache[pattern];
  13. var compiledGenerator = _pathToRegexp2.default.compile(pattern);
  14. if (cacheCount < cacheLimit) {
  15. cache[pattern] = compiledGenerator;
  16. cacheCount++;
  17. }
  18. return compiledGenerator;
  19. };
  20. /**
  21. * Public API for generating a URL pathname from a pattern and parameters.
  22. */
  23. var generatePath = function generatePath() {
  24. var pattern = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "/";
  25. var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  26. if (pattern === "/") {
  27. return pattern;
  28. }
  29. var generator = compileGenerator(pattern);
  30. return generator(params, { pretty: true });
  31. };
  32. exports.default = generatePath;