UNPKG

comics

Version:

1 lines 5.81 kB
{"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 getRouteRegex(normalizedRoute) {\n // Escape all characters that could be considered RegEx\n var escapedRoute = escapeRegex(normalizedRoute.replace(/\\/$/, '') || '/');\n var groups = {};\n var groupIndex = 1;\n var parameterizedRoute = escapedRoute.replace(/\\/\\\\\\[([^/]+?)\\\\\\](?=\\/|$)/g, function (_, $1) {\n var isOptional = /^\\\\\\[.*\\\\\\]$/.test($1);\n\n if (isOptional) {\n $1 = $1.slice(2, -2);\n }\n\n var isCatchAll = /^(\\\\\\.){3}/.test($1);\n\n if (isCatchAll) {\n $1 = $1.slice(6);\n }\n\n groups[$1 // Un-escape key\n .replace(/\\\\([|\\\\{}()[\\]^$+*?.-])/g, '$1') // eslint-disable-next-line no-sequences\n ] = {\n pos: groupIndex++,\n repeat: isCatchAll\n };\n return isCatchAll ? isOptional ? '(?:/(.+?))?' : '/(.+?)' : '/([^/]+?)';\n });\n var namedParameterizedRoute; // dead code eliminate for browser since it's only needed\n // while generating routes-manifest\n\n if (false) {\n namedParameterizedRoute = escapedRoute.replace(/\\/\\\\\\[([^/]+?)\\\\\\](?=\\/|$)/g, function (_, $1) {\n var isCatchAll = /^(\\\\\\.){3}/.test($1);\n var key = $1 // Un-escape key\n .replace(/\\\\([|\\\\{}()[\\]^$+*?.-])/g, '$1').replace(/^\\.{3}/, '');\n return isCatchAll ? \"/(?<\".concat(escapeRegex(key), \">.+?)\") : \"/(?<\".concat(escapeRegex(key), \">[^/]+?)\");\n });\n }\n\n return {\n re: new RegExp('^' + parameterizedRoute + '(?:/)?$', 'i'),\n groups: groups,\n namedRegex: namedParameterizedRoute ? \"^\".concat(namedParameterizedRoute, \"(?:/)?$\") : undefined\n };\n}","map":{"version":3,"sources":["../../../../../next-server/lib/router/utils/route-regex.ts"],"names":["str","escapedRoute","escapeRegex","normalizedRoute","groups","groupIndex","parameterizedRoute","isOptional","$1","isCatchAll","pos","repeat","namedParameterizedRoute","key","re","namedRegex"],"mappings":";;;uCAAA;AACA;;AACA,SAAA,WAAA,CAAA,GAAA,EAAkC;AAChC,SAAOA,GAAG,CAAHA,OAAAA,CAAAA,sBAAAA,EAAP,MAAOA,CAAP;AAGK;;AAAA,SAAA,aAAA,CAAA,eAAA,EAML;AACA;AACA,MAAMC,YAAY,GAAGC,WAAW,CAACC,eAAe,CAAfA,OAAAA,CAAAA,KAAAA,EAAAA,EAAAA,KAAjC,GAAgC,CAAhC;AAEA,MAAMC,MAAiE,GAAvE,EAAA;AACA,MAAIC,UAAU,GAAd,CAAA;AAEA,MAAMC,kBAAkB,GAAG,YAAY,CAAZ,OAAA,CAAA,6BAAA,EAEzB,UAAA,CAAA,EAAA,EAAA,EAAW;AACT,QAAMC,UAAU,GAAG,eAAA,IAAA,CAAnB,EAAmB,CAAnB;;AACA,QAAA,UAAA,EAAgB;AACdC,MAAAA,EAAE,GAAGA,EAAE,CAAFA,KAAAA,CAAAA,CAAAA,EAAY,CAAjBA,CAAKA,CAALA;AAEF;;AAAA,QAAMC,UAAU,GAAG,aAAA,IAAA,CAAnB,EAAmB,CAAnB;;AACA,QAAA,UAAA,EAAgB;AACdD,MAAAA,EAAE,GAAGA,EAAE,CAAFA,KAAAA,CAALA,CAAKA,CAALA;AAEF;;AAAA,IAAA,MAAM,CACJ,EACE;AAAA,KADF,OAAA,CAAA,0BAAA,EAAA,IAAA,CADI,CAIJ;AAJI,KAAN,GAKI;AAAEE,MAAAA,GAAG,EAAEL,UAAP,EAAA;AAAqBM,MAAAA,MAAM,EAL/B;AAKI,KALJ;AAMA,WAAOF,UAAU,GAAIF,UAAU,GAAA,aAAA,GAAd,QAAA,GAAjB,WAAA;AAjBJ,GAA2B,CAA3B;AAqBA,MAAA,uBAAA,CA5BA,CA8BA;AACA;;AACA,aAAmC;AACjCK,IAAAA,uBAAuB,GAAGX,YAAY,CAAZA,OAAAA,CAAAA,6BAAAA,EAExB,UAAA,CAAA,EAAA,EAAA,EAAW;AACT,UAAMQ,UAAU,GAAG,aAAA,IAAA,CAAnB,EAAmB,CAAnB;AACA,UAAMI,GAAG,GAAG,EACV;AAAA,OADU,OAAA,CAAA,0BAAA,EAAA,IAAA,EAAA,OAAA,CAAA,QAAA,EAAZ,EAAY,CAAZ;AAKA,aAAOJ,UAAU,iBACNP,WAAW,CADL,GACK,CADL,2BAENA,WAAW,CAFtB,GAEsB,CAFL,aAAjB;AATJU,KAA0BX,CAA1BW;AAgBF;;AAAA,SAAO;AACLE,IAAAA,EAAE,EAAE,IAAA,MAAA,CAAW,MAAA,kBAAA,GAAX,SAAA,EADC,GACD,CADC;AAELV,IAAAA,MAFK,EAELA,MAFK;AAGLW,IAAAA,UAAU,EAAEH,uBAAuB,cAAA,uBAAA,eAHrC;AAAO,GAAP;AAOD","sourcesContent":["// this isn't importing the escape-string-regex module\n// to reduce bytes\nfunction escapeRegex(str: string) {\n return str.replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&')\n}\n\nexport function getRouteRegex(\n normalizedRoute: string\n): {\n re: RegExp\n namedRegex?: string\n groups: { [groupName: string]: { pos: number; repeat: boolean } }\n} {\n // Escape all characters that could be considered RegEx\n const escapedRoute = escapeRegex(normalizedRoute.replace(/\\/$/, '') || '/')\n\n const groups: { [groupName: string]: { pos: number; repeat: boolean } } = {}\n let groupIndex = 1\n\n const parameterizedRoute = escapedRoute.replace(\n /\\/\\\\\\[([^/]+?)\\\\\\](?=\\/|$)/g,\n (_, $1) => {\n const isOptional = /^\\\\\\[.*\\\\\\]$/.test($1)\n if (isOptional) {\n $1 = $1.slice(2, -2)\n }\n const isCatchAll = /^(\\\\\\.){3}/.test($1)\n if (isCatchAll) {\n $1 = $1.slice(6)\n }\n groups[\n $1\n // Un-escape key\n .replace(/\\\\([|\\\\{}()[\\]^$+*?.-])/g, '$1')\n // eslint-disable-next-line no-sequences\n ] = { pos: groupIndex++, repeat: isCatchAll }\n return isCatchAll ? (isOptional ? '(?:/(.+?))?' : '/(.+?)') : '/([^/]+?)'\n }\n )\n\n let namedParameterizedRoute: string | undefined\n\n // dead code eliminate for browser since it's only needed\n // while generating routes-manifest\n if (typeof window === 'undefined') {\n namedParameterizedRoute = escapedRoute.replace(\n /\\/\\\\\\[([^/]+?)\\\\\\](?=\\/|$)/g,\n (_, $1) => {\n const isCatchAll = /^(\\\\\\.){3}/.test($1)\n const key = $1\n // Un-escape key\n .replace(/\\\\([|\\\\{}()[\\]^$+*?.-])/g, '$1')\n .replace(/^\\.{3}/, '')\n\n return isCatchAll\n ? `/(?<${escapeRegex(key)}>.+?)`\n : `/(?<${escapeRegex(key)}>[^/]+?)`\n }\n )\n }\n\n return {\n re: new RegExp('^' + parameterizedRoute + '(?:/)?$', 'i'),\n groups,\n namedRegex: namedParameterizedRoute\n ? `^${namedParameterizedRoute}(?:/)?$`\n : undefined,\n }\n}\n"]},"metadata":{},"sourceType":"script"}