24 lines
820 B
JavaScript
Raw Permalink Normal View History

2025-09-05 14:59:21 +08:00
import { useRuntimeConfig } from "#imports";
import { defu } from "defu";
import { createRouter as createRadixRouter, toRouteMatcher } from "radix3";
import { withoutBase, withoutTrailingSlash } from "ufo";
export function withoutQuery(path) {
return path.split("?")[0];
}
export function createNitroRouteRuleMatcher() {
const { nitro, app } = useRuntimeConfig();
const _routeRulesMatcher = toRouteMatcher(
createRadixRouter({
routes: Object.fromEntries(
Object.entries(nitro?.routeRules || {}).map(([path, rules]) => [withoutTrailingSlash(path), rules])
)
})
);
return (path) => {
return defu({}, ..._routeRulesMatcher.matchAll(
// radix3 does not support trailing slashes
withoutBase(withoutTrailingSlash(withoutQuery(path)), app.baseURL)
).reverse());
};
}