yuque-ai-mcp 2.7.6 → 2.7.8
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.
- package/README.md +10 -10
- package/README_CN.md +10 -10
- package/SKILL.md +3 -2
- package/dist/board/create-board.js +2 -2
- package/dist/board/create-board.js.map +1 -1
- package/dist/common/api-client.js +8 -1
- package/dist/common/api-client.js.map +1 -1
- package/dist/common/config.d.ts +1 -1
- package/dist/common/config.js +4 -2
- package/dist/common/config.js.map +1 -1
- package/dist/common/diff.d.ts +12 -0
- package/dist/common/diff.js +46 -0
- package/dist/common/diff.js.map +1 -0
- package/dist/common/export-common.d.ts +2 -2
- package/dist/common/export-common.js +4 -4
- package/dist/common/export-common.js.map +1 -1
- package/dist/common/format.d.ts +45 -0
- package/dist/common/format.js +22 -0
- package/dist/common/format.js.map +1 -1
- package/dist/common/html-cleaner.d.ts +18 -0
- package/dist/common/html-cleaner.js +95 -0
- package/dist/common/html-cleaner.js.map +1 -0
- package/dist/common/toc-cache.d.ts +8 -24
- package/dist/common/toc-cache.js +15 -75
- package/dist/common/toc-cache.js.map +1 -1
- package/dist/common/toc-ops.d.ts +108 -0
- package/dist/common/toc-ops.js +387 -0
- package/dist/common/toc-ops.js.map +1 -0
- package/dist/common/validate.d.ts +2 -0
- package/dist/common/validate.js +8 -0
- package/dist/common/validate.js.map +1 -1
- package/dist/doc/batch-get-docs.js +13 -10
- package/dist/doc/batch-get-docs.js.map +1 -1
- package/dist/doc/copy-doc.d.ts +3 -4
- package/dist/doc/copy-doc.js +26 -135
- package/dist/doc/copy-doc.js.map +1 -1
- package/dist/doc/create-doc.js +9 -30
- package/dist/doc/create-doc.js.map +1 -1
- package/dist/doc/delete-doc.js +2 -2
- package/dist/doc/delete-doc.js.map +1 -1
- package/dist/doc/diff-doc.js +5 -45
- package/dist/doc/diff-doc.js.map +1 -1
- package/dist/doc/embed-url.js +5 -0
- package/dist/doc/embed-url.js.map +1 -1
- package/dist/doc/export-doc.d.ts +5 -5
- package/dist/doc/export-doc.js +18 -53
- package/dist/doc/export-doc.js.map +1 -1
- package/dist/doc/export-resources.d.ts +15 -0
- package/dist/doc/export-resources.js +114 -0
- package/dist/doc/export-resources.js.map +1 -0
- package/dist/doc/get-doc.js +6 -2
- package/dist/doc/get-doc.js.map +1 -1
- package/dist/doc/import-file-utils.d.ts +19 -0
- package/dist/doc/import-file-utils.js +136 -1
- package/dist/doc/import-file-utils.js.map +1 -1
- package/dist/doc/import-file.d.ts +2 -6
- package/dist/doc/import-file.js +30 -166
- package/dist/doc/import-file.js.map +1 -1
- package/dist/doc/import-url.d.ts +3 -1
- package/dist/doc/import-url.js +21 -106
- package/dist/doc/import-url.js.map +1 -1
- package/dist/doc/index.d.ts +1 -0
- package/dist/doc/index.js +3 -1
- package/dist/doc/index.js.map +1 -1
- package/dist/doc/list-docs.js +5 -2
- package/dist/doc/list-docs.js.map +1 -1
- package/dist/doc/update-doc.js +2 -2
- package/dist/doc/update-doc.js.map +1 -1
- package/dist/doc/version-detail.js +4 -6
- package/dist/doc/version-detail.js.map +1 -1
- package/dist/doc/versions.js +4 -6
- package/dist/doc/versions.js.map +1 -1
- package/dist/group/delete-user.js +2 -2
- package/dist/group/delete-user.js.map +1 -1
- package/dist/group/list-users.js +7 -4
- package/dist/group/list-users.js.map +1 -1
- package/dist/group/update-user.js +3 -4
- package/dist/group/update-user.js.map +1 -1
- package/dist/note/create-note.js +3 -2
- package/dist/note/create-note.js.map +1 -1
- package/dist/note/get-note.js +6 -0
- package/dist/note/get-note.js.map +1 -1
- package/dist/note/list-notes.js +1 -2
- package/dist/note/list-notes.js.map +1 -1
- package/dist/note/update-note.js +6 -0
- package/dist/note/update-note.js.map +1 -1
- package/dist/recycle/destroy-recycle.js +5 -0
- package/dist/recycle/destroy-recycle.js.map +1 -1
- package/dist/recycle/restore-recycle.js +5 -0
- package/dist/recycle/restore-recycle.js.map +1 -1
- package/dist/repo/batch-get-repos.js +14 -6
- package/dist/repo/batch-get-repos.js.map +1 -1
- package/dist/repo/copy-repo.js +8 -14
- package/dist/repo/copy-repo.js.map +1 -1
- package/dist/repo/create-repo.js +2 -2
- package/dist/repo/create-repo.js.map +1 -1
- package/dist/repo/delete-repo.js +3 -2
- package/dist/repo/delete-repo.js.map +1 -1
- package/dist/repo/export-repo.js +1 -1
- package/dist/repo/export-repo.js.map +1 -1
- package/dist/repo/get-repo.js +3 -2
- package/dist/repo/get-repo.js.map +1 -1
- package/dist/repo/list-repos.js +3 -2
- package/dist/repo/list-repos.js.map +1 -1
- package/dist/repo/update-repo.js +3 -2
- package/dist/repo/update-repo.js.map +1 -1
- package/dist/rss/fetch-feed.js.map +1 -1
- package/dist/search/rag-search-utils.d.ts +12 -4
- package/dist/search/rag-search-utils.js +33 -25
- package/dist/search/rag-search-utils.js.map +1 -1
- package/dist/search/rag-search.d.ts +1 -1
- package/dist/search/rag-search.js +28 -12
- package/dist/search/rag-search.js.map +1 -1
- package/dist/search/search.js +5 -4
- package/dist/search/search.js.map +1 -1
- package/dist/toc/batch-update.d.ts +1 -1
- package/dist/toc/batch-update.js +2 -184
- package/dist/toc/batch-update.js.map +1 -1
- package/dist/toc/get-toc.js +3 -2
- package/dist/toc/get-toc.js.map +1 -1
- package/dist/upload/upload-attachment.js +5 -0
- package/dist/upload/upload-attachment.js.map +1 -1
- package/dist/user/get-groups.js +5 -5
- package/dist/user/get-groups.js.map +1 -1
- package/dist/user/get-user.js +5 -0
- package/dist/user/get-user.js.map +1 -1
- package/dist/user/hello.js +2 -2
- package/dist/user/hello.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
<h1 align="center">yuque-ai-mcp</h1>
|
|
6
6
|
<p align="center">
|
|
7
|
-
<b>
|
|
7
|
+
<b>62 fine-grained MCP tools for the full Yuque OpenAPI</b>
|
|
8
8
|
</p>
|
|
9
9
|
|
|
10
10
|
<p align="center">
|
|
11
|
-
<a href="https://github.com/yehuoshun/yuque-ai-mcp"><img src="https://img.shields.io/badge/version-2.7.
|
|
11
|
+
<a href="https://github.com/yehuoshun/yuque-ai-mcp"><img src="https://img.shields.io/badge/version-2.7.8-blue" alt="version" /></a>
|
|
12
12
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="license" /></a>
|
|
13
|
-
<a href="https://github.com/yehuoshun/yuque-ai-skills"><img src="https://img.shields.io/badge/skills-
|
|
13
|
+
<a href="https://github.com/yehuoshun/yuque-ai-skills"><img src="https://img.shields.io/badge/skills-62%20guides-orange" alt="skills" /></a>
|
|
14
14
|
</p>
|
|
15
15
|
|
|
16
16
|
<p align="center">
|
|
@@ -19,15 +19,15 @@
|
|
|
19
19
|
|
|
20
20
|
---
|
|
21
21
|
|
|
22
|
-
A full-featured Yuque (语雀) MCP Server built on the [Model Context Protocol](https://modelcontextprotocol.io/). Provides
|
|
22
|
+
A full-featured Yuque (语雀) MCP Server built on the [Model Context Protocol](https://modelcontextprotocol.io/). Provides 62 fine-grained tools across 15 domains — every Yuque OpenAPI endpoint as a dedicated tool.
|
|
23
23
|
|
|
24
24
|
## Why
|
|
25
25
|
|
|
26
|
-
- **19 →
|
|
26
|
+
- **19 → 62 tools** — 3x more coverage than the official [yuque-mcp-server](https://github.com/yuque/yuque-mcp-server)
|
|
27
27
|
- **Dual transport** — stdio + HTTP SSE, shared registry, zero downtime on reload
|
|
28
28
|
- **Modular architecture** — 15 domains, barrel exports, single source of truth registry
|
|
29
29
|
- **Full API coverage** — group, recycle, upload, statistics, versions, boards — all the missing pieces
|
|
30
|
-
- **[Skill layer](https://github.com/yehuoshun/yuque-ai-skills)** —
|
|
30
|
+
- **[Skill layer](https://github.com/yehuoshun/yuque-ai-skills)** — 62 usage guides for AI agents
|
|
31
31
|
|
|
32
32
|
## Table of Contents
|
|
33
33
|
|
|
@@ -61,7 +61,7 @@ npm run dev:http # HTTP SSE mode (http://localhost:3099)
|
|
|
61
61
|
|
|
62
62
|
| Domain | Tools | Highlights |
|
|
63
63
|
|--------|-------|------------|
|
|
64
|
-
| **doc** |
|
|
64
|
+
| **doc** | 15 | CRUD, versions, diff, batch get, import URL/file, cross-book copy, export, resource download |
|
|
65
65
|
| **repo** | 8 | CRUD, batch get, cross-book copy, full export (TOC-structure + INDEX/GRAPH) |
|
|
66
66
|
| **toc** | 3 | Get, update, batch update (createTitle/appendNode/removeNode/moveNode) |
|
|
67
67
|
| **search** | 2 | General search + RAG-enhanced search |
|
|
@@ -76,7 +76,7 @@ npm run dev:http # HTTP SSE mode (http://localhost:3099)
|
|
|
76
76
|
| **rss** | 3 | Source list, fetch + dedup + save, schedule analysis |
|
|
77
77
|
| **crawler** | 4 | Fetch, CSS extract, dedup save, schedule analysis |
|
|
78
78
|
| **kv** | 4 | Get, set, delete, list — incremental sharding, 250KB/doc limit |
|
|
79
|
-
| **Total** | **
|
|
79
|
+
| **Total** | **62** | |
|
|
80
80
|
|
|
81
81
|
See [SKILL.md](SKILL.md) or [yuque-ai-skills](https://github.com/yehuoshun/yuque-ai-skills) for full tool documentation.
|
|
82
82
|
|
|
@@ -84,13 +84,13 @@ See [SKILL.md](SKILL.md) or [yuque-ai-skills](https://github.com/yehuoshun/yuque
|
|
|
84
84
|
|
|
85
85
|
| Feature | Official yuque-mcp-server | yuque-ai-mcp |
|
|
86
86
|
|---------|--------------------------|--------------|
|
|
87
|
-
| Tools | 19 | **
|
|
87
|
+
| Tools | 19 | **62** |
|
|
88
88
|
| Granularity | Coarse | **Fine-grained** (1 tool / endpoint) |
|
|
89
89
|
| Group, Recycle, Upload, Statistics | ❌ | ✅ |
|
|
90
90
|
| Versions, Diff, Cross-book Copy | ❌ | ✅ |
|
|
91
91
|
| Transport | stdio only | **stdio + HTTP SSE** |
|
|
92
92
|
| Config | Env var | **config.json** (token + cookie) |
|
|
93
|
-
| Skill Layer | ❌ | ✅
|
|
93
|
+
| Skill Layer | ❌ | ✅ 62 guides |
|
|
94
94
|
|
|
95
95
|
## Architecture
|
|
96
96
|
|
package/README_CN.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
<p align="center">
|
|
2
2
|
<h1 align="center">yuque-ai-mcp</h1>
|
|
3
3
|
<p align="center">
|
|
4
|
-
<b>
|
|
4
|
+
<b>62 个细粒度 MCP 工具,覆盖语雀 OpenAPI 全部能力</b>
|
|
5
5
|
</p>
|
|
6
6
|
</p>
|
|
7
7
|
|
|
8
8
|
<p align="center">
|
|
9
|
-
<a href="https://github.com/yehuoshun/yuque-ai-mcp"><img src="https://img.shields.io/badge/版本-2.7.
|
|
9
|
+
<a href="https://github.com/yehuoshun/yuque-ai-mcp"><img src="https://img.shields.io/badge/版本-2.7.8-blue" alt="version" /></a>
|
|
10
10
|
<a href="LICENSE"><img src="https://img.shields.io/badge/许可-MIT-green" alt="license" /></a>
|
|
11
|
-
<a href="https://github.com/yehuoshun/yuque-ai-skills"><img src="https://img.shields.io/badge/skills-
|
|
11
|
+
<a href="https://github.com/yehuoshun/yuque-ai-skills"><img src="https://img.shields.io/badge/skills-62%20指导-orange" alt="skills" /></a>
|
|
12
12
|
</p>
|
|
13
13
|
|
|
14
14
|
<p align="center">
|
|
@@ -17,15 +17,15 @@
|
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
20
|
-
基于 [Model Context Protocol](https://modelcontextprotocol.io/) 的语雀全功能 MCP Server。
|
|
20
|
+
基于 [Model Context Protocol](https://modelcontextprotocol.io/) 的语雀全功能 MCP Server。62 个工具,15 个域——每个语雀 OpenAPI 端点一个专用工具。
|
|
21
21
|
|
|
22
22
|
## 为什么选这个
|
|
23
23
|
|
|
24
|
-
- **19 →
|
|
24
|
+
- **19 → 62 工具** — 比官方 [yuque-mcp-server](https://github.com/yuque/yuque-mcp-server) 多 3 倍覆盖
|
|
25
25
|
- **双传输模式** — stdio + HTTP SSE,共享注册中心,修改无需重启
|
|
26
26
|
- **模块化架构** — 15 个域,barrel export,唯一注册中心
|
|
27
27
|
- **完整 API 覆盖** — 团队、回收站、上传、统计、版本、画板——补全官方缺失
|
|
28
|
-
- **[Skill 层](https://github.com/yehuoshun/yuque-ai-skills)** —
|
|
28
|
+
- **[Skill 层](https://github.com/yehuoshun/yuque-ai-skills)** — 62 个 AI Agent 使用指导
|
|
29
29
|
|
|
30
30
|
## 目录
|
|
31
31
|
|
|
@@ -60,7 +60,7 @@ npm run dev:http # HTTP SSE 模式 (http://localhost:3099)
|
|
|
60
60
|
|
|
61
61
|
| 域 | 工具数 | 亮点 |
|
|
62
62
|
|--------|-------|------------|
|
|
63
|
-
| **doc** |
|
|
63
|
+
| **doc** | 15 | CRUD、版本管理、Diff、批量获取、URL/文件导入、跨库复制、导出、资源下载 |
|
|
64
64
|
| **repo** | 8 | CRUD、批量获取、跨库复制、全量导出(TOC 结构 + INDEX/GRAPH) |
|
|
65
65
|
| **toc** | 3 | 获取、更新、批量更新(createTitle/appendNode/removeNode/moveNode) |
|
|
66
66
|
| **search** | 2 | 通用搜索 + RAG 增强搜索 |
|
|
@@ -75,7 +75,7 @@ npm run dev:http # HTTP SSE 模式 (http://localhost:3099)
|
|
|
75
75
|
| **rss** | 3 | 数据源列表、抓取+去重+写入、定时策略分析 |
|
|
76
76
|
| **crawler** | 4 | 抓取、CSS 提取、去重写入、定时策略分析 |
|
|
77
77
|
| **kv** | 4 | 增删查列——增量分片,单文档 250KB 上限 |
|
|
78
|
-
| **合计** | **
|
|
78
|
+
| **合计** | **62** | |
|
|
79
79
|
|
|
80
80
|
完整工具文档见 [SKILL.md](SKILL.md) 或 [yuque-ai-skills](https://github.com/yehuoshun/yuque-ai-skills)。
|
|
81
81
|
|
|
@@ -83,13 +83,13 @@ npm run dev:http # HTTP SSE 模式 (http://localhost:3099)
|
|
|
83
83
|
|
|
84
84
|
| 功能 | 官方 yuque-mcp-server | yuque-ai-mcp |
|
|
85
85
|
|---------|--------------------------|--------------|
|
|
86
|
-
| 工具数 | 19 | **
|
|
86
|
+
| 工具数 | 19 | **62** |
|
|
87
87
|
| 粒度 | 粗粒度 | **细粒度**(1 端点 = 1 工具) |
|
|
88
88
|
| 团队、回收站、上传、统计 | ❌ | ✅ |
|
|
89
89
|
| 版本、Diff、跨库复制 | ❌ | ✅ |
|
|
90
90
|
| 传输模式 | 仅 stdio | **stdio + HTTP SSE** |
|
|
91
91
|
| 配置 | 环境变量 | **config.json**(token + cookie) |
|
|
92
|
-
| Skill 层 | ❌ | ✅
|
|
92
|
+
| Skill 层 | ❌ | ✅ 62 指导 |
|
|
93
93
|
|
|
94
94
|
## 架构
|
|
95
95
|
|
package/SKILL.md
CHANGED
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
| `yuque_update_group_user` | 变更团队成员角色 |
|
|
39
39
|
| `yuque_delete_group_user` | 删除团队成员 |
|
|
40
40
|
|
|
41
|
-
### doc(
|
|
41
|
+
### doc(15 工具)
|
|
42
42
|
| 工具 | 说明 |
|
|
43
43
|
|------|------|
|
|
44
44
|
| `yuque_list_docs` | 获取知识库文档列表 |
|
|
@@ -51,7 +51,8 @@
|
|
|
51
51
|
| `yuque_get_doc_version_detail` | 获取文档历史版本详情 |
|
|
52
52
|
| `yuque_diff_doc_versions` | 对比两个版本的行级差异 |
|
|
53
53
|
| `yuque_copy_doc` | 单文档跨库复制 |
|
|
54
|
-
| `yuque_export_doc` | 导出单篇文档为 Markdown
|
|
54
|
+
| `yuque_export_doc` | 导出单篇文档为 Markdown 文件(不含资源下载,需调 yuque_export_resources) |
|
|
55
|
+
| `yuque_export_resources` | 下载文档中的图片/附件到本地目录,返回 URL→本地路径映射 |
|
|
55
56
|
| `yuque_import_url` | 从网页 URL 导入文档 |
|
|
56
57
|
| `yuque_import_file` | 从本地文件导入文档(direct/upload_assets/embed_assets) |
|
|
57
58
|
| `yuque_embed_url` | 生成文档嵌入阅读器 URL |
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { apiPost } from "../common/api-client.js";
|
|
7
7
|
import { handleApiCall } from "../common/format.js";
|
|
8
|
-
import { requiredString } from "../common/validate.js";
|
|
8
|
+
import { check, requiredString } from "../common/validate.js";
|
|
9
9
|
export const boardCreate = {
|
|
10
10
|
name: "yuque_create_board",
|
|
11
11
|
description: "Create a board resource (mindmap/flowchart/architecture diagram) in a document. POST /yfm/boards. 详见 references/api/board_api.md",
|
|
@@ -22,7 +22,7 @@ export const boardCreate = {
|
|
|
22
22
|
},
|
|
23
23
|
async handler(args) {
|
|
24
24
|
// @validate
|
|
25
|
-
const __v = requiredString(args?.dsl, "dsl");
|
|
25
|
+
const __v = check(requiredString(args?.type, "type"), requiredString(args?.dsl, "dsl"));
|
|
26
26
|
if (__v)
|
|
27
27
|
return __v;
|
|
28
28
|
const docId = args?.doc_id;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-board.js","sourceRoot":"","sources":["../../src/board/create-board.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"create-board.js","sourceRoot":"","sources":["../../src/board/create-board.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE9D,MAAM,CAAC,MAAM,WAAW,GAAY;IAClC,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,kIAAkI;IAE/I,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;YACpF,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+CAA+C,EAAE;YACrF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gEAAgE,EAAE;YACvG,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2DAA2D,EAAE;YACjG,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sEAAsE,EAAE;SAC9H;QACD,QAAQ,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC;KAC1B;IAED,KAAK,CAAC,OAAO,CAAC,IAAI;QAChB,YAAY;QACZ,MAAM,GAAG,GAAG,KAAK,CACf,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,EAClC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CACjC,CAAC;QACF,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,EAAE,MAA4B,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,EAAE,GAAyB,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,EAAE,IAAc,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,EAAE,GAAa,CAAC;QAChC,MAAM,WAAW,GAAG,IAAI,EAAE,oBAA0C,CAAC;QAErE,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC;YACnB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,0CAA0C,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBAC1H,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAA4B,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAC/E,IAAI,KAAK;YAAE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;QAClC,IAAI,GAAG;YAAE,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC;QAC3B,IAAI,WAAW;YAAE,OAAO,CAAC,oBAAoB,GAAG,WAAW,CAAC;QAE5D,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;QACnE,OAAO,aAAa,CAAC,IAAI,EAAE,SAAgB,CAAC,CAAC;IAC/C,CAAC;CACF,CAAC"}
|
|
@@ -12,6 +12,8 @@ const cfg = loadConfig();
|
|
|
12
12
|
const MAX_RETRIES = 3;
|
|
13
13
|
/** 基延迟(ms) */
|
|
14
14
|
const BASE_DELAY = 1000;
|
|
15
|
+
/** 单次请求超时(ms) */
|
|
16
|
+
const REQUEST_TIMEOUT = 30_000;
|
|
15
17
|
/** 是否应该重试:网络异常、429、5xx */
|
|
16
18
|
function shouldRetry(res) {
|
|
17
19
|
if (!res)
|
|
@@ -24,8 +26,10 @@ function sleep(ms) {
|
|
|
24
26
|
}
|
|
25
27
|
/** 执行 fetch 并自动重试 */
|
|
26
28
|
async function fetchWithRetry(url, options, context, attempt = 1) {
|
|
29
|
+
const controller = new AbortController();
|
|
30
|
+
const timer = setTimeout(() => controller.abort(), REQUEST_TIMEOUT);
|
|
27
31
|
try {
|
|
28
|
-
const res = await fetch(url, options);
|
|
32
|
+
const res = await fetch(url, { ...options, signal: controller.signal });
|
|
29
33
|
if (shouldRetry(res) && attempt <= MAX_RETRIES) {
|
|
30
34
|
const delay = BASE_DELAY * Math.pow(2, attempt - 1);
|
|
31
35
|
// 重试日志仅在 DEBUG 环境变量设置时输出
|
|
@@ -46,6 +50,9 @@ async function fetchWithRetry(url, options, context, attempt = 1) {
|
|
|
46
50
|
}
|
|
47
51
|
throw err;
|
|
48
52
|
}
|
|
53
|
+
finally {
|
|
54
|
+
clearTimeout(timer);
|
|
55
|
+
}
|
|
49
56
|
}
|
|
50
57
|
/** API 调用结果的类型 guard:检查是否是 MCP error */
|
|
51
58
|
export function isErrorResult(result) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/common/api-client.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;AAEzB,aAAa;AACb,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,cAAc;AACd,MAAM,UAAU,GAAG,IAAI,CAAC;AAExB,0BAA0B;AAC1B,SAAS,WAAW,CAAC,GAAoB;IACvC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC,CAAC,OAAO;IAC9B,OAAO,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC;AACvE,CAAC;AAED,cAAc;AACd,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,qBAAqB;AACrB,KAAK,UAAU,cAAc,CAC3B,GAAW,EACX,OAAoB,EACpB,OAAe,EACf,OAAO,GAAG,CAAC;IAEX,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/common/api-client.ts"],"names":[],"mappings":"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"}
|
package/dist/common/config.d.ts
CHANGED
|
@@ -58,7 +58,7 @@ interface Config {
|
|
|
58
58
|
export declare function loadConfig(): Config;
|
|
59
59
|
/** 从 config 加载 RSS 源定义 */
|
|
60
60
|
export declare function loadRssSources(): Record<string, RssSourceDef>;
|
|
61
|
-
/** 持久化 config
|
|
61
|
+
/** 持久化 config 到文件(记住首次加载路径,避免写到不同文件) */
|
|
62
62
|
export declare function saveConfig(): void;
|
|
63
63
|
/** 解析 slug:`{book_id}/{doc_id}` → { bookId, docId } */
|
|
64
64
|
export declare function parseSlug(slug: string): {
|
package/dist/common/config.js
CHANGED
|
@@ -31,10 +31,12 @@ function findConfigPath() {
|
|
|
31
31
|
return resolve(homedir(), ".yuque-mcp", "config.json");
|
|
32
32
|
}
|
|
33
33
|
let _config = null;
|
|
34
|
+
let _configPath = null;
|
|
34
35
|
export function loadConfig() {
|
|
35
36
|
if (_config)
|
|
36
37
|
return _config;
|
|
37
38
|
const configPath = findConfigPath();
|
|
39
|
+
_configPath = configPath;
|
|
38
40
|
try {
|
|
39
41
|
const raw = readFileSync(configPath, "utf-8");
|
|
40
42
|
_config = JSON.parse(raw);
|
|
@@ -53,11 +55,11 @@ export function loadConfig() {
|
|
|
53
55
|
export function loadRssSources() {
|
|
54
56
|
return loadConfig().rss?.sources ?? {};
|
|
55
57
|
}
|
|
56
|
-
/** 持久化 config
|
|
58
|
+
/** 持久化 config 到文件(记住首次加载路径,避免写到不同文件) */
|
|
57
59
|
export function saveConfig() {
|
|
58
60
|
if (!_config)
|
|
59
61
|
return;
|
|
60
|
-
const configPath = findConfigPath();
|
|
62
|
+
const configPath = _configPath || findConfigPath();
|
|
61
63
|
writeFileSync(configPath, JSON.stringify(_config, null, 2) + "\n", "utf-8");
|
|
62
64
|
}
|
|
63
65
|
/** 解析 slug:`{book_id}/{doc_id}` → { bookId, docId } */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/common/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,2DAA2D;AAC3D,SAAS,cAAc;IACrB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;IAC3E,IAAI,MAAM,KAAK,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QAC9C,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,mBAAmB,CAAC,CAAC;IAC5D,IAAI,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;IACjE,IAAI,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1C,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC;IAClE,IAAI,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACxC,OAAO,OAAO,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;AACzD,CAAC;AAqDD,IAAI,OAAO,GAAkB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/common/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* common/diff — 纯函数 LCS diff 算法
|
|
3
|
+
*
|
|
4
|
+
* 不依赖外部库,零依赖。
|
|
5
|
+
* 被 diff-doc.ts 等工具共用。
|
|
6
|
+
*/
|
|
7
|
+
export interface DiffLine {
|
|
8
|
+
type: "added" | "removed" | "unchanged";
|
|
9
|
+
line: string;
|
|
10
|
+
}
|
|
11
|
+
/** 对两段文本做逐行 LCS diff,返回 diff 行列表 */
|
|
12
|
+
export declare function diffLines(oldText: string, newText: string): DiffLine[];
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* common/diff — 纯函数 LCS diff 算法
|
|
3
|
+
*
|
|
4
|
+
* 不依赖外部库,零依赖。
|
|
5
|
+
* 被 diff-doc.ts 等工具共用。
|
|
6
|
+
*/
|
|
7
|
+
/** 对两段文本做逐行 LCS diff,返回 diff 行列表 */
|
|
8
|
+
export function diffLines(oldText, newText) {
|
|
9
|
+
const oldLines = oldText.split("\n");
|
|
10
|
+
const newLines = newText.split("\n");
|
|
11
|
+
// LCS 表
|
|
12
|
+
const m = oldLines.length;
|
|
13
|
+
const n = newLines.length;
|
|
14
|
+
const dp = Array.from({ length: m + 1 }, () => new Array(n + 1).fill(0));
|
|
15
|
+
for (let i = 1; i <= m; i++) {
|
|
16
|
+
for (let j = 1; j <= n; j++) {
|
|
17
|
+
if (oldLines[i - 1] === newLines[j - 1]) {
|
|
18
|
+
dp[i][j] = dp[i - 1][j - 1] + 1;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
// 回溯
|
|
26
|
+
const result = [];
|
|
27
|
+
let i = m, j = n;
|
|
28
|
+
const temp = [];
|
|
29
|
+
while (i > 0 || j > 0) {
|
|
30
|
+
if (i > 0 && j > 0 && oldLines[i - 1] === newLines[j - 1]) {
|
|
31
|
+
temp.push({ type: "unchanged", line: oldLines[i - 1] });
|
|
32
|
+
i--;
|
|
33
|
+
j--;
|
|
34
|
+
}
|
|
35
|
+
else if (j > 0 && (i === 0 || dp[i][j - 1] >= dp[i - 1][j])) {
|
|
36
|
+
temp.push({ type: "added", line: newLines[j - 1] });
|
|
37
|
+
j--;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
temp.push({ type: "removed", line: oldLines[i - 1] });
|
|
41
|
+
i--;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return temp.reverse();
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/common/diff.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,oCAAoC;AACpC,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,OAAe;IACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAErC,QAAQ;IACR,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC1B,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC1B,MAAM,EAAE,GAAe,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAErF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACxC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK;IACL,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB,MAAM,IAAI,GAAe,EAAE,CAAC;IAE5B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACxD,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACpD,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;YACtD,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;AACxB,CAAC"}
|
|
@@ -8,8 +8,8 @@ export interface ResourceRef {
|
|
|
8
8
|
localPath: string;
|
|
9
9
|
type: "image" | "attachment";
|
|
10
10
|
}
|
|
11
|
-
/** 从 body_html
|
|
12
|
-
export declare function extractResources(bodyHtml: string
|
|
11
|
+
/** 从 body_html 中提取所有资源引用。localPath 为相对于 outputDir 的路径(如 images/foo.png) */
|
|
12
|
+
export declare function extractResources(bodyHtml: string): ResourceRef[];
|
|
13
13
|
export interface DownloadResult {
|
|
14
14
|
url: string;
|
|
15
15
|
localPath: string;
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
import { writeFile } from "node:fs/promises";
|
|
7
7
|
import { join } from "node:path";
|
|
8
8
|
import { unescapeHtml } from "./text-utils.js";
|
|
9
|
-
/** 从 body_html
|
|
10
|
-
export function extractResources(bodyHtml
|
|
9
|
+
/** 从 body_html 中提取所有资源引用。localPath 为相对于 outputDir 的路径(如 images/foo.png) */
|
|
10
|
+
export function extractResources(bodyHtml) {
|
|
11
11
|
const resources = [];
|
|
12
12
|
const seen = new Set();
|
|
13
13
|
// 提取 <img src="...">
|
|
@@ -19,7 +19,7 @@ export function extractResources(bodyHtml, imagesDir, attachmentsDir) {
|
|
|
19
19
|
continue;
|
|
20
20
|
seen.add(url);
|
|
21
21
|
const name = urlToFilename(url);
|
|
22
|
-
resources.push({ url, localPath: join(
|
|
22
|
+
resources.push({ url, localPath: join("images", name), type: "image" });
|
|
23
23
|
}
|
|
24
24
|
// 提取 Markdown 图片 
|
|
25
25
|
const mdImgRegex = /!\[.*?\]\(([^)]+)\)/g;
|
|
@@ -29,7 +29,7 @@ export function extractResources(bodyHtml, imagesDir, attachmentsDir) {
|
|
|
29
29
|
continue;
|
|
30
30
|
seen.add(url);
|
|
31
31
|
const name = urlToFilename(url);
|
|
32
|
-
resources.push({ url, localPath: join(
|
|
32
|
+
resources.push({ url, localPath: join("images", name), type: "image" });
|
|
33
33
|
}
|
|
34
34
|
return resources;
|
|
35
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export-common.js","sourceRoot":"","sources":["../../src/common/export-common.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAU/C,
|
|
1
|
+
{"version":3,"file":"export-common.js","sourceRoot":"","sources":["../../src/common/export-common.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAU/C,2EAA2E;AAC3E,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,MAAM,SAAS,GAAkB,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,qBAAqB;IACrB,MAAM,QAAQ,GAAG,0BAA0B,CAAC;IAC5C,IAAI,KAAK,CAAC;IACV,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAChC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,0BAA0B;IAC1B,MAAM,UAAU,GAAG,sBAAsB,CAAC;IAC1C,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;QAChC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,kBAAkB;AAClB,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,OAAO,KAAK,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAC9B,CAAC;AACH,CAAC;AAWD,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAW,EACX,QAAgB,EAChB,KAAa;IAEb,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;QAE3D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAC3B,OAAO,EAAE;gBACP,cAAc,EAAE,KAAK;gBACrB,YAAY,EAAE,oBAAoB;aACnC;YACD,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,YAAY,CAAC,KAAK,CAAC,CAAC;QAEpB,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;QACnF,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACpD,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACrD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,GAAG;YACH,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,uDAAuD;AAEvD,MAAM,UAAU,iBAAiB,CAAC,GAOjC;IACC,OAAO;QACL,KAAK;QACL,WAAW,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG;QAC5C,SAAS,GAAG,CAAC,IAAI,EAAE;QACnB,YAAY,GAAG,CAAC,UAAU,EAAE;QAC5B,YAAY,GAAG,CAAC,UAAU,EAAE;QAC5B,eAAe,GAAG,CAAC,UAAU,EAAE;QAC/B,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,iBAAiB,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,KAAK;QACL,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,qDAAqD;AAErD,mBAAmB;AACnB,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED,4BAA4B;AAC5B,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,EAAE,GAAG,IAAI,CAAC;IAEd,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC7E,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9E,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/E,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,UAAU,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChF,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,WAAW,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACjF,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAElF,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,wCAAwC,EAAE,QAAQ,CAAC,CAAC;IACpE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,gCAAgC,EAAE,MAAM,CAAC,CAAC;IAE1D,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,yCAAyC,EAAE,UAAU,CAAC,CAAC;IACvE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,mCAAmC,EAAE,SAAS,CAAC,CAAC;IAEhE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACtC,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEzE,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,6CAA6C,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACnH,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;IAEtD,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,gDAAgD,EAAE,QAAQ,CAAC,CAAC;IAC5E,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAE3C,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAChC,EAAE,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;IACtB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAEnC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/common/format.d.ts
CHANGED
|
@@ -112,6 +112,51 @@ interface ApiResponse<T> {
|
|
|
112
112
|
data?: T;
|
|
113
113
|
meta?: unknown;
|
|
114
114
|
}
|
|
115
|
+
export declare function formatHello(data: ApiResponse<{
|
|
116
|
+
message: string;
|
|
117
|
+
}> | {
|
|
118
|
+
message: string;
|
|
119
|
+
}): {
|
|
120
|
+
message: string;
|
|
121
|
+
};
|
|
122
|
+
interface YuqueSearchResultRaw {
|
|
123
|
+
id: number;
|
|
124
|
+
type?: string;
|
|
125
|
+
title: string;
|
|
126
|
+
summary?: string;
|
|
127
|
+
url?: string;
|
|
128
|
+
info?: string;
|
|
129
|
+
target?: {
|
|
130
|
+
id: number;
|
|
131
|
+
slug?: string;
|
|
132
|
+
title?: string;
|
|
133
|
+
book_id?: number;
|
|
134
|
+
word_count?: number;
|
|
135
|
+
updated_at?: string;
|
|
136
|
+
content_updated_at?: string;
|
|
137
|
+
book?: {
|
|
138
|
+
id?: number;
|
|
139
|
+
name?: string;
|
|
140
|
+
slug?: string;
|
|
141
|
+
namespace?: string;
|
|
142
|
+
};
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
export declare function formatSearchResult(data: YuqueSearchResultRaw): {
|
|
146
|
+
id: number;
|
|
147
|
+
title: string;
|
|
148
|
+
summary: string;
|
|
149
|
+
url: string;
|
|
150
|
+
info: string;
|
|
151
|
+
doc_id: number;
|
|
152
|
+
slug: string;
|
|
153
|
+
book_id: number | undefined;
|
|
154
|
+
book_name: string;
|
|
155
|
+
book_slug: string;
|
|
156
|
+
namespace: string;
|
|
157
|
+
word_count: number | undefined;
|
|
158
|
+
updated_at: string;
|
|
159
|
+
};
|
|
115
160
|
export declare function formatUser(data: ApiResponse<YuqueUserRaw> | YuqueUserRaw): {
|
|
116
161
|
id: number;
|
|
117
162
|
login: string;
|
package/dist/common/format.js
CHANGED
|
@@ -3,6 +3,28 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 默认精简输出,传 raw=true 可获取全量原始 JSON
|
|
5
5
|
*/
|
|
6
|
+
// ── Hello ─────────────────────────────────────────────────────
|
|
7
|
+
export function formatHello(data) {
|
|
8
|
+
const d = data.data ?? data;
|
|
9
|
+
return { message: d.message };
|
|
10
|
+
}
|
|
11
|
+
export function formatSearchResult(data) {
|
|
12
|
+
return {
|
|
13
|
+
id: data.id,
|
|
14
|
+
title: data.title?.replace(/<em>|<\/em>/g, "") ?? "",
|
|
15
|
+
summary: data.summary?.replace(/<em>|<\/em>/g, "") ?? "",
|
|
16
|
+
url: data.url ?? "",
|
|
17
|
+
info: data.info ?? "",
|
|
18
|
+
doc_id: data.target?.id ?? data.id,
|
|
19
|
+
slug: data.target?.slug ?? "",
|
|
20
|
+
book_id: data.target?.book_id,
|
|
21
|
+
book_name: data.target?.book?.name ?? "",
|
|
22
|
+
book_slug: data.target?.book?.slug ?? "",
|
|
23
|
+
namespace: data.target?.book?.namespace ?? "",
|
|
24
|
+
word_count: data.target?.word_count,
|
|
25
|
+
updated_at: data.target?.content_updated_at ?? data.target?.updated_at ?? "",
|
|
26
|
+
};
|
|
27
|
+
}
|
|
6
28
|
// ── User ──────────────────────────────────────────────────────
|
|
7
29
|
export function formatUser(data) {
|
|
8
30
|
const d = data.data ?? data;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/common/format.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/common/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* common/html-cleaner — HTML 内容提取与清洗
|
|
3
|
+
*
|
|
4
|
+
* 被 import-url.ts 等工具共用。
|
|
5
|
+
* 职责:从原始 HTML 中提取可读正文,转为 Markdown 或保留 HTML 格式。
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* 从原始 HTML 中提取并清洗正文内容。
|
|
9
|
+
*
|
|
10
|
+
* @param html 原始 HTML 字符串
|
|
11
|
+
* @param format 输出格式:markdown(转纯文本+链接)或 html(保留 HTML 结构)
|
|
12
|
+
* @returns 清洗后的内容字符串
|
|
13
|
+
*/
|
|
14
|
+
export declare function extractAndCleanContent(html: string, format: "markdown" | "html"): string;
|
|
15
|
+
/**
|
|
16
|
+
* 按 format 追尾源链接:markdown 用 appendSourceLink,html 用 HTML 格式
|
|
17
|
+
*/
|
|
18
|
+
export declare function appendSourceLinkByFormat(body: string, sourceUrl: string, sourceTitle: string, format: string): string;
|