Files

50 lines
2.7 KiB
TypeScript

/**
* A set of common path utilities commonly used through the Astro core and integration
* projects. These do things like ensure a forward slash prepends paths.
*/
export declare function appendExtension(path: string, extension: string): string;
export declare function appendForwardSlash(path: string): string;
export declare function prependForwardSlash(path: string): string;
export declare const MANY_LEADING_SLASHES: RegExp;
export declare function collapseDuplicateLeadingSlashes(path: string): string;
export declare function collapseDuplicateSlashes(path: string): string;
export declare const MANY_TRAILING_SLASHES: RegExp;
export declare function collapseDuplicateTrailingSlashes(path: string, trailingSlash: boolean): string;
export declare function removeTrailingForwardSlash(path: string): string;
export declare function removeLeadingForwardSlash(path: string): string;
export declare function removeLeadingForwardSlashWindows(path: string): string;
export declare function trimSlashes(path: string): string;
export declare function isRelativePath(path: string): boolean;
export declare function isInternalPath(path: string): boolean;
export declare function joinPaths(...paths: (string | undefined)[]): string;
export declare function removeFileExtension(path: string): string;
export declare function removeQueryString(path: string): string;
/**
* Checks whether the path is considered a remote path.
* Remote means untrusted in this context, so anything that isn't a straightforward
* local path is considered remote.
*
* @param src
*/
export declare function isRemotePath(src: string): boolean;
/**
* Checks if parentPath is a parent directory of childPath.
*/
export declare function isParentDirectory(parentPath: string, childPath: string): boolean;
export declare function slash(path: string): string;
export declare function fileExtension(path: string): string;
export declare function removeBase(path: string, base: string): string;
export declare function hasFileExtension(path: string): boolean;
/**
* Normalizes a URL pathname to match the canonical form used by route generation.
* This reverses the transformations done by `getUrlForPath` in generate.ts.
*
* - For `buildFormat: 'file'`: strips `.html` extension
* - For `buildFormat: 'directory'/'preserve'` with `trailingSlash: 'ignore'`: strips trailing slash
*
* @param pathname - The URL pathname to normalize
* @param buildFormat - The build format ('file', 'directory', or 'preserve')
* @param trailingSlash - The trailing slash setting ('always', 'never', or 'ignore')
*/
export declare function normalizePathname(pathname: string, buildFormat: 'file' | 'directory' | 'preserve', trailingSlash: 'always' | 'never' | 'ignore'): string;