one
Version:
One is a React framework for web, iOS, and Android apps.
1 lines • 14.8 kB
Source Map (JSON)
{"version":3,"file":"getStateFromPath-mods.js","names":[],"sources":["esm/fork/getStateFromPath-mods.js"],"sourcesContent":["import escape_ from \"escape-string-regexp\";\nimport { matchGroupName, stripGroupSegmentsFromPath } from \"../router/matchers\";\nfunction getUrlWithReactNavigationConcessions(path, baseUrl = process.env.EXPO_BASE_URL) {\n const pathWithoutGroups = stripGroupSegmentsFromPath(stripBaseUrl(path, baseUrl));\n let pathname = \"\";\n let hash = \"\";\n try {\n const hashIndex = path.indexOf(\"#\");\n const queryIndex = path.indexOf(\"?\");\n if (hashIndex >= 0) {\n hash = path.slice(hashIndex);\n }\n let end = path.length;\n if (queryIndex >= 0) end = Math.min(end, queryIndex);\n if (hashIndex >= 0) end = Math.min(end, hashIndex);\n pathname = path.slice(0, end);\n if (pathname.startsWith(\"http://\") || pathname.startsWith(\"https://\")) {\n const originEnd = pathname.indexOf(\"/\", pathname.indexOf(\"//\") + 2);\n if (originEnd >= 0) {\n pathname = pathname.slice(originEnd);\n }\n }\n } catch {\n }\n const withoutBaseUrl = stripBaseUrl(pathname, baseUrl);\n return {\n path,\n // Make sure there is a trailing slash\n // The slashes are at the end, not the beginning\n nonstandardPathname: withoutBaseUrl.replace(/^\\/+/g, \"\").replace(/\\/+$/g, \"\") + \"/\",\n hash,\n pathWithoutGroups\n };\n}\nfunction matchForEmptyPath(configs) {\n const leafNodes = configs.filter((config) => !config.hasChildren).map((value) => {\n return {\n ...value,\n // Collapse all levels of group segments before testing.\n // This enables `app/(one)/(two)/index.js` to be matched.\n path: stripGroupSegmentsFromPath(value.path)\n };\n });\n const match = leafNodes.find(\n (config) => (\n // NOTE: Test leaf node index routes that either don't have a regex or match an empty string.\n config.path === \"\" && (!config.regex || config.regex.test(\"\"))\n )\n ) ?? leafNodes.find(\n (config) => (\n // NOTE: Test leaf node dynamic routes that match an empty string.\n config.path.startsWith(\":\") && config.regex.test(\"\")\n )\n ) ?? // NOTE: Test leaf node deep dynamic routes that match a slash.\n // This should be done last to enable dynamic routes having a higher priority.\n leafNodes.find((config) => config.path.startsWith(\"*\") && config.regex.test(\"/\"));\n return match;\n}\nfunction appendIsInitial(initialRoutes) {\n const resolvedInitialPatterns = initialRoutes.map(\n (route) => joinPaths(...route.parentScreens, route.initialRouteName)\n );\n return (config) => {\n config.isInitial = resolvedInitialPatterns.includes(config.routeNames.join(\"/\"));\n return config;\n };\n}\nconst joinPaths = (...paths) => [].concat(...paths.map((p) => p.split(\"/\"))).filter(Boolean).join(\"/\");\nfunction getRouteConfigSorter(previousSegments = []) {\n return function sortConfigs(a, b) {\n if (a.pattern === b.pattern) {\n return b.routeNames.join(\">\").localeCompare(a.routeNames.join(\">\"));\n }\n if (a.pattern.startsWith(b.pattern) && !b.isIndex) {\n return -1;\n }\n if (b.pattern.startsWith(a.pattern) && !a.isIndex) {\n return 1;\n }\n if (a.type === \"static\" && b.type !== \"static\") {\n return -1;\n }\n if (a.type !== \"static\" && b.type === \"static\") {\n return 1;\n }\n if (a.staticPartCount !== b.staticPartCount) {\n return b.staticPartCount - a.staticPartCount;\n }\n const similarToPreviousA = previousSegments.filter((value, index) => {\n return value === a.expandedRouteNames[index] && value.startsWith(\"(\") && value.endsWith(\")\");\n });\n const similarToPreviousB = previousSegments.filter((value, index) => {\n return value === b.expandedRouteNames[index] && value.startsWith(\"(\") && value.endsWith(\")\");\n });\n if ((similarToPreviousA.length > 0 || similarToPreviousB.length > 0) && similarToPreviousA.length !== similarToPreviousB.length) {\n return similarToPreviousB.length - similarToPreviousA.length;\n }\n for (let i = 0; i < Math.max(a.parts.length, b.parts.length); i++) {\n if (a.parts[i] == null) {\n return 1;\n }\n if (b.parts[i] == null) {\n return -1;\n }\n const aWildCard = a.parts[i].startsWith(\"*\");\n const bWildCard = b.parts[i].startsWith(\"*\");\n if (aWildCard && bWildCard) {\n const aNotFound = a.parts[i].match(/^[*]not-found$/);\n const bNotFound = b.parts[i].match(/^[*]not-found$/);\n if (aNotFound && bNotFound) {\n continue;\n }\n if (aNotFound) {\n return 1;\n }\n if (bNotFound) {\n return -1;\n }\n continue;\n }\n if (aWildCard) {\n return 1;\n }\n if (bWildCard) {\n return -1;\n }\n const aSlug = a.parts[i].startsWith(\":\");\n const bSlug = b.parts[i].startsWith(\":\");\n if (aSlug && bSlug) {\n const aNotFound = a.parts[i].match(/^[*]not-found$/);\n const bNotFound = b.parts[i].match(/^[*]not-found$/);\n if (aNotFound && bNotFound) {\n continue;\n }\n if (aNotFound) {\n return 1;\n }\n if (bNotFound) {\n return -1;\n }\n continue;\n }\n if (aSlug) {\n return 1;\n }\n if (bSlug) {\n return -1;\n }\n }\n if (a.isInitial && !b.isInitial) {\n return -1;\n }\n if (!a.isInitial && b.isInitial) {\n return 1;\n }\n return b.parts.length - a.parts.length;\n };\n}\nfunction formatRegexPattern(it) {\n it = it.replace(/ /g, \"%20\");\n if (it.startsWith(\":\")) {\n return `(((?!\\\\+not-found(?:/|$))[^/]+\\\\/)${it.endsWith(\"?\") ? \"?\" : \"\"})`;\n }\n if (it.startsWith(\"*\")) {\n return `((.*\\\\/)${it.endsWith(\"?\") ? \"?\" : \"\"})`;\n }\n if (matchGroupName(it) != null) {\n return `(?:${escape(it)}\\\\/)?`;\n }\n return escape_(it) + `\\\\/`;\n}\nfunction decodeURIComponentSafe(str) {\n try {\n return decodeURIComponent(str);\n } catch {\n return str;\n }\n}\nfunction populateParams(routes, params) {\n if (!routes || !params || Object.keys(params).length === 0) return;\n for (const route of routes) {\n Object.assign(route, { params });\n }\n return routes;\n}\nfunction createConfigItemAdditionalProperties(screen, pattern, routeNames, config = {}) {\n const parts = [];\n let isDynamic = false;\n let staticPartCount = 0;\n const isIndex = screen === \"index\" || screen.endsWith(\"/index\");\n for (const part of pattern.split(\"/\")) {\n if (part) {\n const isDynamicPart = part.startsWith(\":\") || part.startsWith(\"*\") || part.includes(\"*not-found\");\n isDynamic ||= isDynamicPart;\n if (!matchGroupName(part)) {\n parts.push(part);\n if (!isDynamicPart) {\n staticPartCount++;\n }\n }\n }\n }\n const hasChildren = config.screens ? !!Object.keys(config.screens)?.length : false;\n const type = hasChildren ? \"layout\" : isDynamic ? \"dynamic\" : \"static\";\n if (isIndex) {\n parts.push(\"index\");\n staticPartCount++;\n }\n return {\n type,\n isIndex,\n hasChildren,\n parts,\n staticPartCount,\n userReadableName: [...routeNames.slice(0, -1), config.path || screen].join(\"/\"),\n expandedRouteNames: routeNames.flatMap((name) => {\n return name.split(\"/\");\n })\n };\n}\nfunction parseQueryParamsExtended(path, route, parseConfig, hash) {\n const queryIndex = path.indexOf(\"?\");\n const hashIndex = path.indexOf(\"#\");\n const queryEnd = hashIndex >= 0 && hashIndex > queryIndex ? hashIndex : void 0;\n const searchParams = new URLSearchParams(\n queryIndex >= 0 ? path.slice(queryIndex + 1, queryEnd) : \"\"\n );\n const params = /* @__PURE__ */ Object.create(null);\n if (hash) {\n params[\"#\"] = hash.slice(1);\n }\n for (const name of searchParams.keys()) {\n if (route.params?.[name]) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\n `Route '/${route.name}' with param '${name}' was specified both in the path and as a param, removing from path`\n );\n }\n } else {\n const values = parseConfig?.hasOwnProperty(name) ? searchParams.getAll(name).map((value) => parseConfig[name](value)) : searchParams.getAll(name);\n params[name] = values.length === 1 ? values[0] : values;\n }\n }\n return Object.keys(params).length ? params : void 0;\n}\nfunction stripBaseUrl(path, baseUrl = process.env.EXPO_BASE_URL) {\n if (process.env.NODE_ENV !== \"development\") {\n if (baseUrl) {\n return path.replace(/^\\/+/g, \"/\").replace(new RegExp(`^\\\\/?${escape(baseUrl)}`, \"g\"), \"\");\n }\n }\n return path;\n}\nexport {\n appendIsInitial,\n createConfigItemAdditionalProperties,\n decodeURIComponentSafe,\n formatRegexPattern,\n getRouteConfigSorter,\n getUrlWithReactNavigationConcessions,\n matchForEmptyPath,\n parseQueryParamsExtended,\n populateParams,\n stripBaseUrl\n};\n//# sourceMappingURL=getStateFromPath-mods.js.map\n"],"mappings":"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"}