gatsby-source-prismic
Version:
Gatsby source plugin for building websites using Prismic as a data source
28 lines (24 loc) • 902 B
text/typescript
import * as RTE from "fp-ts/ReaderTaskEither";
import { constVoid, pipe } from "fp-ts/function";
import { Dependencies, Mutable } from "../types";
import { createGloballyUniqueNodes } from "./createGloballyUniqueNodes";
import { normalizeDocuments } from "./normalizeDocuments";
import { queryDocumentsByIds } from "./queryDocumentsByIds";
/**
* Queries documents in a list of Prismic document IDs from the environment's
* Prismic repository and creates nodes for each document.
*
* @param documentIds - List of Prismic document IDs to query and with which to
* create nodes.
*/
export const sourceNodesForDocumentIds = (
documentIds: string[],
): RTE.ReaderTaskEither<Dependencies, Error, void> =>
pipe(
queryDocumentsByIds(documentIds),
RTE.chainW(normalizeDocuments),
RTE.chainW((docs) =>
createGloballyUniqueNodes(docs as Mutable<typeof docs>),
),
RTE.map(constVoid),
);