@forge/react

11.18.0-next.011.18.0-next.1
out/router/utils/matchPath.js
+out/router/utils/matchPath.jsNew file
+34
Index: package/out/router/utils/matchPath.js
===================================================================
--- package/out/router/utils/matchPath.js
+++ package/out/router/utils/matchPath.js
@@ -0,0 +1,34 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.matchPath = void 0;
+const matchPath = (pattern, pathname) => {
+    const patternSegments = pattern.split('/').filter(Boolean);
+    const pathSegments = pathname.split('/').filter(Boolean);
+    const hasCatchall = patternSegments.length > 0 && patternSegments[patternSegments.length - 1] === '*';
+    const matchSegments = hasCatchall ? patternSegments.slice(0, -1) : patternSegments;
+    if (hasCatchall) {
+        if (pathSegments.length < matchSegments.length) {
+            return null;
+        }
+    }
+    else if (patternSegments.length !== pathSegments.length) {
+        return null;
+    }
+    const params = {};
+    for (let i = 0; i < matchSegments.length; i++) {
+        const patternSegment = matchSegments[i];
+        const pathSegment = pathSegments[i];
+        if (patternSegment.startsWith(':')) {
+            const paramName = patternSegment.slice(1);
+            params[paramName] = pathSegment;
+        }
+        else if (patternSegment !== pathSegment) {
+            return null;
+        }
+    }
+    if (hasCatchall) {
+        params['*'] = pathSegments.slice(matchSegments.length).join('/');
+    }
+    return { params };
+};
+exports.matchPath = matchPath;