UNPKG

@prismicio/client

Version:

The official JavaScript + TypeScript client library for Prismic

169 lines (168 loc) 4.59 kB
import type { EmptyObjectField, FieldState } from "./types"; /** * oEmbed 1.0 possible types. * * @see oEmbed specification: {@link https://oembed.com} */ export declare const OEmbedType: { readonly Photo: "photo"; readonly Video: "video"; readonly Link: "link"; readonly Rich: "rich"; }; /** * oEmbed response base fields. Those are every mandatory fields an oEmbed * response must feature. * * @see oEmbed specification: {@link https://oembed.com} */ type OEmbedBase<TType extends (typeof OEmbedType)[keyof typeof OEmbedType]> = { /** * oEmbed resource type. */ type: TType; /** * oEmbed version number, this must be "1.0". */ version: string; }; /** * oEmbed response extra fields. Those are every non-mandatory and unknown * fields an oEmbed response can feature. * * @see oEmbed specification: {@link https://oembed.com} */ export type OEmbedExtra = { /** * oEmbed text title, describing the resource. */ title?: string | null; /** * oEmbed resource author/owner name. */ author_name?: string | null; /** * oEmbed resource author/owner URL. */ author_url?: string | null; /** * oEmbed resource provider name. */ provider_name?: string | null; /** * oEmbed resource provider URL. */ provider_url?: string | null; /** * oEmbed suggested cache lifetime for the resource, in seconds. */ cache_age?: number | null; /** * oEmbed resource thumbnail URL. */ thumbnail_url?: string | null; /** * oEmbed resource thumbnail width. */ thumbnail_width?: number | null; /** * oEmbed resource thumbnail height. */ thumbnail_height?: number | null; /** * Providers may optionally include any parameters not specified in this * document (so long as they use the same key-value format) and consumers may * choose to ignore these. Consumers must ignore parameters they do not * understand. * * @see oEmbed specification: {@link https://oembed.com} */ [key: string]: unknown | null; }; /** * oEmbed photo type. Those are every mandatory fields an oEmbed photo response * must feature. * * @see oEmbed specification: {@link https://oembed.com} */ export type PhotoOEmbed = OEmbedBase<typeof OEmbedType.Photo> & { /** * oEmbed source URL of the image. */ url: string; /** * oEmbed width in pixels of the image. */ width: number; /** * oEmbed height in pixels of the image. */ height: number; }; /** * oEmbed video type. Those are every mandatory fields an oEmbed video response * must feature. * * @see oEmbed specification: {@link https://oembed.com} */ export type VideoOEmbed = OEmbedBase<typeof OEmbedType.Video> & { /** * oEmbed HTML required to embed a video player. */ html: string; /** * oEmbed width in pixels required to display the HTML. */ width: number; /** * oEmbed height in pixels required to display the HTML. */ height: number; }; /** * oEmbed link type. Those are every mandatory fields an oEmbed link response * must feature. * * @see oEmbed specification: {@link https://oembed.com} */ export type LinkOEmbed = OEmbedBase<typeof OEmbedType.Link>; /** * oEmbed rich type. Those are every mandatory fields an oEmbed rich response * must feature. * * @see oEmbed specification: {@link https://oembed.com} */ export type RichOEmbed = OEmbedBase<typeof OEmbedType.Rich> & { /** * oEmbed HTML required to display the resource. */ html: string; /** * oEmbed width in pixels required to display the HTML. */ width: number; /** * oEmbed height in pixels required to display the HTML. */ height: number; }; /** * Any of the possible types of oEmbed response. Those contains only mandatory * fields their respective oEmbed response type must feature. * * @see oEmbed specification: {@link https://oembed.com} */ export type AnyOEmbed = PhotoOEmbed | VideoOEmbed | LinkOEmbed | RichOEmbed; /** * An embed field. * * @typeParam Data - Data provided by the URL's oEmbed provider. * @typeParam State - State of the field which determines its shape. * * @see More details: {@link https://prismic.io/docs/embed} */ export type EmbedField<Data extends AnyOEmbed = AnyOEmbed & OEmbedExtra, State extends FieldState = FieldState> = State extends "empty" ? EmptyObjectField : Data & { embed_url: string; html: string | null; }; export {};