{"ast":null,"code":"\"use strict\";\n\nexports.__esModule = true;\nexports.getRouteRegex = getRouteRegex; // this isn't importing the escape-string-regex module\n// to reduce bytes\n\nfunction escapeRegex(str) {\n  return str.replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&');\n}\n\nfunction parseParameter(param) {\n  var optional = param.startsWith('[') && param.endsWith(']');\n\n  if (optional) {\n    param = param.slice(1, -1);\n  }\n\n  var repeat = param.startsWith('...');\n\n  if (repeat) {\n    param = param.slice(3);\n  }\n\n  return {\n    key: param,\n    repeat: repeat,\n    optional: optional\n  };\n}\n\nfunction getRouteRegex(normalizedRoute) {\n  var segments = (normalizedRoute.replace(/\\/$/, '') || '/').slice(1).split('/');\n  var groups = {};\n  var groupIndex = 1;\n  var parameterizedRoute = segments.map(function (segment) {\n    if (segment.startsWith('[') && segment.endsWith(']')) {\n      var _parseParameter = parseParameter(segment.slice(1, -1)),\n          key = _parseParameter.key,\n          optional = _parseParameter.optional,\n          repeat = _parseParameter.repeat;\n\n      groups[key] = {\n        pos: groupIndex++,\n        repeat: repeat,\n        optional: optional\n      };\n      return repeat ? optional ? '(?:/(.+?))?' : '/(.+?)' : '/([^/]+?)';\n    } else {\n      return \"/\".concat(escapeRegex(segment));\n    }\n  }).join(''); // dead code eliminate for browser since it's only needed\n  // while generating routes-manifest\n\n  if (false) {\n    var routeKeyCharCode = 97;\n    var routeKeyCharLength = 1; // builds a minimal routeKey using only a-z and minimal number of characters\n\n    var getSafeRouteKey = function getSafeRouteKey() {\n      var routeKey = '';\n\n      for (var i = 0; i < routeKeyCharLength; i++) {\n        routeKey += String.fromCharCode(routeKeyCharCode);\n        routeKeyCharCode++;\n\n        if (routeKeyCharCode > 122) {\n          routeKeyCharLength++;\n          routeKeyCharCode = 97;\n        }\n      }\n\n      return routeKey;\n    };\n\n    var routeKeys = {};\n    var namedParameterizedRoute = segments.map(function (segment) {\n      if (segment.startsWith('[') && segment.endsWith(']')) {\n        var _parseParameter2 = parseParameter(segment.slice(1, -1)),\n            key = _parseParameter2.key,\n            optional = _parseParameter2.optional,\n            repeat = _parseParameter2.repeat; // replace any non-word characters since they can break\n        // the named regex\n\n\n        var cleanedKey = key.replace(/\\W/g, '');\n        var invalidKey = false; // check if the key is still invalid and fallback to using a known\n        // safe key\n\n        if (cleanedKey.length === 0 || cleanedKey.length > 30) {\n          invalidKey = true;\n        }\n\n        if (!isNaN(parseInt(cleanedKey.substr(0, 1)))) {\n          invalidKey = true;\n        }\n\n        if (invalidKey) {\n          cleanedKey = getSafeRouteKey();\n        }\n\n        routeKeys[cleanedKey] = key;\n        return repeat ? optional ? \"(?:/(?<\".concat(cleanedKey, \">.+?))?\") : \"/(?<\".concat(cleanedKey, \">.+?)\") : \"/(?<\".concat(cleanedKey, \">[^/]+?)\");\n      } else {\n        return \"/\".concat(escapeRegex(segment));\n      }\n    }).join('');\n    return {\n      re: new RegExp(\"^\".concat(parameterizedRoute, \"(?:/)?$\")),\n      groups: groups,\n      routeKeys: routeKeys,\n      namedRegex: \"^\".concat(namedParameterizedRoute, \"(?:/)?$\")\n    };\n  }\n\n  return {\n    re: new RegExp(\"^\".concat(parameterizedRoute, \"(?:/)?$\")),\n    groups: groups\n  };\n}","map":null,"metadata":{},"sourceType":"script"}