UNPKG

next

Version:

The React Framework

100 lines (99 loc) 5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "DevAppRouteRouteMatcherProvider", { enumerable: true, get: function() { return DevAppRouteRouteMatcherProvider; } }); const _approuteroutematcher = require("../../route-matchers/app-route-route-matcher"); const _routekind = require("../../route-kind"); const _filecacheroutematcherprovider = require("./file-cache-route-matcher-provider"); const _isapprouteroute = require("../../../lib/is-app-route-route"); const _app = require("../../normalizers/built/app"); const _ismetadataroute = require("../../../lib/metadata/is-metadata-route"); const _getmetadataroute = require("../../../lib/metadata/get-metadata-route"); const _path = /*#__PURE__*/ _interop_require_default(require("../../../shared/lib/isomorphic/path")); function _interop_require_default(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class DevAppRouteRouteMatcherProvider extends _filecacheroutematcherprovider.FileCacheRouteMatcherProvider { constructor(appDir, extensions, reader){ super(appDir, reader); this.appDir = appDir; this.normalizers = new _app.DevAppNormalizers(appDir, extensions); } async transform(files) { const matchers = []; for (const filename of files){ const page = this.normalizers.page.normalize(filename); // If the file isn't a match for this matcher, then skip it. if (!(0, _isapprouteroute.isAppRouteRoute)(page)) continue; // Validate that this is not an ignored page. if (page.includes('/_')) continue; const pathname = this.normalizers.pathname.normalize(filename); const bundlePath = this.normalizers.bundlePath.normalize(filename); const ext = _path.default.extname(filename).slice(1); const isEntryMetadataRouteFile = (0, _ismetadataroute.isMetadataRouteFile)(filename.replace(this.appDir, ''), [ ext ], true); if (!(0, _ismetadataroute.isStaticMetadataRoute)(page) && isEntryMetadataRouteFile) { // Matching dynamic metadata routes. // Add 2 possibilities for both single and multiple routes: { // single: // /sitemap.ts -> /sitemap.xml/route // /icon.ts -> /icon/route // We'll map the filename before normalization: // sitemap.ts -> sitemap.xml/route.ts // icon.ts -> icon/route.ts const metadataPage = (0, _getmetadataroute.normalizeMetadataPageToRoute)(page, false); const metadataPathname = (0, _getmetadataroute.normalizeMetadataPageToRoute)(pathname, false); const metadataBundlePath = (0, _getmetadataroute.normalizeMetadataPageToRoute)(bundlePath, false); const matcher = new _approuteroutematcher.AppRouteRouteMatcher({ kind: _routekind.RouteKind.APP_ROUTE, page: metadataPage, pathname: metadataPathname, bundlePath: metadataBundlePath, filename }); matchers.push(matcher); } { // multiple: // /sitemap.ts -> /sitemap/[__metadata_id__]/route // /icon.ts -> /icon/[__metadata_id__]/route // We'll map the filename before normalization: // sitemap.ts -> sitemap.xml/[__metadata_id__].ts // icon.ts -> icon/[__metadata_id__].ts const metadataPage = (0, _getmetadataroute.normalizeMetadataPageToRoute)(page, true); const metadataPathname = (0, _getmetadataroute.normalizeMetadataPageToRoute)(pathname, true); const metadataBundlePath = (0, _getmetadataroute.normalizeMetadataPageToRoute)(bundlePath, true); const matcher = new _approuteroutematcher.AppRouteRouteMatcher({ kind: _routekind.RouteKind.APP_ROUTE, page: metadataPage, pathname: metadataPathname, bundlePath: metadataBundlePath, filename }); matchers.push(matcher); } } else { // Normal app routes and static metadata routes. matchers.push(new _approuteroutematcher.AppRouteRouteMatcher({ kind: _routekind.RouteKind.APP_ROUTE, page, pathname, bundlePath, filename })); } } return matchers; } } //# sourceMappingURL=dev-app-route-route-matcher-provider.js.map