try-to-parse-path.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.tryToParsePath = tryToParsePath;
  6. var _pathToRegexp = require("next/dist/compiled/path-to-regexp");
  7. var _url = require("url");
  8. var _isError = _interopRequireDefault(require("./is-error"));
  9. function _interopRequireDefault(obj) {
  10. return obj && obj.__esModule ? obj : {
  11. default: obj
  12. };
  13. }
  14. /**
  15. * If there is an error show our error link but still show original error or
  16. * a formatted one if we can
  17. */ function reportError({ route , parsedPath }, err) {
  18. let errMatches;
  19. if ((0, _isError).default(err) && (errMatches = err.message.match(/at (\d{0,})/))) {
  20. const position = parseInt(errMatches[1], 10);
  21. console.error(`\nError parsing \`${route}\` ` + `https://nextjs.org/docs/messages/invalid-route-source\n` + `Reason: ${err.message}\n\n` + ` ${parsedPath}\n` + ` ${new Array(position).fill(" ").join("")}^\n`);
  22. } else {
  23. console.error(`\nError parsing ${route} https://nextjs.org/docs/messages/invalid-route-source`, err);
  24. }
  25. }
  26. function tryToParsePath(route, options) {
  27. const result = {
  28. route,
  29. parsedPath: route
  30. };
  31. try {
  32. if (options == null ? void 0 : options.handleUrl) {
  33. const parsed = (0, _url).parse(route, true);
  34. result.parsedPath = `${parsed.pathname}${parsed.hash || ""}`;
  35. }
  36. result.tokens = (0, _pathToRegexp).parse(result.parsedPath);
  37. result.regexStr = (0, _pathToRegexp).tokensToRegexp(result.tokens).source;
  38. } catch (err) {
  39. reportError(result, err);
  40. result.error = err;
  41. }
  42. return result;
  43. }
  44. //# sourceMappingURL=try-to-parse-path.js.map