UNPKG

@sensinum/astro-strapi-loader

Version:
43 lines (42 loc) 1.63 kB
import qs from "qs"; import { fetchContent } from "./strapi"; export function strapiLoader(contentType, options, query = {}) { return { name: "strapi-loader", load: async (context) => { const { store, logger, parseData, generateDigest } = context; logger.info(`[${contentType}] Loading data from Strapi...`); const { url, token } = options; const response = await fetchContent({ url, token, contentType, queryParams: query ? qs.stringify(query) : undefined, }); store.clear(); if (response.data.length === 0) { logger.info(`[${contentType}] No data found in Strapi`); return; } if (Array.isArray(response.data)) { await Promise.all(response.data.map(async (item) => { const data = await parseData({ id: item.documentId, data: item, }); const digest = generateDigest(data); store.set({ id: data.documentId, data, digest }); })); } else { const data = await parseData({ id: response.data.documentId, data: response.data, }); const digest = generateDigest(data); store.set({ id: data.documentId, data, digest }); } logger.info(`[${contentType}] Loading data from Strapi... DONE`); }, }; }