UNPKG

@llml-browser/types

Version:

TypeScript types and schemas for the @llml-browser API

216 lines (212 loc) 9.08 kB
import { z } from 'zod'; /** * Schema for configuring metadata extraction options. * Controls which metadata fields should be extracted from a webpage. */ declare const MetadataOptionsSchema: z.ZodObject<{ title: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>; description: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>; language: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>; canonical: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>; robots: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>; author: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>; keywords: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>; favicon: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>; openGraph: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>; twitter: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>; isIframeAllowed: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>; }, "strip", z.ZodTypeAny, { title: boolean; description: boolean; language: boolean; canonical: boolean; robots: boolean; author: boolean; keywords: boolean; favicon: boolean; openGraph: boolean; twitter: boolean; isIframeAllowed: boolean; }, { title?: boolean | undefined; description?: boolean | undefined; language?: boolean | undefined; canonical?: boolean | undefined; robots?: boolean | undefined; author?: boolean | undefined; keywords?: boolean | undefined; favicon?: boolean | undefined; openGraph?: boolean | undefined; twitter?: boolean | undefined; isIframeAllowed?: boolean | undefined; }>; /** * Schema for page metadata extracted from a webpage. * Defines the structure and validation rules for all possible metadata fields. */ declare const PageMetadataSchema: z.ZodObject<{ title: z.ZodOptional<z.ZodString>; description: z.ZodOptional<z.ZodString>; language: z.ZodOptional<z.ZodString>; canonical: z.ZodOptional<z.ZodString>; robots: z.ZodOptional<z.ZodString>; author: z.ZodOptional<z.ZodString>; keywords: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; lastModified: z.ZodNullable<z.ZodOptional<z.ZodString>>; favicon: z.ZodOptional<z.ZodString>; ogTitle: z.ZodOptional<z.ZodString>; ogDescription: z.ZodOptional<z.ZodString>; ogImage: z.ZodOptional<z.ZodString>; ogUrl: z.ZodOptional<z.ZodString>; ogType: z.ZodOptional<z.ZodString>; ogSiteName: z.ZodOptional<z.ZodString>; twitterCard: z.ZodOptional<z.ZodString>; twitterSite: z.ZodOptional<z.ZodString>; twitterCreator: z.ZodOptional<z.ZodString>; twitterTitle: z.ZodOptional<z.ZodString>; twitterDescription: z.ZodOptional<z.ZodString>; twitterImage: z.ZodOptional<z.ZodString>; isIframeAllowed: z.ZodOptional<z.ZodBoolean>; }, "strip", z.ZodTypeAny, { title?: string | undefined; description?: string | undefined; language?: string | undefined; canonical?: string | undefined; robots?: string | undefined; author?: string | undefined; keywords?: string[] | undefined; favicon?: string | undefined; isIframeAllowed?: boolean | undefined; lastModified?: string | null | undefined; ogTitle?: string | undefined; ogDescription?: string | undefined; ogImage?: string | undefined; ogUrl?: string | undefined; ogType?: string | undefined; ogSiteName?: string | undefined; twitterCard?: string | undefined; twitterSite?: string | undefined; twitterCreator?: string | undefined; twitterTitle?: string | undefined; twitterDescription?: string | undefined; twitterImage?: string | undefined; }, { title?: string | undefined; description?: string | undefined; language?: string | undefined; canonical?: string | undefined; robots?: string | undefined; author?: string | undefined; keywords?: string[] | undefined; favicon?: string | undefined; isIframeAllowed?: boolean | undefined; lastModified?: string | null | undefined; ogTitle?: string | undefined; ogDescription?: string | undefined; ogImage?: string | undefined; ogUrl?: string | undefined; ogType?: string | undefined; ogSiteName?: string | undefined; twitterCard?: string | undefined; twitterSite?: string | undefined; twitterCreator?: string | undefined; twitterTitle?: string | undefined; twitterDescription?: string | undefined; twitterImage?: string | undefined; }>; /** * Options for controlling which metadata fields should be extracted. * Each property is a boolean flag that enables or disables extraction of specific metadata. * All fields default to true if not specified. * * @property title - Extract page title from title tag or meta title * @property description - Extract meta description content * @property language - Extract page language from html lang attribute * @property canonical - Extract canonical URL from link rel="canonical" * @property robots - Extract robots directives from meta robots * @property author - Extract author information from meta author * @property keywords - Extract meta keywords and convert to array * @property favicon - Extract favicon URL from link rel="icon" or similar * @property openGraph - Extract Open Graph metadata (og:* properties) * @property twitter - Extract Twitter Card metadata (twitter:* properties) * * @example * ```typescript * const options: MetadataOptions = { * title: true, * description: true, * language: true, * canonical: true, * robots: false, * author: true, * keywords: true, * favicon: true, * openGraph: true, * twitter: false * }; * ``` */ type MetadataOptions = z.infer<typeof MetadataOptionsSchema>; /** * Represents all metadata that can be extracted from a webpage. * All fields are optional as they may not be present in every webpage. * The structure combines standard HTML metadata with social media metadata. * * @property title - Page title from title tag or meta title * @property description - Page description from meta description * @property language - Page language from html lang attribute * @property canonical - Canonical URL from link rel="canonical" * @property robots - Robots directives from meta robots * @property author - Author information from meta author * @property keywords - Keywords array from meta keywords * @property lastModified - Last modified date from HTTP headers * @property favicon - Favicon URL from link rel="icon" or similar * @property ogTitle - OpenGraph title from meta property="og:title" * @property ogDescription - OpenGraph description from meta property="og:description" * @property ogImage - OpenGraph image URL from meta property="og:image" * @property ogUrl - OpenGraph URL from meta property="og:url" * @property ogType - OpenGraph type from meta property="og:type" * @property ogSiteName - OpenGraph site name from meta property="og:site_name" * @property twitterCard - Twitter card type from meta name="twitter:card" * @property twitterSite - Twitter site username from meta name="twitter:site" * @property twitterCreator - Twitter creator username from meta name="twitter:creator" * @property twitterTitle - Twitter title from meta name="twitter:title" * @property twitterDescription - Twitter description from meta name="twitter:description" * @property twitterImage - Twitter image URL from meta name="twitter:image" * * @example * ```typescript * const metadata: PageMetadata = { * title: "Example Website - Home Page", * description: "This is an example website demonstrating metadata extraction.", * language: "en", * canonical: "https://example.com/", * robots: "index, follow", * author: "John Doe", * keywords: ["example", "metadata", "extraction"], * lastModified: "2023-04-15T14:32:21Z", * favicon: "https://example.com/favicon.ico", * ogTitle: "Example Website", * ogDescription: "Learn about our services", * ogImage: "https://example.com/images/og-image.jpg", * ogUrl: "https://example.com/", * ogType: "website", * ogSiteName: "Example Website", * twitterCard: "summary_large_image", * twitterSite: "@examplesite", * twitterCreator: "@johndoe", * twitterTitle: "Example Website - Official Site", * twitterDescription: "The best example website on the internet", * twitterImage: "https://example.com/images/twitter-card.jpg" * }; * ``` */ type PageMetadata = z.infer<typeof PageMetadataSchema>; type MetadataTypes_MetadataOptions = MetadataOptions; declare const MetadataTypes_MetadataOptionsSchema: typeof MetadataOptionsSchema; type MetadataTypes_PageMetadata = PageMetadata; declare const MetadataTypes_PageMetadataSchema: typeof PageMetadataSchema; declare namespace MetadataTypes { export { type MetadataTypes_MetadataOptions as MetadataOptions, MetadataTypes_MetadataOptionsSchema as MetadataOptionsSchema, type MetadataTypes_PageMetadata as PageMetadata, MetadataTypes_PageMetadataSchema as PageMetadataSchema }; } export { MetadataTypes as M, PageMetadataSchema as P, MetadataOptionsSchema as a, type MetadataOptions as b, type PageMetadata as c };