UNPKG

gatsby-source-prismic

Version:

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

37 lines (34 loc) 1.01 kB
import * as gatsby from "gatsby"; import * as RTE from "fp-ts/ReaderTaskEither"; import * as A from "fp-ts/Array"; import { pipe } from "fp-ts/function"; import { Dependencies } from "../types"; import { getTypeName } from "./getTypeName"; import { buildUnionType } from "./buildUnionType"; import { createType } from "./createType"; /** * Registers the `AllDocumentTypes` GraphQL union type containing all provided * document types. * * @param types - List of document types to include in the created union type. * * @returns The registered `AllDocumentTypes` type. */ export const createAllDocumentTypesType = ( types: gatsby.GatsbyGraphQLObjectType[], ): RTE.ReaderTaskEither<Dependencies, never, gatsby.GatsbyGraphQLUnionType> => pipe( RTE.ask<Dependencies>(), RTE.chain((deps) => pipe( types, A.map(getTypeName), (types) => buildUnionType({ name: deps.nodeHelpers.createTypeName("AllDocumentTypes"), types, }), RTE.chainFirst(createType), ), ), );