UNPKG

gatsby-source-prismic

Version:

Gatsby source plugin for building websites using Prismic as a data source

51 lines (43 loc) 1.94 kB
import * as prismicT from "@prismicio/types"; import * as prismicH from "@prismicio/helpers"; import * as imgixGatsby from "@imgix/gatsby"; import * as nodeHelpers from "gatsby-node-helpers"; import { SerializedTypePath } from "../types"; import * as normalizers from "./normalizers"; export interface NormalizerDependencies { getNode(id: string): normalizers.NormalizedDocumentValue | undefined; getTypePath(path: string[]): SerializedTypePath | undefined; nodeHelpers: nodeHelpers.NodeHelpers; transformFieldName: <K extends string>(key: K) => string; linkResolver?: prismicH.LinkResolverFunction; htmlSerializer?: prismicH.HTMLMapSerializer | prismicH.HTMLFunctionSerializer; imageImgixParams: imgixGatsby.ImgixUrlParams; imagePlaceholderImgixParams: imgixGatsby.ImgixUrlParams; } export interface NormalizeConfig<Value> { value: Value; path: string[]; } export type StructuredTextField = prismicT.RichTextField | prismicT.TitleField; export type NormalizedValue<Value> = Value extends prismicT.PrismicDocument ? normalizers.NormalizedDocumentValue<Value> : Value extends prismicT.PrismicDocument["data"] ? normalizers.NormalizedDocumentDataValue<Value> : Value extends prismicT.PrismicDocument["alternate_languages"] ? normalizers.NormalizedAlternateLanguagesValue : Value extends StructuredTextField ? normalizers.NormalizedStructuredTextValue<Value> : Value extends prismicT.ImageField ? normalizers.NormalizedImageValue<Value> : Value extends prismicT.LinkField ? normalizers.NormalizedLinkValue<Value> : Value extends prismicT.GroupField ? normalizers.NormalizedGroupValue<Value> : Value extends prismicT.SliceZone ? normalizers.NormalizedSlicesValue<Value> : Value extends prismicT.Slice | prismicT.SharedSlice ? normalizers.NormalizedSliceValue<Value> : Value; export type NormalizedValueMap<ValueMap extends Record<string, unknown>> = { [P in keyof ValueMap]: NormalizedValue<ValueMap[P]>; };