@udus/notion-renderer
Version:

37 lines (36 loc) • 1.28 kB
JavaScript
import { Client, isFullPage } from "@notionhq/client";
import { retrievePage } from "../../pages/retrieve.js";
export const convertResponseToRelationPropertyItem = (property, client) => {
return {
...property,
relation: Array.isArray(property.relation)
? property.relation
: [property.relation],
};
};
export const convertListResponseToRelationPropertyItem = async (list, client) => {
const relationPropertyItemObject = {
...list.property_item,
relation: await list.results
.filter(isRelationTypeObject)
.reduce(async (prev, cur) => {
const { ok, data: page } = await retrievePage(client, {
page_id: cur.relation.id,
});
// NOTE: wait 1sec to avoid 429 error
await new Promise((resolve) => setTimeout(resolve, 1000));
if (!ok || !isFullPage(page)) {
return prev;
}
return [
...(await prev),
{
...cur.relation,
page,
},
];
}, Promise.resolve([])),
};
return relationPropertyItemObject;
};
export const isRelationTypeObject = (obj) => obj.type === "relation";