Payload
Leia uma coleção do Payload pela API REST com a fonte payload(), convertendo corpos de rich text do Lexical para Markdown sem precisar instalar nada.
O adaptador nativo payload() lê uma coleção pela API REST do Payload (/api/<collection>) e converte o corpo Lexical de cada documento para Markdown: parágrafos, títulos, listas com marcadores, numeradas e de verificação, citações, links, uploads e linhas horizontais. Um corpo armazenado em um campo de texto passa direto como Markdown. A exceção são links que não sejam endereços web, de e-mail, de telefone ou relativos, que mantêm só o rótulo. Não precisa instalar nada.
import { defineConfig } from "blume";
import { filesystem, payload } from "blume/sources";
export default defineConfig({
content: {
sources: [
filesystem({ root: "docs" }),
payload({
prefix: "handbook",
url: "https://cms.example.com",
collection: "docs",
// Field paths default to title / description / slug / content / updatedAt
fields: { body: "richText" },
// Extra query parameters: where[...], sort
params: { sort: "title" },
}),
],
},
});
A chave de API vem da variável de ambiente PAYLOAD_API_KEY e é enviada como users API-Key <key>. Defina authCollection quando a chave pertencer a outra coleção com autenticação habilitada. Só documentos publicados são importados: --preview busca também os rascunhos e os inclui marcados com draft: true. Os documentos são buscados com depth: 1 para que os uploads tragam suas URLs, e um caminho de upload relativo (/media/x.png) é resolvido em relação a url. Quando você cria payloadSource diretamente e o passa para custom(), um nó block ou inlineBlock é mapeado para um componente do Blume pela opção serializers do engine, usando o blockType como chave. Definir serializers faz a fonte gravar suas páginas como MDX para que os componentes retornados sejam renderizados. Um corpo armazenado em um campo de texto Markdown continua sendo Markdown.