@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;