UNPKG

one

Version:

One is a React framework for web, iOS, and Android apps.

1 lines • 7.69 kB
{"version":3,"file":"matchers.js","names":[],"sources":["esm/router/matchers.js"],"sourcesContent":["const dynamicNameRe = /^\\[([^[\\]]+?)\\]$/;\nfunction matchDynamicName(name) {\n const paramName = name.match(dynamicNameRe)?.[1];\n if (paramName == null) {\n return void 0;\n } else if (paramName.startsWith(\"...\")) {\n return { name: paramName.slice(3), deep: true };\n } else {\n return { name: paramName, deep: false };\n }\n}\nfunction matchRoutePattern(pattern, path) {\n const patternSegments = pattern.split(\"/\").filter(Boolean);\n if (patternSegments[patternSegments.length - 1] === \"index\") {\n patternSegments.pop();\n }\n const pathSegments = path.split(\"/\").filter(Boolean);\n let specificity = 0;\n let pi = 0;\n for (let ui = 0; ui < patternSegments.length; ui++) {\n const seg = patternSegments[ui];\n if (seg.startsWith(\"(\") && seg.endsWith(\")\")) continue;\n if (seg.startsWith(\"[...\") && seg.endsWith(\"]\")) {\n return { specificity: specificity + (pathSegments.length - pi) };\n }\n if (pi >= pathSegments.length) return null;\n if (seg.startsWith(\"[\") && seg.endsWith(\"]\")) {\n specificity += 1;\n pi += 1;\n continue;\n }\n if (seg !== pathSegments[pi]) return null;\n specificity += 2;\n pi += 1;\n }\n return { specificity };\n}\nfunction matchDeepDynamicRouteName(name) {\n return name.match(/^\\[\\.\\.\\.([^/]+?)\\]$/)?.[1];\n}\nfunction testNotFound(name) {\n return name.endsWith(\"+not-found\");\n}\nfunction matchGroupName(name) {\n return name.match(/^(?:[^\\\\(\\\\)])*?\\(([^\\\\/]+)\\).*?$/)?.[1];\n}\nfunction matchArrayGroupName(name) {\n return name.match(/(?:[^\\\\(\\\\)])*?\\(?([^\\\\/()]+,[^\\\\/()]+)\\)?.*?$/)?.[1];\n}\nfunction getNameFromFilePath(name) {\n return removeSupportedExtensions(removeFileSystemDots(name));\n}\nfunction getContextKey(name) {\n const normal = \"/\" + getNameFromFilePath(name);\n if (!normal.endsWith(\"_layout\")) {\n return normal;\n }\n return normal.replace(/\\/?_layout$/, \"\");\n}\nfunction removeSupportedExtensions(name) {\n return name.replace(/(\\+(api|spa|ssg|ssr))?\\.[jt]sx?$/g, \"\");\n}\nfunction removeFileSystemDots(filePath) {\n return filePath.replace(/^(?:\\.\\.?\\/)+/g, \"\");\n}\nfunction stripGroupSegmentsFromPath(path) {\n return path.split(\"/\").reduce((acc, v) => {\n if (matchGroupName(v) == null) {\n acc.push(v);\n }\n return acc;\n }, []).join(\"/\");\n}\nfunction stripInvisibleSegmentsFromPath(path) {\n return stripGroupSegmentsFromPath(path).replace(/\\/?index$/, \"\");\n}\nfunction isTypedRoute(name) {\n return !name.startsWith(\"+\") && !name.endsWith(\".d.ts\") && name.match(/(_layout|[^/]*?\\+[^/]*?)\\.[tj]sx?$/) === null;\n}\nconst directoryRenderModeRe = /^(.+)\\+(api|ssg|ssr|spa)$/;\nfunction matchFileRenderMode(name) {\n const mode = name.match(/\\+(api|ssg|ssr|spa)\\.(?:\\w+\\.)?[jt]sx?$/)?.[1];\n if (mode === \"api\" || mode === \"ssg\" || mode === \"ssr\" || mode === \"spa\") {\n return mode;\n }\n}\nfunction matchDirectoryRenderMode(name) {\n const match = name.match(directoryRenderModeRe);\n if (!match) return void 0;\n return {\n name: match[1],\n renderMode: match[2]\n };\n}\nconst slotPrefixRe = /^@([a-zA-Z][a-zA-Z0-9_-]*)$/;\nfunction matchSlotName(name) {\n return name.match(slotPrefixRe)?.[1];\n}\nfunction isSlotDirectory(name) {\n return slotPrefixRe.test(name);\n}\nfunction matchInterceptPrefix(segment) {\n const match = segment.match(/^((?:\\(\\.{1,3}\\))+)(.+)$/);\n if (!match) return void 0;\n const [, prefixes, targetPath] = match;\n if (prefixes.includes(\"(...)\")) {\n return { levels: Infinity, targetPath, originalSegment: segment };\n }\n const doubleDotMatches = prefixes.match(/\\(\\.{2}\\)/g) || [];\n const levels = doubleDotMatches.length;\n return { levels, targetPath, originalSegment: segment };\n}\nfunction stripInterceptPrefix(segment) {\n const match = matchInterceptPrefix(segment);\n return match ? match.targetPath : segment;\n}\nfunction hasInterceptPrefix(segment) {\n return /^\\(\\.{1,3}\\)/.test(segment);\n}\nfunction stripSlotSegmentsFromPath(path) {\n return path.split(\"/\").filter((segment) => !isSlotDirectory(segment)).join(\"/\");\n}\nexport {\n getContextKey,\n getNameFromFilePath,\n hasInterceptPrefix,\n isSlotDirectory,\n isTypedRoute,\n matchArrayGroupName,\n matchDeepDynamicRouteName,\n matchDirectoryRenderMode,\n matchDynamicName,\n matchFileRenderMode,\n matchGroupName,\n matchInterceptPrefix,\n matchRoutePattern,\n matchSlotName,\n removeFileSystemDots,\n removeSupportedExtensions,\n stripGroupSegmentsFromPath,\n stripInterceptPrefix,\n stripInvisibleSegmentsFromPath,\n stripSlotSegmentsFromPath,\n testNotFound\n};\n//# sourceMappingURL=matchers.js.map\n"],"mappings":"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"}