UNPKG

periodicjs.ext.reactapp

Version:
57 lines (50 loc) 1.85 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.findMatchingRoutePath = exports.getParameterizedPath = undefined; var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var PathRegExp = require('path-to-regexp'); // const ROUTE_MAP = new Map(); var ROUTE_MAP = {}; /** * Generates a express style regexp for a given route and stores in a Map * @param {string} route The route that should be converted into a regexp * @return {Object} Returns an object with param keys and a path regexp */ var getParameterizedPath = exports.getParameterizedPath = function getParameterizedPath(route) { if (ROUTE_MAP[route]) { return ROUTE_MAP[route]; } else { var keys = []; var result = new PathRegExp(route, keys); // console.log({ route, }, { // re: result, // keys, // }); ROUTE_MAP[route] = { re: result, keys: keys }; return { keys: keys, re: result }; } }; /** * Finds a matching dynamic route from manifest * @param {Object} routes The manifest configuration object * @param {string} location The window location that should be resolved * @return {string} A matching dynamic route */ var findMatchingRoutePath = exports.findMatchingRoutePath = function findMatchingRoutePath(routes, location) { var matching; // eslint-disable-next-line location = /\?[^\s]+$/.test(location) ? location.replace(/^([^\s\?]+)\?[^\s]+$/, '$1') : location; (0, _keys2.default)(routes).forEach(function (key) { var result = getParameterizedPath(key); if (result.re.test(location) && !matching) matching = key; }); // console.log({ routes, location, matching, }); return matching; };