astro-loader-hashnode
Version:
Astro content loader for seamlessly integrating Hashnode blog posts into your Astro website using the Content Layer API
89 lines (88 loc) • 2.21 kB
TypeScript
/**
* URL Utilities
*/
import { URLSearchParams } from 'url';
/**
* Generate a URL-friendly slug from text
*/
export declare function createSlug(text: string): string;
/**
* Ensure URL has proper protocol
*/
export declare function normalizeUrl(url: string): string;
/**
* Extract domain from URL
*/
export declare function extractDomain(url: string): string;
/**
* Check if URL is valid
*/
export declare function isValidUrl(url: string): boolean;
/**
* Generate absolute URL from relative path
*/
export declare function makeAbsoluteUrl(path: string, baseUrl: string): string;
/**
* Build URL with query parameters
*/
export declare function buildUrl(baseUrl: string, params: Record<string, string | number | boolean | undefined>): string;
/**
* Parse URL and extract components
*/
export declare function parseUrl(url: string): {
protocol: string;
hostname: string;
pathname: string;
search: string;
hash: string;
searchParams: URLSearchParams;
} | null;
/**
* Clean URL by removing tracking parameters
*/
export declare function cleanUrl(url: string, paramsToRemove?: string[]): string;
/**
* Generate social media sharing URLs
*/
export declare function generateSharingUrls(data: {
url: string;
title: string;
description?: string;
hashtags?: string[];
via?: string;
}): {
twitter: string;
facebook: string;
linkedin: string;
reddit: string;
email: string;
};
/**
* Generate canonical URL
*/
export declare function generateCanonicalUrl(slug: string, baseUrl: string, options?: {
pathPrefix?: string;
removeTrailingSlash?: boolean;
}): string;
/**
* Extract slug from URL
*/
export declare function extractSlugFromUrl(url: string): string;
/**
* Check if URL is from the same domain
*/
export declare function isSameDomain(url1: string, url2: string): boolean;
/**
* Generate sitemap URL entries
*/
export declare function generateSitemapEntry(data: {
url: string;
lastModified?: Date;
changeFrequency?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never';
priority?: number;
}): {
loc: string;
lastmod?: string;
changefreq?: string;
priority?: string;
};