gatsby-source-prismic
Version:
Gatsby source plugin for building websites using Prismic as a data source
26 lines (22 loc) • 982 B
text/typescript
import * as gatsby from "gatsby";
import * as RTE from "fp-ts/ReaderTaskEither";
import { pipe } from "fp-ts/function";
import { Dependencies } from "../types";
import { buildNamedInferredNodeType } from "./buildNamedInferredNodeType";
/**
* Builds a GraphQL object type using Gatsby's Node interface with field
* inference enabled using the environment's `buildObjectType` function. The
* type name is generated using the environment's node helpers and the `path` parameter.
*
* @param path - List of field names from the root object to the field to which
* the inferred node type will be assigned. Determines the type's name.
*
* @returns Return type of the envionrment's `buildObjectType` function.
*/
export const buildInferredNodeType = (
path: string[],
): RTE.ReaderTaskEither<Dependencies, never, gatsby.GatsbyGraphQLObjectType> =>
pipe(
RTE.asks((deps: Dependencies) => deps.nodeHelpers.createTypeName(path)),
RTE.chain(buildNamedInferredNodeType),
);