UNPKG

comics

Version:

1 lines 3.26 kB
{"ast":null,"code":"\"use strict\";\n\nexports.__esModule = true;\nexports.getRouteMatcher = getRouteMatcher;\n\nfunction getRouteMatcher(routeRegex) {\n const {\n re,\n groups\n } = routeRegex;\n return pathname => {\n const routeMatch = re.exec(pathname);\n\n if (!routeMatch) {\n return false;\n }\n\n const decode = param => {\n try {\n return decodeURIComponent(param);\n } catch (_) {\n const err = new Error('failed to decode param');\n err.code = 'DECODE_FAILED';\n throw err;\n }\n };\n\n const params = {};\n Object.keys(groups).forEach(slugName => {\n const g = groups[slugName];\n const m = routeMatch[g.pos];\n\n if (m !== undefined) {\n params[slugName] = ~m.indexOf('/') ? m.split('/').map(entry => decode(entry)) : g.repeat ? [decode(m)] : decode(m);\n }\n });\n return params;\n };\n}","map":{"version":3,"sources":["../../../../../next-server/lib/router/utils/route-matcher.ts"],"names":["pathname","routeMatch","re","decode","param","decodeURIComponent","err","params","Object","slugName","g","groups","m","entry"],"mappings":";;;;;AAEO,SAAA,eAAA,CAAA,UAAA,EAAuE;AAC5E,QAAM;AAAA,IAAA,EAAA;AAAA,IAAA;AAAA,MAAN,UAAA;AACA,SAAQA,QAAD,IAAyC;AAC9C,UAAMC,UAAU,GAAGC,EAAE,CAAFA,IAAAA,CAAnB,QAAmBA,CAAnB;;AACA,QAAI,CAAJ,UAAA,EAAiB;AACf,aAAA,KAAA;AAGF;;AAAA,UAAMC,MAAM,GAAIC,KAAD,IAAmB;AAChC,UAAI;AACF,eAAOC,kBAAkB,CAAzB,KAAyB,CAAzB;AACA,OAFF,CAEE,OAAA,CAAA,EAAU;AACV,cAAMC,GAA8B,GAAG,IAAA,KAAA,CAAvC,wBAAuC,CAAvC;AAGAA,QAAAA,GAAG,CAAHA,IAAAA,GAAAA,eAAAA;AACA,cAAA,GAAA;AAEH;AAVD,KAAA;;AAWA,UAAMC,MAAkD,GAAxD,EAAA;AAEAC,IAAAA,MAAM,CAANA,IAAAA,CAAAA,MAAAA,EAAAA,OAAAA,CAA6BC,QAAD,IAAsB;AAChD,YAAMC,CAAC,GAAGC,MAAM,CAAhB,QAAgB,CAAhB;AACA,YAAMC,CAAC,GAAGX,UAAU,CAACS,CAAC,CAAtB,GAAoB,CAApB;;AACA,UAAIE,CAAC,KAAL,SAAA,EAAqB;AACnBL,QAAAA,MAAM,CAANA,QAAM,CAANA,GAAmB,CAACK,CAAC,CAADA,OAAAA,CAAD,GAACA,CAAD,GACfA,CAAC,CAADA,KAAAA,CAAAA,GAAAA,EAAAA,GAAAA,CAAkBC,KAAD,IAAWV,MAAM,CADnB,KACmB,CAAlCS,CADe,GAEfF,CAAC,CAADA,MAAAA,GACA,CAACP,MAAM,CADPO,CACO,CAAP,CADAA,GAEAP,MAAM,CAJVI,CAIU,CAJVA;AAMH;AAVDC,KAAAA;AAWA,WAAA,MAAA;AA9BF,GAAA;AAgCD","sourcesContent":["import { getRouteRegex } from './route-regex'\n\nexport function getRouteMatcher(routeRegex: ReturnType<typeof getRouteRegex>) {\n const { re, groups } = routeRegex\n return (pathname: string | null | undefined) => {\n const routeMatch = re.exec(pathname!)\n if (!routeMatch) {\n return false\n }\n\n const decode = (param: string) => {\n try {\n return decodeURIComponent(param)\n } catch (_) {\n const err: Error & { code?: string } = new Error(\n 'failed to decode param'\n )\n err.code = 'DECODE_FAILED'\n throw err\n }\n }\n const params: { [paramName: string]: string | string[] } = {}\n\n Object.keys(groups).forEach((slugName: string) => {\n const g = groups[slugName]\n const m = routeMatch[g.pos]\n if (m !== undefined) {\n params[slugName] = ~m.indexOf('/')\n ? m.split('/').map((entry) => decode(entry))\n : g.repeat\n ? [decode(m)]\n : decode(m)\n }\n })\n return params\n }\n}\n"]},"metadata":{},"sourceType":"script"}