UNPKG

1.26 kBJavaScriptView Raw
1
2'use strict';
3
4module.exports = function (config) {
5 var extend = require('extend');
6 var mapRoute = require('./map-route');
7 var routes = config.routes;
8 var defaultRoute = config.argv['route-config'] || 'default';
9 var localhost = {};
10 var override;
11
12 if (config.argv['origin-override']) {
13 localhost.changeOrigin = true;
14 }
15
16 if (config.argv['route-override']) {
17 override = mapRoute(config.argv['route-override']);
18 if (override.host) {
19 routes = {localhost: {default: ''}};
20 routes.localhost.default = extend(true, {}, localhost, override);
21 defaultRoute = 'default';
22 }
23 }
24
25 var matchRoute = function (pattern, url) {
26 if (pattern.match(/^\/.+?\/$/)) {
27 return url.match(new RegExp(pattern.replace(/^\//, '').replace(/\/$/, ''), 'i'));
28 }
29 return false;
30 };
31
32 return {
33 map: function (domain, url) {
34 domain = domain.replace(/:[0-9]+$/, '');
35 if (!routes.hasOwnProperty(domain)) {
36 domain = 'localhost';
37 }
38 if (!routes.hasOwnProperty(domain)) {
39 return null;
40 }
41 for (var pattern in routes[domain]) {
42 if (pattern !== defaultRoute && routes[domain].hasOwnProperty(pattern)) {
43 if (matchRoute(pattern, url)) {
44 return routes[domain][pattern];
45 }
46 }
47 }
48 return routes[domain][defaultRoute];
49 }
50 };
51};