mirror of
https://github.com/quartz-community/utils.git
synced 2026-07-22 02:50:27 +00:00
With build tools (tsup, typescript) moved to devDependencies, the prepare script can no longer build when npm fetches this package from GitHub (npm does not install devDependencies for git dependencies). Commit the pre-built dist/ output so GitHub-based installs work without a build step.
40 lines
2.3 KiB
TypeScript
40 lines
2.3 KiB
TypeScript
import { FullSlug, FilePath } from '@quartz-community/types';
|
|
export { FilePath, FullSlug } from '@quartz-community/types';
|
|
|
|
/** No '/index' ending, no file extension, can have trailing slash for folders. */
|
|
type SimpleSlug = string & {
|
|
_brand: "SimpleSlug";
|
|
};
|
|
/** Starts with './' or '../', used for navigation. */
|
|
type RelativeURL = string & {
|
|
_brand: "RelativeURL";
|
|
};
|
|
interface TransformOptions {
|
|
strategy: "absolute" | "relative" | "shortest";
|
|
allSlugs: FullSlug[];
|
|
}
|
|
declare function isFilePath(s: string): s is FilePath;
|
|
declare function isFullSlug(s: string): s is FullSlug;
|
|
declare function isSimpleSlug(s: string): s is SimpleSlug;
|
|
declare function isRelativeURL(s: string): s is RelativeURL;
|
|
declare function isAbsoluteURL(s: string): boolean;
|
|
declare function simplifySlug(fp: FullSlug | string): SimpleSlug;
|
|
declare function getFullSlug(window: Window): FullSlug;
|
|
declare function getFullSlugFromUrl(): FullSlug;
|
|
declare function slugifyFilePath(fp: FilePath, excludeExt?: boolean): FullSlug;
|
|
declare function joinSegments(...args: string[]): string;
|
|
declare function resolvePath(to: string): string;
|
|
declare function endsWith(s: string, suffix: string): boolean;
|
|
declare function trimSuffix(s: string, suffix: string): string;
|
|
declare function stripSlashes(s: string, onlyStripPrefix?: boolean): string;
|
|
declare function getFileExtension(s: string): string | undefined;
|
|
declare function isFolderPath(fplike: string): boolean;
|
|
declare function getAllSegmentPrefixes(path: string): string[];
|
|
declare function pathToRoot(slug: FullSlug): RelativeURL;
|
|
declare function resolveRelative(current: FullSlug, target: FullSlug | SimpleSlug): RelativeURL;
|
|
declare function splitAnchor(link: string): [string, string];
|
|
declare function slugTag(tag: string): string;
|
|
declare function transformInternalLink(link: string): RelativeURL;
|
|
declare function transformLink(src: FullSlug, target: string, opts: TransformOptions): RelativeURL;
|
|
|
|
export { type RelativeURL, type SimpleSlug, type TransformOptions, endsWith, getAllSegmentPrefixes, getFileExtension, getFullSlug, getFullSlugFromUrl, isAbsoluteURL, isFilePath, isFolderPath, isFullSlug, isRelativeURL, isSimpleSlug, joinSegments, pathToRoot, resolvePath, resolveRelative, simplifySlug, slugTag, slugifyFilePath, splitAnchor, stripSlashes, transformInternalLink, transformLink, trimSuffix };
|