UNPKG

one

Version:

One is a new React Framework that makes Vite serve both native and web.

88 lines (87 loc) 2.71 kB
import { matchDynamicName, matchGroupName } from "../router/matchers.mjs"; import { getParamName } from "./_shared.mjs"; function getPathWithConventionsCollapsed({ pattern, route, params, preserveGroups, preserveDynamicRoutes, shouldEncodeURISegment = true, initialRouteName }) { const segments = pattern.split("/"); return segments.map((p, i) => { const name = getParamName(p); if (p.startsWith("*")) { if (preserveDynamicRoutes) { if (name === "not-found") { return "+not-found"; } return `[...${name}]`; } if (params[name]) { if (Array.isArray(params[name])) { return params[name].join("/"); } return params[name]; } if (route.name.startsWith("[") && route.name.endsWith("]")) { return ""; } if (i === 0) { return route; } if (p === "*not-found") { return ""; } return route.name?.split("/").slice(i + 1).join("/"); } if (p.startsWith(":")) { if (preserveDynamicRoutes) { return `[${name}]`; } const value = params[name]; if (value === void 0 && p.endsWith("?")) { return void 0; } return (shouldEncodeURISegment ? encodeURISegment(value) : value) ?? "undefined"; } if (!preserveGroups && matchGroupName(p) != null) { if (segments.length - 1 === i) { if (initialRouteName) { if (segmentMatchesConvention(initialRouteName)) { return ""; } return shouldEncodeURISegment ? encodeURIComponentPreservingBrackets(initialRouteName) : initialRouteName; } } return ""; } return shouldEncodeURISegment ? encodeURIComponentPreservingBrackets(p) : p; }).map(v => v ?? "").join("/"); } function encodeURIComponentPreservingBrackets(str) { return encodeURIComponent(str).replace(/%5B/g, "[").replace(/%5D/g, "]"); } function appendBaseUrl(path, baseUrl = process.env.EXPO_BASE_URL) { if (process.env.NODE_ENV !== "development") { if (baseUrl) { return `/${baseUrl.replace(/^\/+/, "").replace(/\/$/, "")}${path}`; } } return path; } function segmentMatchesConvention(segment) { return segment === "index" || matchDynamicName(segment) != null || matchGroupName(segment) != null; } function encodeURISegment(str, { preserveBrackets = false } = {}) { str = String(str).replace(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]/g, char => encodeURIComponent(char)); if (preserveBrackets) { str = str.replace(/%5B/g, "[").replace(/%5D/g, "]"); } return str; } export { appendBaseUrl, getPathWithConventionsCollapsed }; //# sourceMappingURL=getPathFromState-mods.mjs.map