UNPKG

@digacy/astro-seo

Version:
456 lines (401 loc) 8.61 kB
export type OpeningHoursSpecification = { opens: string; closes: string; dayOfWeek: string | string[]; validFrom?: string; validThrough?: string; }; export type Offer = { priceSpecification: PriceSpecification; itemOffered: Service; }; export type PriceSpecification = { type: string; priceCurrency: string; price: string; }; export type Service = { name: string; description: string; }; export type Geo = { latitude: string; longitude: string; }; export type GeoCircle = { geoMidpoint: Geo; geoRadius: string; }; export type Action = { actionName: string; actionType: string; target: string; }; export type Step = { type: string; name: string; url?: string; itemListElement?: StepDetails[]; image?: string; }; export type StepDetails = { type: "HowToTip" | "HowToDirection"; text: string; }; export interface Person { name: string; } export interface Answer { text: string; dateCreated?: string; upvoteCount?: number; url?: string; author?: Person; } export interface Question { name: string; answerCount: number; acceptedAnswer?: Answer; suggestedAnswer?: Answer[]; text?: string; author?: Person; upvoteCount?: number; dateCreated?: string; } export interface Instruction { name?: string; text: string; url?: string; image?: string; } export interface Performer { type?: "Person" | "PerformingGroup"; name: string; } export interface Place { name: string; address: Address; sameAs?: string; } export interface VirtualLocation { name?: string; sameAs?: string; url: string; } export type Location = Place | VirtualLocation; export type EventStatus = | "EventCancelled" | "EventMovedOnline" | "EventPostponed" | "EventRescheduled" | "EventScheduled"; export type EventAttendanceMode = | "MixedEventAttendanceMode" | "OfflineEventAttendanceMode" | "OnlineEventAttendanceMode"; export interface Organizer { type: "Person" | "Organization"; name: string; url: string; } export interface ContactPoint { contactType: string; telephone: string; areaServed?: string | string[]; availableLanguage?: string | string[]; contactOption?: string | string[]; } export interface CreativeWork { author: string; about: string; name: string; datePublished: string; audience?: string; keywords?: string; thumbnailUrl?: string; image?: string; } export interface Producer { name: string; url?: string; } export interface ContactPoint { contactType: string; telephone: string; areaServed?: string | string[]; availableLanguage?: string | string[]; contactOption?: string | string[]; } export interface Question { questionName: string; acceptedAnswerText: string; } export interface Provider { type?: "Organization" | "Person"; name: string; url?: string; } export interface ItemListElements { item: string; name: string; position: number; } export interface OpenGraphMedia { url: string; width?: number; height?: number; alt?: string; type?: string; secureUrl?: string; } export interface Address { streetAddress: string; addressLocality: string; addressRegion?: string; postalCode: string; addressCountry: string; } export interface Video { name: string; description: string; thumbnailUrls: string[]; uploadDate: string; contentUrl?: string; duration?: string; embedUrl?: string; expires?: string; hasPart?: Clip | Clip[]; watchCount?: number; publication?: BroadcastEvent | BroadcastEvent[]; regionsAllowed?: string | string[]; } export interface Clip { name: string; startOffset: number; url: string; } export interface BroadcastEvent { name?: string; isLiveBroadcast: boolean; startDate: string; endDate: string; } export type Offers = { price: string; priceCurrency: string; priceValidUntil?: string; itemCondition?: string; availability?: string; url?: string; seller: { name: string; }; validFrom?: string; }; export type AggregateOffer = { priceCurrency: string; lowPrice: string; highPrice?: string; offerCount?: string; offers?: Offers | Offers[]; }; export interface OpenGraphVideoActors { profile: string; role?: string; } export interface OpenGraph { url?: string; type?: string; title?: string; description?: string; images?: ReadonlyArray<OpenGraphMedia>; videos?: ReadonlyArray<OpenGraphMedia>; defaultImageHeight?: number; defaultImageWidth?: number; locale?: string; site_name?: string; profile?: OpenGraphProfile; book?: OpenGraphBook; article?: OpenGraphArticle; video?: OpenGraphVideo; } export interface OpenGraphProfile { firstName?: string; lastName?: string; username?: string; gender?: string; } export interface OpenGraphBook { authors?: ReadonlyArray<string>; isbn?: string; releaseDate?: string; tags?: ReadonlyArray<string>; } export interface OpenGraphArticle { publishedTime?: string; modifiedTime?: string; expirationTime?: string; authors?: ReadonlyArray<string>; section?: string; tags?: ReadonlyArray<string>; } export interface OpenGraphVideo { actors?: ReadonlyArray<OpenGraphVideoActors>; directors?: ReadonlyArray<string>; writers?: ReadonlyArray<string>; duration?: number; releaseDate?: string; tags?: ReadonlyArray<string>; series?: string; } export interface Twitter { handle?: string; site?: string; cardType?: string; } interface MobileAlternate { media: string; href: string; } interface LanguageAlternate { hreflang: string; href: string; } interface LinkTag { rel: string; href: string; sizes?: string; media?: string; type?: string; color?: string; as?: string; crossOrigin?: string; } export interface BaseMetaTag { content: string; } export interface HTML5MetaTag extends BaseMetaTag { name: string; property?: undefined; httpEquiv?: undefined; } export interface RDFaMetaTag extends BaseMetaTag { property: string; name?: undefined; httpEquiv?: undefined; } export interface HTTPEquivMetaTag extends BaseMetaTag { httpEquiv: | "content-security-policy" | "content-type" | "default-style" | "x-ua-compatible" | "refresh"; name?: undefined; property?: undefined; } export type MetaTag = HTML5MetaTag | RDFaMetaTag | HTTPEquivMetaTag; export type ImagePrevSize = "none" | "standard" | "large"; export type AggregateRating = { ratingValue: string; reviewCount?: string; ratingCount?: string; bestRating?: string; }; export type GamePlayMode = "CoOp" | "MultiPlayer" | "SinglePlayer"; export type Review = { author: string; datePublished?: string; reviewBody?: string; name?: string; publisher?: Publisher; reviewRating: ReviewRating; }; export type ReviewRating = { bestRating?: string; ratingValue: string; worstRating?: string; }; export type Author = { type: string; name: string; }; export type ArticleAuthor = { name: string; url: string; }; export type Publisher = { type: string; name: string; }; export type ReviewedBy = { type?: string; name: string; }; export type ApplicationCategory = | "Game" | "SocialNetworking" | "Travel" | "Shopping" | "Sports" | "Lifestyle" | "Business" | "Design" | "Developer" | "Driver" | "Educational" | "Health" | "Finance" | "Security" | "Browser" | "Communication" | "DesktopEnhancement" | "Entertainment" | "Multimedia" | "Home" | "Utilities" | "Reference"; export type OrganizationCategory = | "Airline" | "Consortium" | "Corporation" | "EducationalOrganization" | "FundingScheme" | "GovernmentOrganization" | "LibrarySystem" | "LocalBusiness" | "MedicalOrganization" | "NGO" | "NewsMediaOrganization" | "PerformingGroup" | "Project" | "ResearchOrganization" | "SportsOrganization" | "WorkersUnion" | "Organization"; export interface AdditionalRobotsProps { nosnippet?: boolean; maxSnippet?: number; maxImagePreview?: ImagePrevSize; maxVideoPreview?: number; noarchive?: boolean; unavailableAfter?: string; noimageindex?: boolean; notranslate?: boolean; } export interface AstroSeoProps { title?: string; titleTemplate?: string; noindex?: boolean; nofollow?: boolean; robotsProps?: AdditionalRobotsProps; description?: string; canonical?: string; mobileAlternate?: MobileAlternate; languageAlternates?: ReadonlyArray<LanguageAlternate>; openGraph?: OpenGraph; facebook?: { appId: string }; twitter?: Twitter; additionalMetaTags?: ReadonlyArray<MetaTag>; additionalLinkTags?: ReadonlyArray<LinkTag>; }