{"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\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, basePath, rewrites, query, resolveHref) {\n  if (!pages.includes(asPath)) {\n    for (const rewrite of rewrites) {\n      const matcher = customRouteMatcher(rewrite.source);\n      const params = matcher(asPath);\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, rewrite.basePath === false ? '' : basePath);\n        asPath = destRes.parsedDestination.pathname;\n        Object.assign(query, destRes.parsedDestination.query);\n\n        if (pages.includes(asPath)) {\n          // check if we now match a page as this means we are done\n          // resolving the rewrites\n          break;\n        } // check if we match a dynamic-route, if so we break the rewrites chain\n\n\n        const resolvedHref = resolveHref(asPath);\n\n        if (resolvedHref !== asPath && pages.includes(resolvedHref)) {\n          break;\n        }\n      }\n    }\n  }\n\n  return asPath;\n}","map":{"version":3,"sources":["../../../../../next-server/lib/router/utils/resolve-rewrites.ts"],"names":["customRouteMatcher","pages","matcher","rewrite","params","destRes","asPath","Object","resolvedHref","resolveHref"],"mappings":";;;;;AACA,IAAA,UAAA,GAAA,sBAAA,CAAA,OAAA,CAAA,cAAA,CAAA,CAAA;;AACA,IAAA,mBAAA,GAAA,sBAAA,CAAA,OAAA,CAAA,uBAAA,CAAA,CAAA;;;;;;AAGA;;AAAA,MAAMA,kBAAkB,GAAG,CAAA,GAAA,UAAA,CAAA,OAAA,EAA3B,IAA2B,CAA3B;;AAEe,SAAA,eAAA,CAAA,MAAA,EAAA,KAAA,EAAA,QAAA,EAAA,QAAA,EAAA,KAAA,EAAA,WAAA,EAOb;AACA,MAAI,CAACC,KAAK,CAALA,QAAAA,CAAL,MAAKA,CAAL,EAA6B;AAC3B,SAAK,MAAL,OAAA,IAAA,QAAA,EAAgC;AAC9B,YAAMC,OAAO,GAAGF,kBAAkB,CAACG,OAAO,CAA1C,MAAkC,CAAlC;AACA,YAAMC,MAAM,GAAGF,OAAO,CAAtB,MAAsB,CAAtB;;AAEA,UAAA,MAAA,EAAY;AACV,YAAI,CAACC,OAAO,CAAZ,WAAA,EAA0B;AACxB;AACA;AAEF;;AAAA,cAAME,OAAO,GAAG,CAAA,GAAA,mBAAA,CAAA,OAAA,EACdF,OAAO,CADO,WAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAKdA,OAAO,CAAPA,QAAAA,KAAAA,KAAAA,GAAAA,EAAAA,GALF,QAAgB,CAAhB;AAOAG,QAAAA,MAAM,GAAGD,OAAO,CAAPA,iBAAAA,CAATC,QAAAA;AACAC,QAAAA,MAAM,CAANA,MAAAA,CAAAA,KAAAA,EAAqBF,OAAO,CAAPA,iBAAAA,CAArBE,KAAAA;;AAEA,YAAIN,KAAK,CAALA,QAAAA,CAAJ,MAAIA,CAAJ,EAA4B;AAC1B;AACA;AACA;AAGF,SArBU,CAqBV;;;AACA,cAAMO,YAAY,GAAGC,WAAW,CAAhC,MAAgC,CAAhC;;AAEA,YAAID,YAAY,KAAZA,MAAAA,IAA2BP,KAAK,CAALA,QAAAA,CAA/B,YAA+BA,CAA/B,EAA6D;AAC3D;AAEH;AACF;AACF;AACD;;AAAA,SAAA,MAAA;AACD","sourcesContent":["import { ParsedUrlQuery } from 'querystring'\nimport pathMatch from './path-match'\nimport prepareDestination from './prepare-destination'\nimport { Rewrite } from '../../../../lib/load-custom-routes'\n\nconst customRouteMatcher = pathMatch(true)\n\nexport default function resolveRewrites(\n  asPath: string,\n  pages: string[],\n  basePath: string,\n  rewrites: Rewrite[],\n  query: ParsedUrlQuery,\n  resolveHref: (path: string) => string\n) {\n  if (!pages.includes(asPath)) {\n    for (const rewrite of rewrites) {\n      const matcher = customRouteMatcher(rewrite.source)\n      const params = matcher(asPath)\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        const destRes = prepareDestination(\n          rewrite.destination,\n          params,\n          query,\n          true,\n          rewrite.basePath === false ? '' : basePath\n        )\n        asPath = destRes.parsedDestination.pathname!\n        Object.assign(query, destRes.parsedDestination.query)\n\n        if (pages.includes(asPath)) {\n          // check if we now match a page as this means we are done\n          // resolving the rewrites\n          break\n        }\n\n        // check if we match a dynamic-route, if so we break the rewrites chain\n        const resolvedHref = resolveHref(asPath)\n\n        if (resolvedHref !== asPath && pages.includes(resolvedHref)) {\n          break\n        }\n      }\n    }\n  }\n  return asPath\n}\n"]},"metadata":{},"sourceType":"script"}