@ai-growth/nextjs
Version:
Seamlessly integrate Sanity CMS with Next.js applications for automated blog routing and rendering
98 lines • 3.39 kB
TypeScript
/**
* @fileoverview Structured Data Generation Utilities
*
* This module provides functions for generating JSON-LD structured data
* for different content types according to Schema.org standards.
*/
import { StructuredData, ArticleStructuredData, PersonStructuredData, OrganizationStructuredData, WebsiteStructuredData, BreadcrumbStructuredData, ExtendedSEO, SEOConfig, ContentTypeResult } from '../../types/seo';
import { SanityPost, SanityPage } from '../../types/sanity';
/**
* Options for generating structured data
*/
export interface StructuredDataGenerationOptions {
seo: ExtendedSEO;
content?: SanityPost | SanityPage | any;
config: SEOConfig;
url: string;
contentAnalysis: ContentTypeResult;
customStructuredData: StructuredData[];
organization: OrganizationStructuredData;
}
/**
* Generate all structured data for a page
*
* @param options - Structured data generation options
* @returns Array of structured data objects
*/
export declare function generateStructuredData(options: StructuredDataGenerationOptions): StructuredData[];
/**
* Generate website structured data
*
* @param config - SEO configuration
* @param organization - Organization data
* @returns Website structured data
*/
export declare function generateWebsiteData(config: SEOConfig, organization: OrganizationStructuredData): WebsiteStructuredData;
/**
* Generate web page structured data
*
* @param seo - SEO data
* @param config - SEO configuration
* @param url - Page URL
* @returns WebPage structured data
*/
export declare function generateWebPageData(seo: ExtendedSEO, config: SEOConfig, url: string): StructuredData;
/**
* Generate article structured data
*
* @param content - Content data
* @param seo - SEO data
* @param config - SEO configuration
* @param url - Article URL
* @param organization - Organization data
* @returns Article structured data
*/
export declare function generateArticleData(content: SanityPost | any, seo: ExtendedSEO, config: SEOConfig, url: string, organization: OrganizationStructuredData): ArticleStructuredData;
/**
* Generate person structured data
*
* @param person - Person data
* @param config - SEO configuration
* @param url - Person page URL
* @returns Person structured data
*/
export declare function generatePersonData(person: any, config: SEOConfig, url: string): PersonStructuredData;
/**
* Generate breadcrumb structured data
*
* @param currentUrl - Current page URL
* @param baseUrl - Base site URL
* @returns Breadcrumb structured data
*/
export declare function generateBreadcrumbData(currentUrl: string, baseUrl: string): BreadcrumbStructuredData;
/**
* Generate organization structured data
*
* @param config - SEO configuration
* @returns Organization structured data
*/
export declare function generateOrganizationData(config: SEOConfig): OrganizationStructuredData;
/**
* Validate structured data object
*
* @param data - Structured data to validate
* @returns Validation result
*/
export declare function validateStructuredData(data: StructuredData): {
isValid: boolean;
errors: string[];
warnings: string[];
};
/**
* Escape JSON-LD for safe HTML embedding
*
* @param data - Structured data object
* @returns Escaped JSON string
*/
export declare function escapeJsonLD(data: StructuredData): string;
//# sourceMappingURL=structured-data.d.ts.map