@tsed/platform-fastify
Version:
Fastify package for Ts.ED framework
38 lines (37 loc) • 1.47 kB
JavaScript
import { isString } from "@tsed/core";
export function convertPath(path) {
if (isString(path)) {
const segments = path.split("/");
const parsed = segments.reduce((options, segment, index) => {
const isLastSegment = index === segments.length - 1;
if (isLastSegment && (segment === "*" || segment === "(.*)")) {
options.wildcard = "*";
options.path.push("*");
return options;
}
if (isLastSegment && segment.startsWith("*")) {
options.wildcard = segment.substring(1);
options.path.push("*");
return options;
}
if (segment.startsWith(":") && segment.endsWith("*")) {
options.wildcard = segment.substring(1, segment.length - 1);
options.path.push("*");
return options;
}
if (segment.startsWith("{:") && segment.endsWith("}")) {
// Handle v5 style parameters like /{param}
const paramName = segment.substring(2, segment.length - 1);
options.path.push(`:${paramName}?`);
return options;
}
options.path.push(segment);
return options;
}, { path: [], wildcard: undefined });
return {
path: parsed.path.join("/"),
wildcard: parsed.wildcard
};
}
return { path };
}