diff --git a/package.json b/package.json index f118977c..ab0af401 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index 67ae5f79..9fe1af34 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -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?", diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index 896a5afa..0dc1ab99 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -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": "モデルを切り替える", diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index ee081a9d..915e9786 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -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": "Вы уверены, что хотите удалить это сообщение?", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index 60ebd166..05dab6d2 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -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": "确定要删除此消息吗?", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index 3727f7ef..484d9891 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -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": "確定要刪除此訊息嗎?", diff --git a/src/renderer/src/pages/home/Tabs/TopicsTab.tsx b/src/renderer/src/pages/home/Tabs/TopicsTab.tsx index 989c3da4..f1c1642b 100644 --- a/src/renderer/src/pages/home/Tabs/TopicsTab.tsx +++ b/src/renderer/src/pages/home/Tabs/TopicsTab.tsx @@ -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 = ({ 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) } }, { diff --git a/src/renderer/src/utils/export.ts b/src/renderer/src/utils/export.ts index 777e4f53..403d1da2 100644 --- a/src/renderer/src/utils/export.ts +++ b/src/renderer/src/utils/export.ts @@ -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' }) diff --git a/yarn.lock b/yarn.lock index 5100884d..4570dbb9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -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"