Hi! I took a look at issue 15031. Would the following be a proper fix? (plus updating the tests)
⎿ diff --git a/packages/config/src/router.ts b/packages/config/src/router.ts
index 560152ba1..473f16761 100644
--- a/packages/config/src/router.ts
+++ b/packages/config/src/router.ts
@@ -1,5 +1,4 @@
import { cacheHeader } from 'pretty-cache-header';
-import { sourceToRegex } from '@vercel/routing-utils';
import { validateRegexPattern, parseCronExpression } from './utils/validation';
import type {
Condition,
@@ -8,24 +7,6 @@ import type {
Rewrite,
} from './types';
-/**
- * Convert a destination string from path-to-regexp format to use capture group references.
- * Replaces :paramName with $index based on the segments array.
- */
-function convertDestination(destination: string, segments: string[]): string {
- let result = destination;
- segments.forEach((segment, index) => {
- const patterns = [
- new RegExp(`:${segment}\\*`, 'g'),
- new RegExp(`:${segment}\\+`, 'g'),
- new RegExp(`:${segment}(?![a-zA-Z0-9_])`, 'g'),
- ];
- for (const pattern of patterns) {
- result = result.replace(pattern, `$${index + 1}`);
- }
- });
- return result;
-}
/**
* Type utility to extract path parameter names from a route pattern string.
@@ -777,13 +758,9 @@ export class Router {
}
}
- // Convert path-to-regexp patterns to regex for routes format
- const { src: regexSrc, segments } = sourceToRegex(source);
- const convertedDest = convertDestination(destination, segments);
-
const route: Route = {
- src: regexSrc,
- dest: convertedDest,
+ source,
+ destination,
transforms,
};
if (has) route.has = has;
@@ -936,13 +913,9 @@ export class Router {
transforms.push(transform);
}
- // Convert path-to-regexp patterns to regex for routes format
- const { src: regexSrc, segments } = sourceToRegex(source);
- const convertedDest = convertDestination(destination, segments);
-
const route: Route = {
- src: regexSrc,
- dest: convertedDest,
+ source,
+ destination,
status: statusCode || (permanent ? 308 : 307),
transforms,
};