noblog 0.0.11 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,111 +0,0 @@
1
- import fetch from "node-fetch";
2
- import { markdownTable } from "markdown-table";
3
- export const inlineCode = (text) => {
4
- return `\`${text}\``;
5
- };
6
- export const inlineEquation = (text) => {
7
- return `$${text}$`;
8
- };
9
- export const bold = (text) => {
10
- return `**${text}**`;
11
- };
12
- export const italic = (text) => {
13
- return `_${text}_`;
14
- };
15
- export const strikethrough = (text) => {
16
- return `~~${text}~~`;
17
- };
18
- export const underline = (text) => {
19
- return `<u>${text}</u>`;
20
- };
21
- export const link = (text, href) => {
22
- return `[${text}](${href})`;
23
- };
24
- export const codeBlock = (text, language) => {
25
- if (language === "plain text")
26
- language = "text";
27
- return `\`\`\`${language}
28
- ${text}
29
- \`\`\``;
30
- };
31
- export const equation = (text) => {
32
- return `$$
33
- ${text}
34
- $$`;
35
- };
36
- export const heading1 = (text) => {
37
- return `# ${text}`;
38
- };
39
- export const heading2 = (text) => {
40
- return `## ${text}`;
41
- };
42
- export const heading3 = (text) => {
43
- return `### ${text}`;
44
- };
45
- export const quote = (text) => {
46
- // the replace is done to handle multiple lines
47
- return `> ${text.replace(/\n/g, " \n> ")}`;
48
- };
49
- export const callout = (text, icon) => {
50
- let emoji;
51
- if (icon?.type === "emoji") {
52
- emoji = icon.emoji;
53
- }
54
- // the replace is done to handle multiple lines
55
- return `> ${emoji ? emoji + " " : ""}${text.replace(/\n/g, " \n> ")}`;
56
- };
57
- export const bullet = (text, count) => {
58
- let renderText = text.trim();
59
- return count ? `${count}. ${renderText}` : `- ${renderText}`;
60
- };
61
- export const todo = (text, checked) => {
62
- return checked ? `- [x] ${text}` : `- [ ] ${text}`;
63
- };
64
- export const image = async (alt, href, convertToBase64 = false) => {
65
- // In case the user does not want to convert the images to Base64
66
- // or the image is already base64
67
- if (!convertToBase64 || href.startsWith("data:")) {
68
- if (href.startsWith("data:")) {
69
- // Extract base64 data, i.e. the string after 'data:mime/type;base64,'
70
- const base64 = href.split(",").pop();
71
- // This overrides incorrect data: string format to png
72
- // so that browsers can correctly render the data
73
- return `![${alt}](data:image/png;base64,${base64})`;
74
- }
75
- return `![${alt}](${href})`;
76
- }
77
- else {
78
- // Otherwise, download the image and convert it to base64
79
- const res = await fetch(href);
80
- const buf = await res.arrayBuffer();
81
- const base64 = Buffer.from(buf).toString("base64");
82
- return `![${alt}](data:image/png;base64,${base64})`;
83
- }
84
- };
85
- export const addTabSpace = (text, n = 0) => {
86
- const tab = " ";
87
- for (let i = 0; i < n; i++) {
88
- if (text.includes("\n")) {
89
- const multiLineText = text.split(/(?:^|\n)/).join(`\n${tab}`);
90
- text = tab + multiLineText;
91
- }
92
- else
93
- text = tab + text;
94
- }
95
- return text;
96
- };
97
- export const divider = () => {
98
- return "---";
99
- };
100
- export const toggle = (summary, children) => {
101
- if (!summary)
102
- return children || "";
103
- return `<details>
104
- <summary>${summary}</summary>
105
- ${children || ""}
106
- </details>\n\n`;
107
- };
108
- export const table = (cells) => {
109
- return markdownTable(cells);
110
- };
111
- //# sourceMappingURL=format.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/lib/nomd/format.ts"],"names":[],"mappings":"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"}
@@ -1,489 +0,0 @@
1
- import * as path from "path";
2
- import * as fs from "fs/promises";
3
- import * as fmt from "./format.js";
4
- import { GetPageMeta, GetBlockChildren, client as notion_client, } from "../notion/client.js";
5
- export class Noblog {
6
- Posts = [];
7
- CurrPage = "";
8
- SavePath = "./src/pages/posts/";
9
- ChildPath = "nob_children/";
10
- MdCollection = {};
11
- CustomTransformers = {};
12
- constructor(posts, save_path, child_path) {
13
- this.Posts = posts;
14
- if (child_path != undefined) {
15
- this.ChildPath = child_path;
16
- }
17
- if (save_path != undefined) {
18
- this.SavePath = save_path;
19
- }
20
- this.CustomTransformers["child_page"] = async (block) => {
21
- const page = block;
22
- if (!page?.id) {
23
- return false;
24
- }
25
- let sub_path;
26
- // if (curr_page.id in this.Post) and (page.id in this.Post) ||
27
- // (curr_page.id not in this.Post) and (page.id not in this.Post)
28
- // * path should be "../pageid"
29
- // if (curr_page.id in this.Post) and (page.id not in this.Post)
30
- // * path should be "../save_path/pageid"
31
- // if (curr_page.id not in this.Post) and (page.id in this.Post)
32
- // * path should be "../../pageid"
33
- const parent_surface = this.Posts.filter((post) => post.id === this.CurrPage).length > 0;
34
- const child_surface = this.Posts.filter((post) => post.id === page.id).length > 0;
35
- if (parent_surface === child_surface) {
36
- sub_path = "";
37
- }
38
- else if (parent_surface) {
39
- sub_path = this.ChildPath;
40
- }
41
- else {
42
- sub_path = "..";
43
- }
44
- const full_path = path.join("../", sub_path, page.id);
45
- return `&[${page.child_page.title}](${full_path})`;
46
- };
47
- }
48
- async Collect(recur = true) {
49
- const save_dir = this.SavePath;
50
- const sub_dir = path.join(save_dir, this.ChildPath);
51
- for (let page of this.Posts) {
52
- await this.FromPageid(page.id, recur);
53
- }
54
- try {
55
- for (const pageid of Object.keys(this.MdCollection)) {
56
- let fpath = sub_dir;
57
- if (this.Posts.find((page) => page.id === pageid))
58
- fpath = save_dir;
59
- await this.SaveJelly(pageid + ".md", fpath, this.MdCollection[pageid]);
60
- }
61
- console.log(`success: finish dump all files to "${save_dir}"`);
62
- }
63
- catch (error) {
64
- if (error instanceof Error) {
65
- console.log(`failed: consider run verbose with v=true - ${error.message}`);
66
- }
67
- else {
68
- console.log("failed: an unknown error occurred");
69
- }
70
- }
71
- }
72
- async FromBlocks(blocks, recursive) {
73
- let jelly = { content: "", children: [] };
74
- for (const block of blocks) {
75
- const subjelly = await this.FromBlocks(block.children, recursive);
76
- if (block.type === "toggle") {
77
- jelly.content += fmt.toggle(block.parent, subjelly.content);
78
- jelly.children = [...jelly.children, ...subjelly.children];
79
- continue;
80
- }
81
- let line_wrap = "";
82
- if (block.type !== "to_do" &&
83
- block.type !== "bulleted_list_item" &&
84
- block.type !== "numbered_list_item") {
85
- line_wrap = "\n";
86
- }
87
- jelly.content +=
88
- line_wrap + `${fmt.addTabSpace(block.parent, 0)}\n` + line_wrap;
89
- if (block.type === "child_page") {
90
- jelly.children = [...jelly.children, block.blockId];
91
- if (recursive)
92
- await this.FromPageid(block.blockId, recursive);
93
- }
94
- else {
95
- jelly.content += subjelly.content;
96
- jelly.children = [...jelly.children, ...subjelly.children];
97
- }
98
- }
99
- return jelly;
100
- }
101
- async FromPageid(page_id, recursive = true) {
102
- // preserve the curr page info
103
- const prev_page = this.CurrPage;
104
- this.CurrPage = page_id;
105
- if (this.MdCollection.hasOwnProperty(page_id)) {
106
- return this.MdCollection[page_id];
107
- }
108
- const blocks = await this.PageToMarkdown(page_id);
109
- const jelly = await this.FromBlocks(blocks, recursive);
110
- const meta = await GetPageMeta(page_id);
111
- const astro_meta = await this.AssembleAstroFrontmatter(meta);
112
- jelly.content = astro_meta + jelly.content;
113
- this.MdCollection[page_id] = jelly;
114
- // restore the prev page info
115
- this.CurrPage = prev_page;
116
- return jelly;
117
- }
118
- async PageToMarkdown(id, totalPage) {
119
- if (!notion_client) {
120
- throw new Error("notion client is not provided, for more details check out https://github.com/souvikinator/notion-to-md");
121
- }
122
- const blocks = await GetBlockChildren(id, totalPage);
123
- const parsedData = await this.BlocksToMarkdown(blocks);
124
- return parsedData;
125
- }
126
- async BlocksToMarkdown(blocks, totalPage = null, mdBlocks = []) {
127
- if (!notion_client) {
128
- throw new Error("notion client is not provided, for more details check out https://github.com/souvikinator/notion-to-md");
129
- }
130
- if (!blocks)
131
- return mdBlocks;
132
- for (let i = 0; i < blocks.length; i++) {
133
- let block = blocks[i];
134
- if (
135
- // @ts-ignore
136
- block.type === "unsupported") {
137
- continue;
138
- }
139
- if ("has_children" in block && block.has_children) {
140
- const block_id = block.type == "synced_block" &&
141
- block.synced_block?.synced_from?.block_id
142
- ? block.synced_block.synced_from.block_id
143
- : block.id;
144
- // Get children of this block.
145
- let child_blocks = await GetBlockChildren(block_id, totalPage);
146
- // Recursively call BlocksToMarkdown to get children of this block.
147
- // check for custom transformer before parsing child
148
- if (!(block.type in this.CustomTransformers) &&
149
- !this.CustomTransformers[block.type]) {
150
- let l = mdBlocks.length;
151
- if (mdBlocks !== undefined) {
152
- await this.BlocksToMarkdown(child_blocks, totalPage, mdBlocks[l - 1]?.children);
153
- }
154
- }
155
- // Push this block to mdBlocks.
156
- mdBlocks.push({
157
- type: block.type,
158
- blockId: block.id,
159
- parent: await this.BlockToMarkdown(block),
160
- children: [],
161
- });
162
- continue;
163
- }
164
- let tmp = await this.BlockToMarkdown(block);
165
- mdBlocks.push({
166
- // @ts-ignore
167
- type: block.type,
168
- blockId: block.id,
169
- parent: tmp,
170
- children: [],
171
- });
172
- }
173
- return mdBlocks;
174
- }
175
- async BlockToMarkdown(block) {
176
- if (typeof block !== "object" || !("type" in block))
177
- return "";
178
- let parsedData = "";
179
- const { type } = block;
180
- if (type in this.CustomTransformers && !!this.CustomTransformers[type]) {
181
- const transformer = this.CustomTransformers[type];
182
- const customTransformerValue = transformer(block);
183
- if (typeof customTransformerValue === "string")
184
- return customTransformerValue;
185
- }
186
- switch (type) {
187
- case "image":
188
- let blockContent = block.image;
189
- let image_title = "image";
190
- const image_caption_plain = blockContent.caption
191
- .map((item) => item.plain_text)
192
- .join("");
193
- const image_type = blockContent.type;
194
- let link = "";
195
- if (image_type === "external") {
196
- link = blockContent.external.url;
197
- }
198
- if (image_type === "file") {
199
- link = blockContent.file.url;
200
- }
201
- // image caption with high priority
202
- if (image_caption_plain.trim().length > 0) {
203
- image_title = image_caption_plain;
204
- }
205
- else if (image_type === "file" || image_type === "external") {
206
- const matches = link.match(/[^\/\\&\?]+\.\w{3,4}(?=([\?&].*$|$))/);
207
- image_title = matches ? matches[0] : image_title;
208
- }
209
- return await fmt.image(image_title, link, false);
210
- case "divider":
211
- return fmt.divider();
212
- case "equation":
213
- return fmt.equation(block.equation.expression);
214
- case "video":
215
- case "file":
216
- case "pdf":
217
- {
218
- let blockContent;
219
- let title = type;
220
- if (type === "video")
221
- blockContent = block.video;
222
- if (type === "file")
223
- blockContent = block.file;
224
- if (type === "pdf")
225
- blockContent = block.pdf;
226
- const caption = blockContent?.caption
227
- .map((item) => item.plain_text)
228
- .join("");
229
- if (blockContent) {
230
- const file_type = blockContent.type;
231
- let link = "";
232
- if (file_type === "external")
233
- link = blockContent.external.url;
234
- if (file_type === "file")
235
- link = blockContent.file.url;
236
- if (caption && caption.trim().length > 0) {
237
- title = caption;
238
- }
239
- else if (link) {
240
- const matches = link.match(/[^\/\\&\?]+\.\w{3,4}(?=([\?&].*$|$))/);
241
- title = matches ? matches[0] : type;
242
- }
243
- return fmt.link(title, link);
244
- }
245
- }
246
- break;
247
- case "bookmark":
248
- case "embed":
249
- case "link_preview":
250
- case "link_to_page":
251
- {
252
- let blockContent;
253
- let title = type;
254
- if (type === "bookmark")
255
- blockContent = block.bookmark;
256
- if (type === "embed")
257
- blockContent = block.embed;
258
- if (type === "link_preview")
259
- blockContent = block.link_preview;
260
- if (type === "link_to_page" &&
261
- block.link_to_page.type === "page_id") {
262
- blockContent = {
263
- url: `https://www.notion.so/${block.link_to_page.page_id}`,
264
- };
265
- }
266
- if (blockContent)
267
- return fmt.link(title, blockContent.url);
268
- }
269
- break;
270
- case "child_page": {
271
- let pageTitle = block.child_page.title;
272
- return fmt.heading2(pageTitle);
273
- }
274
- case "child_database": {
275
- let pageTitle = block.child_database.title || `child_database`;
276
- return fmt.heading2(pageTitle);
277
- }
278
- case "table": {
279
- const { id, has_children } = block;
280
- let tableArr = [];
281
- if (has_children) {
282
- const tableRows = await GetBlockChildren(id, 100);
283
- let rowsPromise = tableRows?.map(async (row) => {
284
- const { type } = row;
285
- const cells = row[type]["cells"];
286
- /**
287
- * this is more like a hack since matching the type text was
288
- * difficult. So converting each cell to paragraph type to
289
- * reuse the BlockToMarkdown function
290
- */
291
- let cellStringPromise = cells.map(async (cell) => await this.BlockToMarkdown({
292
- type: "paragraph",
293
- paragraph: { rich_text: cell },
294
- }));
295
- const cellStringArr = await Promise.all(cellStringPromise);
296
- tableArr.push(cellStringArr);
297
- });
298
- await Promise.all(rowsPromise || []);
299
- }
300
- return fmt.table(tableArr);
301
- }
302
- // Rest of the types:
303
- // "paragraph" "heading_1" "heading_2" "heading_3"
304
- // "bulleted_list_item" "numbered_list_item"
305
- // "quote" "to_do" "template" "synced_block"
306
- // "child_page" "child_database" "code" "callout" "breadcrumb"
307
- // "table_of_contents" "link_to_page" "audio" "unsupported"
308
- default: {
309
- // @ts-ignore
310
- let blockContent = block[type].text || block[type].rich_text || [];
311
- let bucket = [];
312
- let code_range = [];
313
- let bold_range = [];
314
- let italic_range = [];
315
- let underline_range = [];
316
- let strikethrough_range = [];
317
- const push_or_merge = (arr, idx) => {
318
- if (arr.length == 0) {
319
- return;
320
- }
321
- // @ts-ignore
322
- if (idx === arr[arr.length - 1][1]) {
323
- // @ts-ignore
324
- arr[arr.length - 1][1] += 1;
325
- }
326
- else {
327
- arr.push([idx, idx + 1]);
328
- }
329
- };
330
- for (let i = 0; i < blockContent.length; i++) {
331
- let content = blockContent[i];
332
- if (content.type === "equation") {
333
- bucket.push(fmt.inlineEquation(content.equation.expression));
334
- continue;
335
- }
336
- let plain_text = content.plain_text;
337
- if (content["href"])
338
- plain_text = fmt.link(plain_text, content["href"]);
339
- bucket.push(plain_text);
340
- const annotations = content.annotations;
341
- if (annotations.code)
342
- push_or_merge(code_range, i);
343
- if (annotations.bold)
344
- push_or_merge(bold_range, i);
345
- if (annotations.italic)
346
- push_or_merge(italic_range, i);
347
- if (annotations.underline)
348
- push_or_merge(underline_range, i);
349
- if (annotations.strikethrough)
350
- push_or_merge(strikethrough_range, i);
351
- }
352
- let annoed_bucket = [];
353
- for (let range of code_range)
354
- annoed_bucket.push({ range: range, type: "code" });
355
- for (let range of bold_range)
356
- annoed_bucket.push({ range: range, type: "bold" });
357
- for (let range of italic_range)
358
- annoed_bucket.push({ range: range, type: "italic" });
359
- for (let range of underline_range)
360
- annoed_bucket.push({ range: range, type: "underline" });
361
- for (let range of strikethrough_range)
362
- annoed_bucket.push({ range: range, type: "strikethrough" });
363
- annoed_bucket.sort(
364
- // @ts-ignore
365
- (a, b) => a.range[1] - a.range[0] - (b.range[1] - b.range[0]));
366
- for (let annoed of annoed_bucket) {
367
- let panno = "", sanno = "";
368
- let type = annoed.type;
369
- let [from, to] = annoed.range;
370
- switch (type) {
371
- case "code":
372
- panno = sanno = "`";
373
- break;
374
- case "bold":
375
- panno = sanno = "**";
376
- break;
377
- case "italic":
378
- panno = sanno = "_";
379
- break;
380
- case "underline":
381
- panno = "<u>";
382
- sanno = "</u>";
383
- break;
384
- case "strikethrough":
385
- panno = sanno = "~~";
386
- break;
387
- }
388
- // @ts-ignore
389
- bucket[from] = annotation + bucket[from];
390
- // @ts-ignore
391
- bucket[to - 1] = bucket[to - 1] + annotation;
392
- }
393
- bucket.forEach((x) => (parsedData += x));
394
- }
395
- }
396
- switch (type) {
397
- case "code":
398
- parsedData = fmt.codeBlock(parsedData, block[type].language);
399
- break;
400
- case "heading_1":
401
- parsedData = fmt.heading1(parsedData);
402
- break;
403
- case "heading_2":
404
- parsedData = fmt.heading2(parsedData);
405
- break;
406
- case "heading_3":
407
- parsedData = fmt.heading3(parsedData);
408
- break;
409
- case "quote":
410
- parsedData = fmt.quote(parsedData);
411
- break;
412
- case "callout":
413
- const { id, has_children } = block;
414
- let callout_string = "";
415
- if (!has_children) {
416
- return fmt.callout(parsedData, block[type].icon);
417
- }
418
- const callout_children_object = await GetBlockChildren(id, 100);
419
- const callout_children = await this.BlocksToMarkdown(callout_children_object);
420
- callout_string += `${parsedData}\n`;
421
- callout_children.map((child) => {
422
- callout_string += `${child.parent}\n\n`;
423
- });
424
- parsedData = fmt.callout(callout_string.trim(), block[type].icon);
425
- break;
426
- case "bulleted_list_item":
427
- parsedData = fmt.bullet(parsedData);
428
- break;
429
- case "numbered_list_item":
430
- parsedData = fmt.bullet(parsedData, block.numbered_list_item.number);
431
- break;
432
- case "to_do":
433
- parsedData = fmt.todo(parsedData, block.to_do.checked);
434
- break;
435
- }
436
- return parsedData;
437
- }
438
- async SaveJelly(fname, dir, jelly) {
439
- if (jelly === undefined)
440
- return `failed: ${fname} has empty jelly: `;
441
- try {
442
- await fs.mkdir(dir, { recursive: true });
443
- const filePath = path.join(dir, fname);
444
- await fs.writeFile(filePath, jelly.content, "utf-8");
445
- return `success: ${fname} saved to ${filePath}`;
446
- }
447
- catch (error) {
448
- if (error instanceof Error) {
449
- return `failed: ${fname} - ${error.message}`;
450
- }
451
- else {
452
- return "failed: an unknown error occurred";
453
- }
454
- }
455
- }
456
- async AssembleAstroFrontmatter(page) {
457
- let frontmatter = "";
458
- // default layout
459
- const ischild = this.Posts.filter((post) => post.id === page.id).length > 0 ? "" : "../";
460
- frontmatter +=
461
- "layout: " + ischild + "../../layouts/MarkdownPostLayout.astro" + "\n";
462
- // get title
463
- frontmatter +=
464
- "title: " +
465
- JSON.stringify(page.properties.title?.title?.[0]?.plain_text ?? "") +
466
- "\n";
467
- // get tags
468
- frontmatter +=
469
- "tags: " +
470
- JSON.stringify((page.properties.tags?.multi_select ?? []).map((tag) => tag.name)) +
471
- "\n";
472
- // get date
473
- frontmatter +=
474
- "pubDate: " +
475
- (page.properties.date?.date?.start ??
476
- new Date().toISOString().split("T")[0]) +
477
- "\n";
478
- // get archived
479
- frontmatter +=
480
- "archived: " + (page.properties.archived ? "true" : "false") + "\n";
481
- // get description
482
- frontmatter +=
483
- "description: " +
484
- JSON.stringify(page.properties.description?.rich_text?.[0]?.plain_text ?? "") +
485
- "\n";
486
- return "---\n" + frontmatter + "---\n";
487
- }
488
- }
489
- //# sourceMappingURL=nomd.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nomd.js","sourceRoot":"","sources":["../../../src/lib/nomd/nomd.ts"],"names":[],"mappings":"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"}