code: function match(_ref, callback) {
    var history = _ref.history;
    var routes = _ref.routes;
    var location = _ref.location;
  
    var options = _objectWithoutProperties(_ref, ['history', 'routes', 'location']);
  
    !(history || location) ?  false ? (0, _invariant2.default)(false, 'match needs a history or a location') : (0, _invariant2.default)(false) : void 0;
  
    history = history ? history : (0, _createMemoryHistory2.default)(options);
    var transitionManager = (0, _createTransitionManager2.default)(history, (0, _RouteUtils.createRoutes)(routes));
  
    var unlisten = void 0;
  
    if (location) {
      // Allow match({ location: '/the/path', ... })
      location = history.createLocation(location);
    } else {
      // Pick up the location from the history via synchronous history.listen
      // call if needed.
      unlisten = history.listen(function (historyLocation) {
        location = historyLocation;
      });
    }
  
    var router = (0, _RouterUtils.createRouterObject)(history, transitionManager);
    history = (0, _RouterUtils.createRoutingHistory)(history, transitionManager);
  
    transitionManager.match(location, function (error, redirectLocation, nextState) {
      callback(error, redirectLocation && router.createLocation(redirectLocation, _Actions.REPLACE), nextState && _extends({}, nextState, {
        history: history,
        router: router,
        matchContext: { history: history, transitionManager: transitionManager, router: router }
      }));
  
      // Defer removing the listener to here to prevent DOM histories from having
      // to unwind DOM event listeners unnecessarily, in case callback renders a
      // <Router> and attaches another history listener.
      if (unlisten) {
        unlisten();
      }
    });
  }
docs: A high-level API to be used for server-side rendering.
  
  This function matches a location to a set of routes and calls
  callback(error, redirectLocation, renderProps) when finished.
  
  Note: You probably don't want to use this in a browser unless you're using
  server-side rendering with async routes.