UNPKG

1.93 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
4
5var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
6
7_Object$defineProperty(exports, "__esModule", {
8 value: true
9});
10
11exports["default"] = void 0;
12
13var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/objectWithoutProperties"));
14
15var _objectSpread2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/objectSpread"));
16
17var _matchPath = _interopRequireDefault(require("react-router/matchPath"));
18
19var _loggedFilter = _interopRequireDefault(require("./logged-filter"));
20
21/* eslint-disable import/no-extraneous-dependencies */
22var findMatch = function findMatch(routes, pathname, isLoggedIn) {
23 var routesWithPlainPaths = routes.map(function (r) {
24 return (0, _objectSpread2["default"])({}, r, {
25 path: typeof r.path === 'function' ? r.path() : r.path
26 });
27 });
28 var accessibleRoutes = routesWithPlainPaths.filter(function (r) {
29 return (0, _loggedFilter["default"])(r, isLoggedIn);
30 });
31 var notFoundRoute = accessibleRoutes.find(function (_ref) {
32 var path = _ref.path;
33 return !path;
34 });
35
36 if (!notFoundRoute) {
37 throw Error('You need a route without path to render a 404 page');
38 }
39
40 var match;
41 var activeRoute = accessibleRoutes.find(function (route) {
42 match = (0, _matchPath["default"])(pathname, route);
43 return match;
44 }) || notFoundRoute;
45 var path = activeRoute.path,
46 exact = activeRoute.exact,
47 route = (0, _objectWithoutProperties2["default"])(activeRoute, ["path", "exact"]); // Removing these properties from route
48
49 return {
50 match: match,
51 route: route,
52 routesWithPlainPaths: routesWithPlainPaths,
53 accessibleRoutes: accessibleRoutes,
54 notFoundRoute: notFoundRoute
55 };
56};
57
58var _default = findMatch;
59exports["default"] = _default;
\No newline at end of file