{"ast":null,"code":"\"use strict\";\n\nexports.__esModule = true;\nexports.default = resolveRewrites;\n\nvar _pathMatch = _interopRequireDefault(require(\"./path-match\"));\n\nvar _prepareDestination = _interopRequireDefault(require(\"./prepare-destination\"));\n\nvar _normalizeTrailingSlash = require(\"../../../../client/normalize-trailing-slash\");\n\nvar _normalizeLocalePath = require(\"../../i18n/normalize-locale-path\");\n\nvar _parseRelativeUrl = require(\"./parse-relative-url\");\n\nvar _router = require(\"../router\");\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nconst customRouteMatcher = (0, _pathMatch.default)(true);\n\nfunction resolveRewrites(asPath, pages, rewrites, query, resolveHref, locales) {\n  let matchedPage = false;\n  let parsedAs = (0, _parseRelativeUrl.parseRelativeUrl)(asPath);\n  let fsPathname = (0, _normalizeTrailingSlash.removePathTrailingSlash)((0, _normalizeLocalePath.normalizeLocalePath)((0, _router.delBasePath)(parsedAs.pathname), locales).pathname);\n  let resolvedHref;\n\n  if (!pages.includes(fsPathname)) {\n    for (const rewrite of rewrites) {\n      const matcher = customRouteMatcher(rewrite.source);\n      const params = matcher(parsedAs.pathname);\n\n      if (params) {\n        if (!rewrite.destination) {\n          // this is a proxied rewrite which isn't handled on the client\n          break;\n        }\n\n        const destRes = (0, _prepareDestination.default)(rewrite.destination, params, query, true);\n        parsedAs = destRes.parsedDestination;\n        asPath = destRes.newUrl;\n        Object.assign(query, destRes.parsedDestination.query);\n        fsPathname = (0, _normalizeTrailingSlash.removePathTrailingSlash)((0, _normalizeLocalePath.normalizeLocalePath)((0, _router.delBasePath)(asPath), locales).pathname);\n\n        if (pages.includes(fsPathname)) {\n          // check if we now match a page as this means we are done\n          // resolving the rewrites\n          matchedPage = true;\n          resolvedHref = fsPathname;\n          break;\n        } // check if we match a dynamic-route, if so we break the rewrites chain\n\n\n        resolvedHref = resolveHref(fsPathname);\n\n        if (resolvedHref !== asPath && pages.includes(resolvedHref)) {\n          matchedPage = true;\n          break;\n        }\n      }\n    }\n  }\n\n  return {\n    asPath,\n    parsedAs,\n    matchedPage,\n    resolvedHref\n  };\n}","map":null,"metadata":{},"sourceType":"script"}