one
Version:
One is a new React Framework that makes Vite serve both native and web.
88 lines (87 loc) • 2.71 kB
JavaScript
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