43 lines
1.3 KiB
JavaScript
43 lines
1.3 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
Object.defineProperty(exports, "getRouteMatcher", {
|
|
enumerable: true,
|
|
get: function() {
|
|
return getRouteMatcher;
|
|
}
|
|
});
|
|
const _utils = require("../../utils");
|
|
function getRouteMatcher(param) {
|
|
let { re, groups } = param;
|
|
return (pathname)=>{
|
|
const routeMatch = re.exec(pathname);
|
|
if (!routeMatch) return false;
|
|
const decode = (param)=>{
|
|
try {
|
|
return decodeURIComponent(param);
|
|
} catch (e) {
|
|
throw Object.defineProperty(new _utils.DecodeError('failed to decode param'), "__NEXT_ERROR_CODE", {
|
|
value: "E528",
|
|
enumerable: false,
|
|
configurable: true
|
|
});
|
|
}
|
|
};
|
|
const params = {};
|
|
for (const [key, group] of Object.entries(groups)){
|
|
const match = routeMatch[group.pos];
|
|
if (match !== undefined) {
|
|
if (group.repeat) {
|
|
params[key] = match.split('/').map((entry)=>decode(entry));
|
|
} else {
|
|
params[key] = decode(match);
|
|
}
|
|
}
|
|
}
|
|
return params;
|
|
};
|
|
}
|
|
|
|
//# sourceMappingURL=route-matcher.js.map
|