gatsby-source-prismic
Version:
Gatsby source plugin for building websites using Prismic as a data source
32 lines (31 loc) • 1.92 kB
TypeScript
import * as prismic from "@prismicio/client";
import type { NodePluginArgs } from "gatsby";
import type { FieldModelValueType, PrismicDocumentForModel } from "../types";
import type { PluginOptions } from "../types";
type NormalizeDocumentFieldArgs<Model extends prismic.CustomTypeModelField = prismic.CustomTypeModelField> = {
model: Model;
value: FieldModelValueType<Model>;
path: string[];
gatsbyNodeArgs: NodePluginArgs;
pluginOptions: PluginOptions;
sharedSliceModels: prismic.SharedSliceModel[];
};
type NormalizeDocumentFieldReturnType<Model extends prismic.CustomTypeModelField = prismic.CustomTypeModelField> = Model extends prismic.CustomTypeModelGroupField ? prismic.GroupField<{
[P in keyof NonNullable<NonNullable<Model["config"]>["fields"]>]: NormalizeDocumentFieldReturnType<NonNullable<NonNullable<Model["config"]>["fields"]>[P]>;
}> : Model extends prismic.CustomTypeModelLinkField ? FieldModelValueType<Model> & {
localFile: string | null;
} : Model extends prismic.CustomTypeModelEmbedField ? string | null : Model extends prismic.CustomTypeModelImageField<infer ThumbnailNames> ? FieldModelValueType<Model> & {
localFile: string | null;
} & {
[ThumbnailName in keyof ThumbnailNames]: prismic.ImageFieldImage & {
localFile: string | null;
};
} : Model extends prismic.CustomTypeModelIntegrationField ? string | null : FieldModelValueType<Model>;
type NormalizeDocumentArgs<Model extends prismic.CustomTypeModel> = Omit<NormalizeDocumentFieldArgs, "model" | "value" | "path"> & {
document: PrismicDocumentForModel<Model>;
model: Model;
};
export declare const normalizeDocument: <Model extends prismic.CustomTypeModel<string, prismic.CustomTypeModelDefinition<string>>>(args: NormalizeDocumentArgs<Model>) => Promise<Omit<PrismicDocumentForModel<Model>, "data"> & {
data: Record<string, NormalizeDocumentFieldReturnType>;
}>;
export {};