gatsby-source-notion-churnotion 1.0.50 → 1.0.51

Sign up to get free protection for your applications and to get access to all the features.
@@ -9,6 +9,7 @@ const constants_1 = require("../constants");
9
9
  const fetchData_1 = require("../util/fetchData");
10
10
  const imageProcessor_1 = require("../util/imageProcessor");
11
11
  const slugify_1 = require("../util/slugify");
12
+ const tableOfContent_1 = require("../util/tableOfContent");
12
13
  const getPages = async ({ databaseId, reporter, getCache, actions, createNode, createNodeId, createParentChildLink, getNode, }) => {
13
14
  /**
14
15
  * 데이터베이스 내에 페이지들을 읽어서 재귀적으로 추가하는 서브 메서드드
@@ -26,7 +27,6 @@ const getPages = async ({ databaseId, reporter, getCache, actions, createNode, c
26
27
  reporter.info(`[SUCCESS] total pages > ${result.results.length}`);
27
28
  }
28
29
  for (const page of result.results) {
29
- reporter.info(`[CHECK] page: ${page.id}`);
30
30
  const pageUrl = `blocks/${page.id}/children?page_size=100`;
31
31
  // 페이지 데이터
32
32
  const pageData = await (0, fetchData_1.fetchGetWithRetry)(pageUrl);
@@ -141,6 +141,7 @@ const getPages = async ({ databaseId, reporter, getCache, actions, createNode, c
141
141
  }
142
142
  const bookId = page.properties?.book?.relation?.[0]?.id || null;
143
143
  const imageNode = await (0, imageProcessor_1.processBlocks)(pageData.results, actions, getCache, createNodeId, reporter);
144
+ const tableOfContents = await (0, tableOfContent_1.processTableOfContents)(pageData.results, actions, getCache, createNodeId, reporter);
144
145
  const postNode = {
145
146
  id: nodeId,
146
147
  category: parentCategoryId,
@@ -155,6 +156,7 @@ const getPages = async ({ databaseId, reporter, getCache, actions, createNode, c
155
156
  slug: slug,
156
157
  category_list: categoryPath,
157
158
  children: [],
159
+ tableOfContents,
158
160
  internal: {
159
161
  type: constants_1.NODE_TYPE.Post,
160
162
  contentDigest: crypto_1.default
@@ -0,0 +1,7 @@
1
+ import { Actions, GatsbyCache, Reporter } from "gatsby";
2
+ import { BaseContentBlock } from "notion-types";
3
+ export declare const processTableOfContents: (blocks: BaseContentBlock[], actions: Actions, getCache: (this: void, id: string) => GatsbyCache, createNodeId: (this: void, input: string) => string, reporter: Reporter) => Promise<{
4
+ type: string;
5
+ hash: string;
6
+ title: string;
7
+ }[]>;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.processTableOfContents = void 0;
4
+ const isHeading = (block) => {
5
+ return ["heading_1", "heading_2", "heading_3"].includes(block.type);
6
+ };
7
+ const processTableOfContents = async (blocks, actions, getCache, createNodeId, reporter) => {
8
+ const tableOfContents = [];
9
+ for (const block of blocks) {
10
+ if (isHeading(block) &&
11
+ (block.type === "heading_1" ||
12
+ block.type === "heading_2" ||
13
+ block.type === "heading_3")) {
14
+ const plainText = block[block.type]?.rich_text[0]?.plain_text || "";
15
+ const hash = `#${plainText.replace(/\s+/g, "-").toLowerCase()}`;
16
+ block.hash = hash;
17
+ tableOfContents.push({
18
+ type: block.type,
19
+ hash,
20
+ title: plainText,
21
+ });
22
+ }
23
+ }
24
+ return tableOfContents;
25
+ };
26
+ exports.processTableOfContents = processTableOfContents;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "gatsby-source-notion-churnotion",
3
3
  "description": "Gatsby plugin that can connect with One Notion Database RECURSIVELY using official API",
4
- "version": "1.0.50",
4
+ "version": "1.0.51",
5
5
  "skipLibCheck": true,
6
6
  "license": "0BSD",
7
7
  "main": "./dist/gatsby-node.js",