{"version":3,"file":"static/js/npm.path-to-regexp.377613faf406660b6899.js","mappings":"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","sources":["webpack:///./node_modules/path-to-regexp/index.js"],"sourcesContent":["var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n"],"names":["isarray","require","module","exports","pathToRegexp","parse","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","RegExp","join","str","options","tokens","key","index","path","defaultDelimiter","delimiter","res","exec","m","escaped","offset","slice","length","next","prefix","name","capture","group","modifier","asterisk","push","partial","repeat","optional","pattern","escapeGroup","escapeString","substr","encodeURIComponentPretty","encodeURI","replace","c","charCodeAt","toString","toUpperCase","encodeAsterisk","matches","Array","i","_typeof","flags","obj","opts","data","encode","pretty","encodeURIComponent","token","value","segment","TypeError","JSON","stringify","j","test","attachKeys","re","keys","sensitive","regexpToRegexp","groups","source","match","arrayToRegexp","parts","regexp","stringToRegexp","strict","end","route","endsWithDelimiter"],"sourceRoot":""}