@llml-browser/types
Version:
TypeScript types and schemas for the @llml-browser API
216 lines (212 loc) • 9.08 kB
text/typescript
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, {
robots: boolean;
title: boolean;
description: boolean;
language: boolean;
canonical: boolean;
author: boolean;
keywords: boolean;
favicon: boolean;
openGraph: boolean;
twitter: boolean;
isIframeAllowed: boolean;
}, {
robots?: boolean | undefined;
title?: boolean | undefined;
description?: boolean | undefined;
language?: boolean | undefined;
canonical?: 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, {
robots?: string | undefined;
title?: string | undefined;
description?: string | undefined;
language?: string | undefined;
canonical?: 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;
}, {
robots?: string | undefined;
title?: string | undefined;
description?: string | undefined;
language?: string | undefined;
canonical?: 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 };