feat: some improvement to Notion export feature (#2562)

* fix: use exportTopicToNotion instead of exportMarkdownToNotion when exporting topics

* refactor: improve Notion topic export to handle multi-page topics

* feat: integrate @tryfabric/martian for Markdown to Notion block conversion

* feat: add progress message for notion exporting
This commit is contained in:
shiquda
2025-03-15 11:06:41 +08:00
committed by GitHub
parent 604f76d55e
commit fb30a796d7
9 changed files with 505 additions and 64 deletions

View File

@@ -69,6 +69,7 @@
"@llm-tools/embedjs-openai": "^0.1.28",
"@modelcontextprotocol/sdk": "patch:@modelcontextprotocol/sdk@npm%3A1.6.1#~/.yarn/patches/@modelcontextprotocol-sdk-npm-1.6.1-b46313efe7.patch",
"@notionhq/client": "^2.2.15",
"@tryfabric/martian": "^1.2.4",
"@types/react-infinite-scroll-component": "^5.0.0",
"adm-zip": "^0.5.16",
"apache-arrow": "^18.1.0",

View File

@@ -436,6 +436,8 @@
"message.style": "Message style",
"message.style.bubble": "Bubble",
"message.style.plain": "Plain",
"loading.notion.preparing": "Preparing to export to Notion...",
"loading.notion.exporting_progress": "Exporting to Notion ({{current}}/{{total}})...",
"regenerate.confirm": "Regenerating will replace current message",
"reset.confirm.content": "Are you sure you want to clear all data?",
"reset.double.confirm.content": "All data will be lost, do you want to continue?",

View File

@@ -420,6 +420,8 @@
"error.yuque.no_config": "語雀Token または 知識ベースID が設定されていません",
"group.delete.content": "分組メッセージを削除するとユーザーの質問と助け手の回答がすべて削除されます",
"group.delete.title": "分組メッセージを削除",
"loading.notion.preparing": "Notionへのエクスポートを準備中...",
"loading.notion.exporting_progress": "Notionにエクスポート中 ({{current}}/{{total}})...",
"ignore.knowledge.base": "インターネットモードが有効になっています。ナレッジベースを無視します",
"info.notion.block_reach_limit": "会話が長すぎます。Notionにページごとにエクスポートしています",
"mention.title": "モデルを切り替える",

View File

@@ -428,6 +428,8 @@
"group.delete.title": "Удалить группу сообщений",
"ignore.knowledge.base": "Режим сети включен, игнорировать базу знаний",
"info.notion.block_reach_limit": "Диалог слишком длинный, экспортируется в Notion по страницам",
"loading.notion.preparing": "Подготовка к экспорту в Notion...",
"loading.notion.exporting_progress": "Экспорт в Notion ({{current}}/{{total}})...",
"mention.title": "Переключить модель ответа",
"message.code_style": "Стиль кода",
"message.delete.content": "Вы уверены, что хотите удалить это сообщение?",

View File

@@ -422,6 +422,8 @@
"group.delete.title": "删除分组消息",
"ignore.knowledge.base": "联网模式开启,忽略知识库",
"info.notion.block_reach_limit": "对话过长正在分页导出到Notion",
"loading.notion.preparing": "正在准备导出到Notion...",
"loading.notion.exporting_progress": "正在导出到Notion ({{current}}/{{total}})...",
"mention.title": "切换模型回答",
"message.code_style": "代码风格",
"message.delete.content": "确定要删除此消息吗?",

View File

@@ -422,6 +422,8 @@
"group.delete.title": "刪除分組訊息",
"ignore.knowledge.base": "網路模式開啟,忽略知識庫",
"info.notion.block_reach_limit": "對話過長,自動分頁匯出到 Notion",
"loading.notion.preparing": "正在準備匯出到 Notion...",
"loading.notion.exporting_progress": "正在匯出到 Notion ({{current}}/{{total}})...",
"mention.title": "切換模型回答",
"message.code_style": "程式碼風格",
"message.delete.content": "確定要刪除此訊息嗎?",

View File

@@ -25,9 +25,9 @@ import { Assistant, Topic } from '@renderer/types'
import { removeSpecialCharactersForFileName } from '@renderer/utils'
import { copyTopicAsMarkdown } from '@renderer/utils/copy'
import {
exportMarkdownToNotion,
exportMarkdownToYuque,
exportTopicAsMarkdown,
exportTopicToNotion,
topicToMarkdown
} from '@renderer/utils/export'
import { Dropdown, MenuProps, Tooltip } from 'antd'
@@ -244,8 +244,7 @@ const Topics: FC<Props> = ({ assistant: _assistant, activeTopic, setActiveTopic
label: t('chat.topics.export.notion'),
key: 'notion',
onClick: async () => {
const markdown = await topicToMarkdown(topic)
exportMarkdownToNotion(topic.name, markdown)
exportTopicToNotion(topic)
}
},
{

View File

@@ -6,6 +6,7 @@ import store from '@renderer/store'
import { setExportState } from '@renderer/store/runtime'
import { Message, Topic } from '@renderer/types'
import { removeSpecialCharactersForFileName } from '@renderer/utils/index'
import { markdownToBlocks } from '@tryfabric/martian'
import dayjs from 'dayjs'
export const messageToMarkdown = (message: Message) => {
@@ -89,6 +90,9 @@ export const exportMessageAsMarkdown = async (message: Message) => {
}
}
const convertMarkdownToNotionBlocks = async (markdown: string) => {
return markdownToBlocks(markdown)
}
// 修改 splitNotionBlocks 函数
const splitNotionBlocks = (blocks: any[]) => {
const { notionAutoSplit, notionSplitSize } = store.getState().settings
@@ -117,26 +121,6 @@ const splitNotionBlocks = (blocks: any[]) => {
return pages
}
// 创建页面标题块
const createPageTitleBlocks = (title: string, pageNumber: number, totalPages: number) => {
return [
{
object: 'block',
type: 'heading_1',
heading_1: {
rich_text: [{ type: 'text', text: { content: `${title} (${pageNumber}/${totalPages})` } }]
}
},
{
object: 'block',
type: 'paragraph',
paragraph: {
rich_text: []
}
}
]
}
export const exportTopicToNotion = async (topic: Topic) => {
const { isExporting } = store.getState().runtime.export
if (isExporting) {
@@ -155,18 +139,7 @@ export const exportTopicToNotion = async (topic: Topic) => {
try {
const notion = new Client({ auth: notionApiKey })
const markdown = await topicToMarkdown(topic)
const requestBody = JSON.stringify({ md: markdown })
const res = await fetch('https://md2notion.hilars.dev', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: requestBody
})
const data = await res.json()
const allBlocks = data
const allBlocks = await convertMarkdownToNotionBlocks(markdown)
const blockPages = splitNotionBlocks(allBlocks)
if (blockPages.length === 0) {
@@ -175,33 +148,47 @@ export const exportTopicToNotion = async (topic: Topic) => {
// 创建主页面和子页面
let mainPageResponse: any = null
let parentBlockId: string | null = null
for (let i = 0; i < blockPages.length; i++) {
const pageTitle = blockPages.length > 1 ? `${topic.name} (${i + 1}/${blockPages.length})` : topic.name
const pageTitle = topic.name
const pageBlocks = blockPages[i]
const pageContent =
i === 0 ? pageBlocks : [...createPageTitleBlocks(topic.name, i + 1, blockPages.length), ...pageBlocks]
const response = await notion.pages.create({
parent: { database_id: notionDatabaseID },
properties: {
[store.getState().settings.notionPageNameKey || 'Name']: {
title: [{ text: { content: pageTitle } }]
}
},
children: pageContent
// 导出进度提示
window.message.loading({
content: i18n.t('message.loading.notion.exporting_progress', {
current: i + 1,
total: blockPages.length
}),
key: 'notion-export-progress'
})
// 保存主页面响应
if (i === 0) {
const response = await notion.pages.create({
parent: { database_id: notionDatabaseID },
properties: {
[store.getState().settings.notionPageNameKey || 'Name']: {
title: [{ text: { content: pageTitle } }]
}
},
children: pageBlocks
})
mainPageResponse = response
parentBlockId = response.id
} else {
if (!parentBlockId) {
throw new Error('Parent block ID is null')
}
await notion.blocks.children.append({
block_id: parentBlockId,
children: pageBlocks
})
}
}
window.message.success({ content: i18n.t('message.success.notion.export'), key: 'notion-success' })
window.message.success({ content: i18n.t('message.success.notion.export'), key: 'notion-export-progress' })
return mainPageResponse
} catch (error: any) {
window.message.error({ content: i18n.t('message.error.notion.export'), key: 'notion-error' })
window.message.error({ content: i18n.t('message.error.notion.export'), key: 'notion-export-progress' })
return null
} finally {
setExportState({
@@ -229,18 +216,11 @@ export const exportMarkdownToNotion = async (title: string, content: string) =>
try {
const notion = new Client({ auth: notionApiKey })
const requestBody = JSON.stringify({ md: content })
const notionBlocks = await convertMarkdownToNotionBlocks(content)
const res = await fetch('https://md2notion.hilars.dev', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: requestBody
})
const data = await res.json()
const notionBlocks = data
if (notionBlocks.length === 0) {
throw new Error('No content to export')
}
const response = await notion.pages.create({
parent: { database_id: notionDatabaseID },
@@ -249,7 +229,7 @@ export const exportMarkdownToNotion = async (title: string, content: string) =>
title: [{ text: { content: title } }]
}
},
children: notionBlocks
children: notionBlocks as any[]
})
window.message.success({ content: i18n.t('message.success.notion.export'), key: 'notion-success' })

455
yarn.lock
View File

@@ -1864,6 +1864,16 @@ __metadata:
languageName: node
linkType: hard
"@notionhq/client@npm:^1.0.4":
version: 1.0.4
resolution: "@notionhq/client@npm:1.0.4"
dependencies:
"@types/node-fetch": "npm:^2.5.10"
node-fetch: "npm:^2.6.1"
checksum: 10c0/ec9b2389537f0ae79c1e55d12bce1798924976b89bcf8d793ffc4f6914f230a07eec34f4053e086aa5c5fa7800cf4f57f5047cf0ceca6de730cebb0b9d32b000
languageName: node
linkType: hard
"@notionhq/client@npm:^2.2.15":
version: 2.2.16
resolution: "@notionhq/client@npm:2.2.16"
@@ -2517,6 +2527,19 @@ __metadata:
languageName: node
linkType: hard
"@tryfabric/martian@npm:^1.2.4":
version: 1.2.4
resolution: "@tryfabric/martian@npm:1.2.4"
dependencies:
"@notionhq/client": "npm:^1.0.4"
remark-gfm: "npm:^1.0.0"
remark-math: "npm:^4.0.0"
remark-parse: "npm:^9.0.0"
unified: "npm:^9.2.1"
checksum: 10c0/ea02f6aef2b368d05b4def9461c900122bc86bfb036242674356558a9faa23abebf79e63cca8b6a96dc3c3c8a95cddc85e1e68a6d26a95f18c7eca2f46c25b24
languageName: node
linkType: hard
"@types/acorn@npm:^4.0.0":
version: 4.0.6
resolution: "@types/acorn@npm:4.0.6"
@@ -2742,6 +2765,15 @@ __metadata:
languageName: node
linkType: hard
"@types/mdast@npm:^3.0.0":
version: 3.0.15
resolution: "@types/mdast@npm:3.0.15"
dependencies:
"@types/unist": "npm:^2"
checksum: 10c0/fcbf716c03d1ed5465deca60862e9691414f9c43597c288c7d2aefbe274552e1bbd7aeee91b88a02597e88a28c139c57863d0126fcf8416a95fdc681d054ee3d
languageName: node
linkType: hard
"@types/mdast@npm:^4.0.0":
version: 4.0.4
resolution: "@types/mdast@npm:4.0.4"
@@ -2914,7 +2946,7 @@ __metadata:
languageName: node
linkType: hard
"@types/unist@npm:^2.0.0":
"@types/unist@npm:^2, @types/unist@npm:^2.0.0, @types/unist@npm:^2.0.2":
version: 2.0.11
resolution: "@types/unist@npm:2.0.11"
checksum: 10c0/24dcdf25a168f453bb70298145eb043cfdbb82472db0bc0b56d6d51cd2e484b9ed8271d4ac93000a80da568f2402e9339723db262d0869e2bf13bc58e081768d
@@ -3152,6 +3184,7 @@ __metadata:
"@notionhq/client": "npm:^2.2.15"
"@reduxjs/toolkit": "npm:^2.2.5"
"@tavily/core": "patch:@tavily/core@npm%3A0.3.1#~/.yarn/patches/@tavily-core-npm-0.3.1-fe69bf2bea.patch"
"@tryfabric/martian": "npm:^1.2.4"
"@types/adm-zip": "npm:^0"
"@types/fs-extra": "npm:^11"
"@types/lodash": "npm:^4.17.5"
@@ -3875,6 +3908,13 @@ __metadata:
languageName: node
linkType: hard
"bail@npm:^1.0.0":
version: 1.0.5
resolution: "bail@npm:1.0.5"
checksum: 10c0/4cf7d0b5c82fdc69590b3fe85c17c4ec37647681b20875551fd6187a85c122b20178dc118001d3ebd5d0ab3dc0e95637c71f889f481882ee761db43c6b16fa05
languageName: node
linkType: hard
"bail@npm:^2.0.0":
version: 2.0.2
resolution: "bail@npm:2.0.2"
@@ -4355,6 +4395,13 @@ __metadata:
languageName: node
linkType: hard
"ccount@npm:^1.0.0":
version: 1.1.0
resolution: "ccount@npm:1.1.0"
checksum: 10c0/9ccfddfa45c8d6d01411b8e30d2ce03c55c33f32a69bdb84ee44d743427cdb01b03159954917023d0dac960c34973ba42626bb9fa883491ebb663a53a6713d43
languageName: node
linkType: hard
"ccount@npm:^2.0.0":
version: 2.0.1
resolution: "ccount@npm:2.0.1"
@@ -4408,6 +4455,13 @@ __metadata:
languageName: node
linkType: hard
"character-entities-legacy@npm:^1.0.0":
version: 1.1.4
resolution: "character-entities-legacy@npm:1.1.4"
checksum: 10c0/ea4ca9c29887335eed86d78fc67a640168342b1274da84c097abb0575a253d1265281a5052f9a863979e952bcc267b4ecaaf4fe233a7e1e0d8a47806c65b96c7
languageName: node
linkType: hard
"character-entities-legacy@npm:^3.0.0":
version: 3.0.0
resolution: "character-entities-legacy@npm:3.0.0"
@@ -4415,6 +4469,13 @@ __metadata:
languageName: node
linkType: hard
"character-entities@npm:^1.0.0":
version: 1.2.4
resolution: "character-entities@npm:1.2.4"
checksum: 10c0/ad015c3d7163563b8a0ee1f587fb0ef305ef344e9fd937f79ca51cccc233786a01d591d989d5bf7b2e66b528ac9efba47f3b1897358324e69932f6d4b25adfe1
languageName: node
linkType: hard
"character-entities@npm:^2.0.0":
version: 2.0.2
resolution: "character-entities@npm:2.0.2"
@@ -4422,6 +4483,13 @@ __metadata:
languageName: node
linkType: hard
"character-reference-invalid@npm:^1.0.0":
version: 1.1.4
resolution: "character-reference-invalid@npm:1.1.4"
checksum: 10c0/29f05081c5817bd1e975b0bf61e77b60a40f62ad371d0f0ce0fdb48ab922278bc744d1fbe33771dced751887a8403f265ff634542675c8d7375f6ff4811efd0e
languageName: node
linkType: hard
"character-reference-invalid@npm:^2.0.0":
version: 2.0.1
resolution: "character-reference-invalid@npm:2.0.1"
@@ -4630,7 +4698,7 @@ __metadata:
languageName: node
linkType: hard
"commander@npm:^2.8.1":
"commander@npm:^2.19.0, commander@npm:^2.8.1":
version: 2.20.3
resolution: "commander@npm:2.20.3"
checksum: 10c0/74c781a5248c2402a0a3e966a0a2bba3c054aad144f5c023364be83265e796b20565aa9feff624132ff629aa64e16999fa40a743c10c12f7c61e96a794b99288
@@ -8013,6 +8081,13 @@ __metadata:
languageName: node
linkType: hard
"is-alphabetical@npm:^1.0.0":
version: 1.0.4
resolution: "is-alphabetical@npm:1.0.4"
checksum: 10c0/1505b1de5a1fd74022c05fb21b0e683a8f5229366bac8dc4d34cf6935bcfd104d1125a5e6b083fb778847629f76e5bdac538de5367bdf2b927a1356164e23985
languageName: node
linkType: hard
"is-alphabetical@npm:^2.0.0":
version: 2.0.1
resolution: "is-alphabetical@npm:2.0.1"
@@ -8020,6 +8095,16 @@ __metadata:
languageName: node
linkType: hard
"is-alphanumerical@npm:^1.0.0":
version: 1.0.4
resolution: "is-alphanumerical@npm:1.0.4"
dependencies:
is-alphabetical: "npm:^1.0.0"
is-decimal: "npm:^1.0.0"
checksum: 10c0/d623abae7130a7015c6bf33d99151d4e7005572fd170b86568ff4de5ae86ac7096608b87dd4a1d4dbbd497e392b6396930ba76c9297a69455909cebb68005905
languageName: node
linkType: hard
"is-alphanumerical@npm:^2.0.0":
version: 2.0.1
resolution: "is-alphanumerical@npm:2.0.1"
@@ -8080,6 +8165,13 @@ __metadata:
languageName: node
linkType: hard
"is-buffer@npm:^2.0.0":
version: 2.0.5
resolution: "is-buffer@npm:2.0.5"
checksum: 10c0/e603f6fced83cf94c53399cff3bda1a9f08e391b872b64a73793b0928be3e5f047f2bcece230edb7632eaea2acdbfcb56c23b33d8a20c820023b230f1485679a
languageName: node
linkType: hard
"is-buffer@npm:~1.1.6":
version: 1.1.6
resolution: "is-buffer@npm:1.1.6"
@@ -8135,6 +8227,13 @@ __metadata:
languageName: node
linkType: hard
"is-decimal@npm:^1.0.0":
version: 1.0.4
resolution: "is-decimal@npm:1.0.4"
checksum: 10c0/a4ad53c4c5c4f5a12214e7053b10326711f6a71f0c63ba1314a77bd71df566b778e4ebd29f9fb6815f07a4dc50c3767fb19bd6fc9fa05e601410f1d64ffeac48
languageName: node
linkType: hard
"is-decimal@npm:^2.0.0":
version: 2.0.1
resolution: "is-decimal@npm:2.0.1"
@@ -8218,6 +8317,13 @@ __metadata:
languageName: node
linkType: hard
"is-hexadecimal@npm:^1.0.0":
version: 1.0.4
resolution: "is-hexadecimal@npm:1.0.4"
checksum: 10c0/ec4c64e5624c0f240922324bc697e166554f09d3ddc7633fc526084502626445d0a871fbd8cae52a9844e83bd0bb414193cc5a66806d7b2867907003fc70c5ea
languageName: node
linkType: hard
"is-hexadecimal@npm:^2.0.0":
version: 2.0.1
resolution: "is-hexadecimal@npm:2.0.1"
@@ -8284,6 +8390,13 @@ __metadata:
languageName: node
linkType: hard
"is-plain-obj@npm:^2.0.0":
version: 2.1.0
resolution: "is-plain-obj@npm:2.1.0"
checksum: 10c0/e5c9814cdaa627a9ad0a0964ded0e0491bfd9ace405c49a5d63c88b30a162f1512c069d5b80997893c4d0181eadc3fed02b4ab4b81059aba5620bfcdfdeb9c53
languageName: node
linkType: hard
"is-plain-obj@npm:^4.0.0":
version: 4.1.0
resolution: "is-plain-obj@npm:4.1.0"
@@ -8742,6 +8855,17 @@ __metadata:
languageName: node
linkType: hard
"katex@npm:^0.12.0":
version: 0.12.0
resolution: "katex@npm:0.12.0"
dependencies:
commander: "npm:^2.19.0"
bin:
katex: cli.js
checksum: 10c0/f75e4f398c70f1631a6f433575dde4608c21a4fb65f532946995e7724efc8650dad2f6b02af5235323b26673b0e0ed3711491e1a2a214a48625d6e5d84a1341b
languageName: node
linkType: hard
"katex@npm:^0.16.0":
version: 0.16.21
resolution: "katex@npm:0.16.21"
@@ -9063,6 +9187,13 @@ __metadata:
languageName: node
linkType: hard
"longest-streak@npm:^2.0.0":
version: 2.0.4
resolution: "longest-streak@npm:2.0.4"
checksum: 10c0/918fb5104cde537757f44431776d6d828bc091a63ca38a3b3e59a08b88498b4421bf5fd9823ef22b4d186f0234d9943087fa96bd6117d26dedcf6008480fd46a
languageName: node
linkType: hard
"longest-streak@npm:^3.0.0":
version: 3.1.0
resolution: "longest-streak@npm:3.1.0"
@@ -9228,6 +9359,15 @@ __metadata:
languageName: node
linkType: hard
"markdown-table@npm:^2.0.0":
version: 2.0.0
resolution: "markdown-table@npm:2.0.0"
dependencies:
repeat-string: "npm:^1.0.0"
checksum: 10c0/f257e0781ea50eb946919df84bdee4ba61f983971b277a369ca7276f89740fd0e2749b9b187163a42df4c48682b71962d4007215ce3523480028f06c11ddc2e6
languageName: node
linkType: hard
"markdown-table@npm:^3.0.0":
version: 3.0.4
resolution: "markdown-table@npm:3.0.4"
@@ -9274,6 +9414,17 @@ __metadata:
languageName: node
linkType: hard
"mdast-util-find-and-replace@npm:^1.1.0":
version: 1.1.1
resolution: "mdast-util-find-and-replace@npm:1.1.1"
dependencies:
escape-string-regexp: "npm:^4.0.0"
unist-util-is: "npm:^4.0.0"
unist-util-visit-parents: "npm:^3.0.0"
checksum: 10c0/4b9da583e858146a6553155795ef2f0d37b72b8d20487f75895e01fd240a483fbdb97f5aecd218e8ce598be24edb742c5bcbcba2896d172101529376ef390633
languageName: node
linkType: hard
"mdast-util-find-and-replace@npm:^3.0.0":
version: 3.0.2
resolution: "mdast-util-find-and-replace@npm:3.0.2"
@@ -9286,6 +9437,19 @@ __metadata:
languageName: node
linkType: hard
"mdast-util-from-markdown@npm:^0.8.0":
version: 0.8.5
resolution: "mdast-util-from-markdown@npm:0.8.5"
dependencies:
"@types/mdast": "npm:^3.0.0"
mdast-util-to-string: "npm:^2.0.0"
micromark: "npm:~2.11.0"
parse-entities: "npm:^2.0.0"
unist-util-stringify-position: "npm:^2.0.0"
checksum: 10c0/86e7589e574378817c180f10ab602db844b6b71b7b1769314947a02ef42ac5c1435f5163d02a975ae8cdab8b6e6176acbd9188da1848ddd5f0d5e09d0291c870
languageName: node
linkType: hard
"mdast-util-from-markdown@npm:^2.0.0":
version: 2.0.2
resolution: "mdast-util-from-markdown@npm:2.0.2"
@@ -9306,6 +9470,17 @@ __metadata:
languageName: node
linkType: hard
"mdast-util-gfm-autolink-literal@npm:^0.1.0":
version: 0.1.3
resolution: "mdast-util-gfm-autolink-literal@npm:0.1.3"
dependencies:
ccount: "npm:^1.0.0"
mdast-util-find-and-replace: "npm:^1.1.0"
micromark: "npm:^2.11.3"
checksum: 10c0/155665a88a9b11fb5f8b6c5bff1a1e9d30f7381ff8c1864c7ede1eab4e312c51cef1e92e113cda174ebad40181350e555c303fa3293a1dc60b8945818d0af39a
languageName: node
linkType: hard
"mdast-util-gfm-autolink-literal@npm:^2.0.0":
version: 2.0.1
resolution: "mdast-util-gfm-autolink-literal@npm:2.0.1"
@@ -9332,6 +9507,15 @@ __metadata:
languageName: node
linkType: hard
"mdast-util-gfm-strikethrough@npm:^0.2.0":
version: 0.2.3
resolution: "mdast-util-gfm-strikethrough@npm:0.2.3"
dependencies:
mdast-util-to-markdown: "npm:^0.6.0"
checksum: 10c0/1de00913769c252add1f48fea547121d971ef7a8bfe6a89b775dea38aa319e6b10b6f514b492586aa7e660f8880b5c2390e411302a0b2386ed793f914b9eca71
languageName: node
linkType: hard
"mdast-util-gfm-strikethrough@npm:^2.0.0":
version: 2.0.0
resolution: "mdast-util-gfm-strikethrough@npm:2.0.0"
@@ -9343,6 +9527,16 @@ __metadata:
languageName: node
linkType: hard
"mdast-util-gfm-table@npm:^0.1.0":
version: 0.1.6
resolution: "mdast-util-gfm-table@npm:0.1.6"
dependencies:
markdown-table: "npm:^2.0.0"
mdast-util-to-markdown: "npm:~0.6.0"
checksum: 10c0/a3b3fa2f91a44054dbe7e8a4cba1bcaa35255633da7850ad2688c60d1e1825d5d668774f31689d018d9f04cadc68f6055349048192c89a0e6c2ccb91a7ae7d1f
languageName: node
linkType: hard
"mdast-util-gfm-table@npm:^2.0.0":
version: 2.0.0
resolution: "mdast-util-gfm-table@npm:2.0.0"
@@ -9356,6 +9550,15 @@ __metadata:
languageName: node
linkType: hard
"mdast-util-gfm-task-list-item@npm:^0.1.0":
version: 0.1.6
resolution: "mdast-util-gfm-task-list-item@npm:0.1.6"
dependencies:
mdast-util-to-markdown: "npm:~0.6.0"
checksum: 10c0/6b5b5239f031b630cd433cfd0bb30b7258dfac7d49c86a2c937127bc00fda186f798cf2a671507bcfad00f075d2d8779be9c109549052d98f1b4927e6e12d8be
languageName: node
linkType: hard
"mdast-util-gfm-task-list-item@npm:^2.0.0":
version: 2.0.0
resolution: "mdast-util-gfm-task-list-item@npm:2.0.0"
@@ -9368,6 +9571,19 @@ __metadata:
languageName: node
linkType: hard
"mdast-util-gfm@npm:^0.1.0":
version: 0.1.2
resolution: "mdast-util-gfm@npm:0.1.2"
dependencies:
mdast-util-gfm-autolink-literal: "npm:^0.1.0"
mdast-util-gfm-strikethrough: "npm:^0.2.0"
mdast-util-gfm-table: "npm:^0.1.0"
mdast-util-gfm-task-list-item: "npm:^0.1.0"
mdast-util-to-markdown: "npm:^0.6.1"
checksum: 10c0/109c5f3e3340c25ecec5fb0b9b1a4137fb0948ffbc38ed4b85d477f3da471c2a475a84f2cb2569663768d6967aedf0f3a18b936ea907d0e34374f4eeaed18c5a
languageName: node
linkType: hard
"mdast-util-gfm@npm:^3.0.0":
version: 3.1.0
resolution: "mdast-util-gfm@npm:3.1.0"
@@ -9383,6 +9599,17 @@ __metadata:
languageName: node
linkType: hard
"mdast-util-math@npm:^0.1.0":
version: 0.1.2
resolution: "mdast-util-math@npm:0.1.2"
dependencies:
longest-streak: "npm:^2.0.0"
mdast-util-to-markdown: "npm:^0.6.0"
repeat-string: "npm:^1.0.0"
checksum: 10c0/43d5440d7345b944358a586ef72a63c1bf2bfeb38f703050e4a18042f4827209282633d41872e7f1118dd9d3c24af441f92786a2d3344bd1b9ae8f884735e50d
languageName: node
linkType: hard
"mdast-util-math@npm:^3.0.0":
version: 3.0.0
resolution: "mdast-util-math@npm:3.0.0"
@@ -9473,6 +9700,20 @@ __metadata:
languageName: node
linkType: hard
"mdast-util-to-markdown@npm:^0.6.0, mdast-util-to-markdown@npm:^0.6.1, mdast-util-to-markdown@npm:~0.6.0":
version: 0.6.5
resolution: "mdast-util-to-markdown@npm:0.6.5"
dependencies:
"@types/unist": "npm:^2.0.0"
longest-streak: "npm:^2.0.0"
mdast-util-to-string: "npm:^2.0.0"
parse-entities: "npm:^2.0.0"
repeat-string: "npm:^1.0.0"
zwitch: "npm:^1.0.0"
checksum: 10c0/716035b75a50394298eb31acee60a20d06310c7ebf83a3009908714d8c4058d636344932c9c054f1a26e8c6c20e2aafda3b87e003c16037b3e16b2d260a87463
languageName: node
linkType: hard
"mdast-util-to-markdown@npm:^2.0.0, mdast-util-to-markdown@npm:^2.1.0":
version: 2.1.2
resolution: "mdast-util-to-markdown@npm:2.1.2"
@@ -9490,6 +9731,13 @@ __metadata:
languageName: node
linkType: hard
"mdast-util-to-string@npm:^2.0.0":
version: 2.0.0
resolution: "mdast-util-to-string@npm:2.0.0"
checksum: 10c0/a4231085133cdfec24644b694c13661e5a01d26716be0105b6792889faa04b8030e4abbf72d4be3363098b2b38b2b98f1f1f1f0858eb6580dc04e2aca1436a37
languageName: node
linkType: hard
"mdast-util-to-string@npm:^4.0.0":
version: 4.0.0
resolution: "mdast-util-to-string@npm:4.0.0"
@@ -9584,6 +9832,15 @@ __metadata:
languageName: node
linkType: hard
"micromark-extension-gfm-autolink-literal@npm:~0.5.0":
version: 0.5.7
resolution: "micromark-extension-gfm-autolink-literal@npm:0.5.7"
dependencies:
micromark: "npm:~2.11.3"
checksum: 10c0/4e56021641200cd88a9e05be531405bba007db9187554e06d0dfb5d8c49df67991322f2f952d6a25bbe3972ef0543a08d7ea00dff7b8577f8f3ca196c6544114
languageName: node
linkType: hard
"micromark-extension-gfm-footnote@npm:^2.0.0":
version: 2.1.0
resolution: "micromark-extension-gfm-footnote@npm:2.1.0"
@@ -9614,6 +9871,15 @@ __metadata:
languageName: node
linkType: hard
"micromark-extension-gfm-strikethrough@npm:~0.6.5":
version: 0.6.5
resolution: "micromark-extension-gfm-strikethrough@npm:0.6.5"
dependencies:
micromark: "npm:~2.11.0"
checksum: 10c0/c14e953b833718f56a71a650e9c2958fdb2b91093d7304043443eb64a8287cb8ff776d3cec0d40ca00ccd69357438f3dcac2cc40d3f16e47230cfbce72a1cf51
languageName: node
linkType: hard
"micromark-extension-gfm-table@npm:^2.0.0":
version: 2.1.1
resolution: "micromark-extension-gfm-table@npm:2.1.1"
@@ -9627,6 +9893,15 @@ __metadata:
languageName: node
linkType: hard
"micromark-extension-gfm-table@npm:~0.4.0":
version: 0.4.3
resolution: "micromark-extension-gfm-table@npm:0.4.3"
dependencies:
micromark: "npm:~2.11.0"
checksum: 10c0/0f4be3a1206024845bbc2495ea3b2a255bf5287af3747733d398adf962bfcf6f0c452dc66e268ab84f41b64a2f8113028887034045450bad43a48a8b5583bc14
languageName: node
linkType: hard
"micromark-extension-gfm-tagfilter@npm:^2.0.0":
version: 2.0.0
resolution: "micromark-extension-gfm-tagfilter@npm:2.0.0"
@@ -9636,6 +9911,13 @@ __metadata:
languageName: node
linkType: hard
"micromark-extension-gfm-tagfilter@npm:~0.3.0":
version: 0.3.0
resolution: "micromark-extension-gfm-tagfilter@npm:0.3.0"
checksum: 10c0/5a81cffbcad7f314ddb3b761c5e2db5a5286e231e68559861da821ee748838cc9323fd22af5cbbe68569e826fa8159f2f2b0d53dc8aecc458ef48b2503a071fb
languageName: node
linkType: hard
"micromark-extension-gfm-task-list-item@npm:^2.0.0":
version: 2.1.0
resolution: "micromark-extension-gfm-task-list-item@npm:2.1.0"
@@ -9649,6 +9931,29 @@ __metadata:
languageName: node
linkType: hard
"micromark-extension-gfm-task-list-item@npm:~0.3.0":
version: 0.3.3
resolution: "micromark-extension-gfm-task-list-item@npm:0.3.3"
dependencies:
micromark: "npm:~2.11.0"
checksum: 10c0/e94e02eb2509a6ced49a6b296a7c503068488da79b5d3a3e4dfe5dcd5abdb95a1f305c087abb4ca3f7c90112ae29d628b30edeadaf53d3eec9dfe338bb678650
languageName: node
linkType: hard
"micromark-extension-gfm@npm:^0.3.0":
version: 0.3.3
resolution: "micromark-extension-gfm@npm:0.3.3"
dependencies:
micromark: "npm:~2.11.0"
micromark-extension-gfm-autolink-literal: "npm:~0.5.0"
micromark-extension-gfm-strikethrough: "npm:~0.6.5"
micromark-extension-gfm-table: "npm:~0.4.0"
micromark-extension-gfm-tagfilter: "npm:~0.3.0"
micromark-extension-gfm-task-list-item: "npm:~0.3.0"
checksum: 10c0/6ed94c6213687b84c7b2dbacf8a50b078c60fd960bc9ddb3ec742fc298b8f7d5dcd8e9ab2a73fb8b423a0b11bf0a1565bc24bf45b45009f2693690277a7675df
languageName: node
linkType: hard
"micromark-extension-gfm@npm:^3.0.0":
version: 3.0.0
resolution: "micromark-extension-gfm@npm:3.0.0"
@@ -9665,6 +9970,16 @@ __metadata:
languageName: node
linkType: hard
"micromark-extension-math@npm:^0.1.0":
version: 0.1.2
resolution: "micromark-extension-math@npm:0.1.2"
dependencies:
katex: "npm:^0.12.0"
micromark: "npm:~2.11.0"
checksum: 10c0/acf23bad82a4d6edc9cfba316a2fdd1456c2598d912db8b3a1779da5b3987f40fca51d48eeb3163cc9bdcfc17191922801e311522847e3b6733d2c0ed427d8ee
languageName: node
linkType: hard
"micromark-extension-math@npm:^3.0.0":
version: 3.1.0
resolution: "micromark-extension-math@npm:3.1.0"
@@ -9919,6 +10234,16 @@ __metadata:
languageName: node
linkType: hard
"micromark@npm:^2.11.3, micromark@npm:~2.11.0, micromark@npm:~2.11.3":
version: 2.11.4
resolution: "micromark@npm:2.11.4"
dependencies:
debug: "npm:^4.0.0"
parse-entities: "npm:^2.0.0"
checksum: 10c0/67307cbacae621ab1eb23e333a5addc7600cf97d3b40cad22fc1c2d03d734d6d9cbc3f5a7e5d655a8c0862a949abe590ab7cfa96be366bfe09e239a94e6eea55
languageName: node
linkType: hard
"micromark@npm:^4.0.0, micromark@npm:^4.0.1":
version: 4.0.2
resolution: "micromark@npm:4.0.2"
@@ -11120,6 +11445,20 @@ __metadata:
languageName: node
linkType: hard
"parse-entities@npm:^2.0.0":
version: 2.0.0
resolution: "parse-entities@npm:2.0.0"
dependencies:
character-entities: "npm:^1.0.0"
character-entities-legacy: "npm:^1.0.0"
character-reference-invalid: "npm:^1.0.0"
is-alphanumerical: "npm:^1.0.0"
is-decimal: "npm:^1.0.0"
is-hexadecimal: "npm:^1.0.0"
checksum: 10c0/f85a22c0ea406ff26b53fdc28641f01cc36fa49eb2e3135f02693286c89ef0bcefc2262d99b3688e20aac2a14fd10b75c518583e875c1b9fe3d1f937795e0854
languageName: node
linkType: hard
"parse-entities@npm:^4.0.0":
version: 4.0.2
resolution: "parse-entities@npm:4.0.2"
@@ -12724,6 +13063,16 @@ __metadata:
languageName: node
linkType: hard
"remark-gfm@npm:^1.0.0":
version: 1.0.0
resolution: "remark-gfm@npm:1.0.0"
dependencies:
mdast-util-gfm: "npm:^0.1.0"
micromark-extension-gfm: "npm:^0.3.0"
checksum: 10c0/929a2328b1a0c63c38cc1678a41089f75f594fb928c02bfcfe967702377ede245fec0ed45a258fe0af421dda547439911260b8621b2ea6819eaa5f6b47d2bb4c
languageName: node
linkType: hard
"remark-gfm@npm:^4.0.0":
version: 4.0.1
resolution: "remark-gfm@npm:4.0.1"
@@ -12738,6 +13087,16 @@ __metadata:
languageName: node
linkType: hard
"remark-math@npm:^4.0.0":
version: 4.0.0
resolution: "remark-math@npm:4.0.0"
dependencies:
mdast-util-math: "npm:^0.1.0"
micromark-extension-math: "npm:^0.1.0"
checksum: 10c0/3a5b7d9d786b78d5b4892ce5f7bc142f0474b7dea91540c91040bc70eb8b31ebf6551fbe21b82286f946a5cf5ede1429faecc976defee44b7d5a919ad7aa366e
languageName: node
linkType: hard
"remark-math@npm:^6.0.0":
version: 6.0.0
resolution: "remark-math@npm:6.0.0"
@@ -12762,6 +13121,15 @@ __metadata:
languageName: node
linkType: hard
"remark-parse@npm:^9.0.0":
version: 9.0.0
resolution: "remark-parse@npm:9.0.0"
dependencies:
mdast-util-from-markdown: "npm:^0.8.0"
checksum: 10c0/7523b2a2e3c7a80f7530b4d5615e8862890abe321cdc4f6f7b103c70ceb4b3eca14cc71127149f05d5e29ed521b0c7505af9f11b1293921cf7cdf6d794104a21
languageName: node
linkType: hard
"remark-rehype@npm:^11.0.0":
version: 11.1.1
resolution: "remark-rehype@npm:11.1.1"
@@ -12786,6 +13154,13 @@ __metadata:
languageName: node
linkType: hard
"repeat-string@npm:^1.0.0":
version: 1.6.1
resolution: "repeat-string@npm:1.6.1"
checksum: 10c0/87fa21bfdb2fbdedc44b9a5b118b7c1239bdd2c2c1e42742ef9119b7d412a5137a1d23f1a83dc6bb686f4f27429ac6f542e3d923090b44181bafa41e8ac0174d
languageName: node
linkType: hard
"request-progress@npm:^2.0.1":
version: 2.0.1
resolution: "request-progress@npm:2.0.1"
@@ -14411,6 +14786,13 @@ __metadata:
languageName: node
linkType: hard
"trough@npm:^1.0.0":
version: 1.0.5
resolution: "trough@npm:1.0.5"
checksum: 10c0/f036d0d7f9bc7cfe5ee650d70b57bb1f048f3292adf6c81bb9b228e546b2b2e5b74ea04a060d21472108a8cda05ec4814bbe86f87ee35c182c50cb41b5c1810a
languageName: node
linkType: hard
"trough@npm:^2.0.0":
version: 2.2.0
resolution: "trough@npm:2.2.0"
@@ -14687,6 +15069,20 @@ __metadata:
languageName: node
linkType: hard
"unified@npm:^9.2.1":
version: 9.2.2
resolution: "unified@npm:9.2.2"
dependencies:
bail: "npm:^1.0.0"
extend: "npm:^3.0.0"
is-buffer: "npm:^2.0.0"
is-plain-obj: "npm:^2.0.0"
trough: "npm:^1.0.0"
vfile: "npm:^4.0.0"
checksum: 10c0/a66d71b039c24626802a4664a1f3210f29ab1f75b89fd41933e6ab00561e1ec43a5bec6de32c7ebc86544e5f00ef5836e8fe79a823e81e35825de4e35823eda9
languageName: node
linkType: hard
"unique-filename@npm:^1.1.1":
version: 1.1.1
resolution: "unique-filename@npm:1.1.1"
@@ -14733,6 +15129,13 @@ __metadata:
languageName: node
linkType: hard
"unist-util-is@npm:^4.0.0":
version: 4.1.0
resolution: "unist-util-is@npm:4.1.0"
checksum: 10c0/21ca3d7bacc88853b880b19cb1b133a056c501617d7f9b8cce969cd8b430ed7e1bc416a3a11b02540d5de6fb86807e169d00596108a459d034cf5faec97c055e
languageName: node
linkType: hard
"unist-util-is@npm:^6.0.0":
version: 6.0.0
resolution: "unist-util-is@npm:6.0.0"
@@ -14770,6 +15173,15 @@ __metadata:
languageName: node
linkType: hard
"unist-util-stringify-position@npm:^2.0.0":
version: 2.0.3
resolution: "unist-util-stringify-position@npm:2.0.3"
dependencies:
"@types/unist": "npm:^2.0.2"
checksum: 10c0/46fa03f840df173b7f032cbfffdb502fb05b79b3fb5451681c796cf4985d9087a537833f5afb75d55e79b46bbbe4b3d81dd75a1062f9289091c526aebe201d5d
languageName: node
linkType: hard
"unist-util-stringify-position@npm:^4.0.0":
version: 4.0.0
resolution: "unist-util-stringify-position@npm:4.0.0"
@@ -14779,6 +15191,16 @@ __metadata:
languageName: node
linkType: hard
"unist-util-visit-parents@npm:^3.0.0":
version: 3.1.1
resolution: "unist-util-visit-parents@npm:3.1.1"
dependencies:
"@types/unist": "npm:^2.0.0"
unist-util-is: "npm:^4.0.0"
checksum: 10c0/231c80c5ba8e79263956fcaa25ed2a11ad7fe77ac5ba0d322e9d51bbc4238501e3bb52f405e518bcdc5471e27b33eff520db0aa4a3b1feb9fb6e2de6ae385d49
languageName: node
linkType: hard
"unist-util-visit-parents@npm:^6.0.0":
version: 6.0.1
resolution: "unist-util-visit-parents@npm:6.0.1"
@@ -15012,6 +15434,16 @@ __metadata:
languageName: node
linkType: hard
"vfile-message@npm:^2.0.0":
version: 2.0.4
resolution: "vfile-message@npm:2.0.4"
dependencies:
"@types/unist": "npm:^2.0.0"
unist-util-stringify-position: "npm:^2.0.0"
checksum: 10c0/ce50d90e0e5dc8f995f39602dd2404f1756388a54209c983d259b17c15e6f262a53546977a638065bc487d0657799fa96f4c1ba6b2915d9724a4968e9c7ff1c8
languageName: node
linkType: hard
"vfile-message@npm:^4.0.0":
version: 4.0.2
resolution: "vfile-message@npm:4.0.2"
@@ -15022,6 +15454,18 @@ __metadata:
languageName: node
linkType: hard
"vfile@npm:^4.0.0":
version: 4.2.1
resolution: "vfile@npm:4.2.1"
dependencies:
"@types/unist": "npm:^2.0.0"
is-buffer: "npm:^2.0.0"
unist-util-stringify-position: "npm:^2.0.0"
vfile-message: "npm:^2.0.0"
checksum: 10c0/4816aecfedc794ba4d3131abff2032ef0e825632cfa8cd20dd9d83819ef260589924f4f3e8fa30e06da2d8e60d7ec8ef7d0af93e0483df62890738258daf098a
languageName: node
linkType: hard
"vfile@npm:^6.0.0":
version: 6.0.3
resolution: "vfile@npm:6.0.3"
@@ -15600,6 +16044,13 @@ __metadata:
languageName: node
linkType: hard
"zwitch@npm:^1.0.0":
version: 1.0.5
resolution: "zwitch@npm:1.0.5"
checksum: 10c0/26dc7d32e5596824b565db1da9650d00d32659c1211195bef50c25c60820f9c942aa7abefe678fc1ed0b97c1755036ac1bde5f97881d7d0e73e04e02aca56957
languageName: node
linkType: hard
"zwitch@npm:^2.0.0, zwitch@npm:^2.0.4":
version: 2.0.4
resolution: "zwitch@npm:2.0.4"