polen
Version:
A framework for delightful GraphQL developer portals
39 lines (34 loc) • 1.09 kB
text/typescript
/**
* Helper functions for generating asset URLs that respect the base path configuration.
*/
/**
* Join a base path with an asset path, handling leading/trailing slashes correctly.
*/
export const joinPaths = (base: string, path: string): string => {
// Remove leading slash from path if present
const cleanPath = path.startsWith(`/`) ? path.slice(1) : path
// Base already has trailing slash by validation
return base + cleanPath
}
/**
* Create an asset URL from a path, respecting the base configuration.
*/
export const assetUrl = (path: string, base: string): string => {
return joinPaths(base, path)
}
/**
* Create a favicon URL from a path, respecting the base configuration.
*/
export const faviconUrl = (path: string, base: string): string => {
return assetUrl(path, base)
}
/**
* Create a page URL from a path, respecting the base configuration.
*/
export const pageUrl = (path: string, base: string): string => {
// For pages, we want to ensure no double slashes
if (path === `/` || path === ``) {
return base
}
return joinPaths(base, path)
}