UNPKG

@udus/notion-renderer

Version:
58 lines (57 loc) 1.99 kB
import { isFullBlock, isFullPage, isFullDatabase, Client, } from "@notionhq/client"; import { retrieveBlock } from "./blocks/retrieve.js"; import { retrieveDatabase } from "./database/retrieve.js"; import { retrievePage } from "./pages/retrieve.js"; export const fetchParent = async (parent, client) => { if (parent.type === "block_id") { const parentBlock = await retrieveBlock(client, { block_id: parent.block_id, }); return parentBlock; } else if (parent.type === "page_id") { const parentPage = await retrievePage(client, { page_id: parent.page_id }); return parentPage; } else if (parent.type === "database_id") { const parentDatabase = await retrieveDatabase(client, { database_id: parent.database_id, }); return parentDatabase; } return; }; export const fetchParentBlockObject = async (parent, client) => { if (parent.type === "block_id") { const { ok, data } = await retrieveBlock(client, { block_id: parent.block_id, }); if (ok && isFullBlock(data)) { return await data; } } else if (parent.type === "page_id") { const { ok, data } = await retrievePage(client, { page_id: parent.page_id, }); if (ok && isFullPage(data)) { return data; } } else if (parent.type === "database_id") { const { ok, data } = await retrieveDatabase(client, { database_id: parent.database_id, }); if (ok && isFullDatabase(data)) { return data; } } return; }; export const fetchAllParents = async (parent, parentList = [], client) => { const parentObjectResponse = await fetchParentBlockObject(parent, client); if (!parentObjectResponse) { return parentList; } return await fetchAllParents(parentObjectResponse.parent, [parentObjectResponse, ...parentList], client); };