feishu-docs-cli 0.1.0-beta.10
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/LICENSE +21 -0
- package/README.md +403 -0
- package/README.zh.md +402 -0
- package/bin/feishu-docs.js +8 -0
- package/dist/auth.d.ts +76 -0
- package/dist/auth.js +512 -0
- package/dist/auth.js.map +1 -0
- package/dist/cli.d.ts +5 -0
- package/dist/cli.js +197 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +28 -0
- package/dist/client.js +256 -0
- package/dist/client.js.map +1 -0
- package/dist/commands/authorize.d.ts +12 -0
- package/dist/commands/authorize.js +73 -0
- package/dist/commands/authorize.js.map +1 -0
- package/dist/commands/cat.d.ts +6 -0
- package/dist/commands/cat.js +159 -0
- package/dist/commands/cat.js.map +1 -0
- package/dist/commands/cp.d.ts +9 -0
- package/dist/commands/cp.js +70 -0
- package/dist/commands/cp.js.map +1 -0
- package/dist/commands/create.d.ts +6 -0
- package/dist/commands/create.js +120 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/delete.d.ts +6 -0
- package/dist/commands/delete.js +91 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/info.d.ts +6 -0
- package/dist/commands/info.js +69 -0
- package/dist/commands/info.js.map +1 -0
- package/dist/commands/install-skill.d.ts +5 -0
- package/dist/commands/install-skill.js +28 -0
- package/dist/commands/install-skill.js.map +1 -0
- package/dist/commands/login.d.ts +10 -0
- package/dist/commands/login.js +93 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/ls.d.ts +6 -0
- package/dist/commands/ls.js +79 -0
- package/dist/commands/ls.js.map +1 -0
- package/dist/commands/mkdir.d.ts +6 -0
- package/dist/commands/mkdir.js +49 -0
- package/dist/commands/mkdir.js.map +1 -0
- package/dist/commands/mv.d.ts +9 -0
- package/dist/commands/mv.js +72 -0
- package/dist/commands/mv.js.map +1 -0
- package/dist/commands/read.d.ts +6 -0
- package/dist/commands/read.js +439 -0
- package/dist/commands/read.js.map +1 -0
- package/dist/commands/search.d.ts +7 -0
- package/dist/commands/search.js +92 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/share.d.ts +13 -0
- package/dist/commands/share.js +266 -0
- package/dist/commands/share.js.map +1 -0
- package/dist/commands/spaces.d.ts +6 -0
- package/dist/commands/spaces.js +43 -0
- package/dist/commands/spaces.js.map +1 -0
- package/dist/commands/tree.d.ts +6 -0
- package/dist/commands/tree.js +101 -0
- package/dist/commands/tree.js.map +1 -0
- package/dist/commands/update.d.ts +9 -0
- package/dist/commands/update.js +217 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/wiki.d.ts +6 -0
- package/dist/commands/wiki.js +286 -0
- package/dist/commands/wiki.js.map +1 -0
- package/dist/parser/block-types.d.ts +141 -0
- package/dist/parser/block-types.js +167 -0
- package/dist/parser/block-types.js.map +1 -0
- package/dist/parser/blocks-to-md.d.ts +26 -0
- package/dist/parser/blocks-to-md.js +666 -0
- package/dist/parser/blocks-to-md.js.map +1 -0
- package/dist/parser/text-elements.d.ts +13 -0
- package/dist/parser/text-elements.js +91 -0
- package/dist/parser/text-elements.js.map +1 -0
- package/dist/scopes.d.ts +21 -0
- package/dist/scopes.js +48 -0
- package/dist/scopes.js.map +1 -0
- package/dist/services/block-writer.d.ts +29 -0
- package/dist/services/block-writer.js +131 -0
- package/dist/services/block-writer.js.map +1 -0
- package/dist/services/doc-blocks.d.ts +8 -0
- package/dist/services/doc-blocks.js +26 -0
- package/dist/services/doc-blocks.js.map +1 -0
- package/dist/services/markdown-convert.d.ts +68 -0
- package/dist/services/markdown-convert.js +217 -0
- package/dist/services/markdown-convert.js.map +1 -0
- package/dist/services/wiki-nodes.d.ts +20 -0
- package/dist/services/wiki-nodes.js +46 -0
- package/dist/services/wiki-nodes.js.map +1 -0
- package/dist/types/index.d.ts +236 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/document-resolver.d.ts +26 -0
- package/dist/utils/document-resolver.js +46 -0
- package/dist/utils/document-resolver.js.map +1 -0
- package/dist/utils/drive-types.d.ts +4 -0
- package/dist/utils/drive-types.js +16 -0
- package/dist/utils/drive-types.js.map +1 -0
- package/dist/utils/errors.d.ts +23 -0
- package/dist/utils/errors.js +114 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/member.d.ts +11 -0
- package/dist/utils/member.js +30 -0
- package/dist/utils/member.js.map +1 -0
- package/dist/utils/scope-prompt.d.ts +39 -0
- package/dist/utils/scope-prompt.js +134 -0
- package/dist/utils/scope-prompt.js.map +1 -0
- package/dist/utils/url-parser.d.ts +5 -0
- package/dist/utils/url-parser.js +55 -0
- package/dist/utils/url-parser.js.map +1 -0
- package/dist/utils/validate.d.ts +8 -0
- package/dist/utils/validate.js +15 -0
- package/dist/utils/validate.js.map +1 -0
- package/dist/utils/version.d.ts +12 -0
- package/dist/utils/version.js +128 -0
- package/dist/utils/version.js.map +1 -0
- package/package.json +53 -0
- package/skills/feishu-docs/SKILL.md +194 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blocks-to-md.js","sourceRoot":"","sources":["../../src/parser/blocks-to-md.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert Feishu TextRun elements to/from Markdown inline format.
|
|
3
|
+
*/
|
|
4
|
+
import { TextElement } from "../types/index.js";
|
|
5
|
+
export interface RenderCtx {
|
|
6
|
+
userNameMap?: Map<string, string>;
|
|
7
|
+
imageUrlMap?: Map<string, string>;
|
|
8
|
+
warnings?: string[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Render a list of text elements to Markdown inline string.
|
|
12
|
+
*/
|
|
13
|
+
export declare function elementsToMarkdown(elements: TextElement[] | undefined, ctx?: RenderCtx): string;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert Feishu TextRun elements to/from Markdown inline format.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Escape Markdown special characters in plain text.
|
|
6
|
+
*/
|
|
7
|
+
function escapeMarkdown(text) {
|
|
8
|
+
return text.replace(/([\\*_`~\[\]|<>#!])/g, "\\$1");
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Render a list of text elements to Markdown inline string.
|
|
12
|
+
*/
|
|
13
|
+
export function elementsToMarkdown(elements, ctx) {
|
|
14
|
+
if (!elements || elements.length === 0)
|
|
15
|
+
return "";
|
|
16
|
+
const userNameMap = ctx?.userNameMap;
|
|
17
|
+
return elements
|
|
18
|
+
.map((el) => {
|
|
19
|
+
if (el.text_run) {
|
|
20
|
+
return textRunToMarkdown(el.text_run);
|
|
21
|
+
}
|
|
22
|
+
if (el.equation) {
|
|
23
|
+
const content = (el.equation.content || "").trim();
|
|
24
|
+
// Use $$ for block-level (sole element), $ for inline
|
|
25
|
+
if (elements.length === 1) {
|
|
26
|
+
return `$$${content}$$`;
|
|
27
|
+
}
|
|
28
|
+
return `$${content}$`;
|
|
29
|
+
}
|
|
30
|
+
if (el.mention_user) {
|
|
31
|
+
const uid = el.mention_user.user_id || "";
|
|
32
|
+
const name = (userNameMap && userNameMap.get(uid)) ||
|
|
33
|
+
el.mention_user
|
|
34
|
+
.user_name ||
|
|
35
|
+
el.mention_user.name;
|
|
36
|
+
if (name)
|
|
37
|
+
return `@${name}`;
|
|
38
|
+
// Fallback: show shortened user_id
|
|
39
|
+
return `@[用户](feishu://user/${uid})`;
|
|
40
|
+
}
|
|
41
|
+
if (el.mention_doc) {
|
|
42
|
+
const title = el.mention_doc.title || "文档";
|
|
43
|
+
const url = el.mention_doc.url || "";
|
|
44
|
+
return url ? `[${title}](${url})` : title;
|
|
45
|
+
}
|
|
46
|
+
return "";
|
|
47
|
+
})
|
|
48
|
+
.join("");
|
|
49
|
+
}
|
|
50
|
+
function textRunToMarkdown(textRun) {
|
|
51
|
+
let text = textRun.content || "";
|
|
52
|
+
if (!text)
|
|
53
|
+
return "";
|
|
54
|
+
const style = textRun.text_element_style || {};
|
|
55
|
+
// Inline code takes priority — no other formatting inside code
|
|
56
|
+
if (style.inline_code) {
|
|
57
|
+
return `\`${text}\``;
|
|
58
|
+
}
|
|
59
|
+
// Escape Markdown special characters in plain text
|
|
60
|
+
text = escapeMarkdown(text);
|
|
61
|
+
// Apply style markers to text first (before link wrapping)
|
|
62
|
+
if (style.bold && style.italic) {
|
|
63
|
+
text = `***${text}***`;
|
|
64
|
+
}
|
|
65
|
+
else if (style.bold) {
|
|
66
|
+
text = `**${text}**`;
|
|
67
|
+
}
|
|
68
|
+
else if (style.italic) {
|
|
69
|
+
text = `*${text}*`;
|
|
70
|
+
}
|
|
71
|
+
if (style.strikethrough) {
|
|
72
|
+
text = `~~${text}~~`;
|
|
73
|
+
}
|
|
74
|
+
if (style.underline) {
|
|
75
|
+
text = `<u>${text}</u>`;
|
|
76
|
+
}
|
|
77
|
+
// Link wrapping (after style markers so bold/italic wraps text, not link syntax)
|
|
78
|
+
if (style.link?.url) {
|
|
79
|
+
let url;
|
|
80
|
+
try {
|
|
81
|
+
url = decodeURIComponent(style.link.url);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
url = style.link.url;
|
|
85
|
+
}
|
|
86
|
+
url = url.replace(/[)"]/g, "");
|
|
87
|
+
text = `[${text}](${url})`;
|
|
88
|
+
}
|
|
89
|
+
return text;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=text-elements.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-elements.js","sourceRoot":"","sources":["../../src/parser/text-elements.ts"],"names":[],"mappings":"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"}
|
package/dist/scopes.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth scope catalog.
|
|
3
|
+
*
|
|
4
|
+
* BASE_SCOPES — all no-review (免审) scopes needed for core functionality.
|
|
5
|
+
* Requested during `feishu-docs login`.
|
|
6
|
+
*
|
|
7
|
+
* Feature-specific scopes are NOT maintained locally. Instead, the Feishu API
|
|
8
|
+
* is the source of truth: when an API call requires a scope the user hasn't
|
|
9
|
+
* authorized, `fetchWithAuth` detects the error (99991672 / 99991679) and
|
|
10
|
+
* extracts the required scope names from the API response.
|
|
11
|
+
*/
|
|
12
|
+
export declare const BASE_SCOPES: string[];
|
|
13
|
+
/**
|
|
14
|
+
* Merge `extra` scopes into `current`, deduplicating across both arrays,
|
|
15
|
+
* preserving order. Returns a new array; inputs are not mutated.
|
|
16
|
+
*/
|
|
17
|
+
export declare function mergeScopes(current: string[], extra: string[]): string[];
|
|
18
|
+
/**
|
|
19
|
+
* Build a human-readable hint for requesting missing scopes.
|
|
20
|
+
*/
|
|
21
|
+
export declare function buildScopeHint(missingScopes: string[]): string;
|
package/dist/scopes.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OAuth scope catalog.
|
|
3
|
+
*
|
|
4
|
+
* BASE_SCOPES — all no-review (免审) scopes needed for core functionality.
|
|
5
|
+
* Requested during `feishu-docs login`.
|
|
6
|
+
*
|
|
7
|
+
* Feature-specific scopes are NOT maintained locally. Instead, the Feishu API
|
|
8
|
+
* is the source of truth: when an API call requires a scope the user hasn't
|
|
9
|
+
* authorized, `fetchWithAuth` detects the error (99991672 / 99991679) and
|
|
10
|
+
* extracts the required scope names from the API response.
|
|
11
|
+
*/
|
|
12
|
+
export const BASE_SCOPES = [
|
|
13
|
+
// Wiki & documents
|
|
14
|
+
"wiki:wiki",
|
|
15
|
+
"docx:document",
|
|
16
|
+
"docx:document.block:convert",
|
|
17
|
+
// Embedded spreadsheets (read command, sheets/v2 API)
|
|
18
|
+
"sheets:spreadsheet:readonly",
|
|
19
|
+
// Embedded whiteboards (read command, board/v1 API)
|
|
20
|
+
"board:whiteboard:node:read",
|
|
21
|
+
// Embedded bitable / multi-dimensional tables (read command, bitable/v1 API)
|
|
22
|
+
"bitable:app:readonly",
|
|
23
|
+
];
|
|
24
|
+
/**
|
|
25
|
+
* Merge `extra` scopes into `current`, deduplicating across both arrays,
|
|
26
|
+
* preserving order. Returns a new array; inputs are not mutated.
|
|
27
|
+
*/
|
|
28
|
+
export function mergeScopes(current, extra) {
|
|
29
|
+
const seen = new Set(current);
|
|
30
|
+
const added = [];
|
|
31
|
+
for (const s of extra) {
|
|
32
|
+
if (!seen.has(s)) {
|
|
33
|
+
seen.add(s);
|
|
34
|
+
added.push(s);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return [...current, ...added];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Build a human-readable hint for requesting missing scopes.
|
|
41
|
+
*/
|
|
42
|
+
export function buildScopeHint(missingScopes) {
|
|
43
|
+
const scopeStr = missingScopes.join(" ");
|
|
44
|
+
return (`缺少以下 OAuth 权限: ${scopeStr}\n` +
|
|
45
|
+
`请运行以下命令申请(可能需要飞书管理员审核后生效):\n` +
|
|
46
|
+
` feishu-docs authorize --scope "${scopeStr}"`);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=scopes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scopes.js","sourceRoot":"","sources":["../src/scopes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,mBAAmB;IACnB,WAAW;IACX,eAAe;IACf,6BAA6B;IAC7B,sDAAsD;IACtD,6BAA6B;IAC7B,oDAAoD;IACpD,4BAA4B;IAC5B,6EAA6E;IAC7E,sBAAsB;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,OAAiB,EAAE,KAAe;IAC5D,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACZ,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,aAAuB;IACpD,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzC,OAAO,CACL,kBAAkB,QAAQ,IAAI;QAC9B,8BAA8B;QAC9B,oCAAoC,QAAQ,GAAG,CAChD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Document infrastructure: backup/restore, clearing, helpers.
|
|
3
|
+
*
|
|
4
|
+
* Note: The old block-level write functions (writeBlocks, writeTableBlock,
|
|
5
|
+
* writeNestedBlocks, writeAllBlocks) have been replaced by the Convert +
|
|
6
|
+
* Descendant API pipeline in markdown-convert.js.
|
|
7
|
+
*/
|
|
8
|
+
import { AuthInfo, Block } from "../types/index.js";
|
|
9
|
+
export declare const BACKUPS_DIR: string;
|
|
10
|
+
export declare const BATCH_SIZE: number;
|
|
11
|
+
export declare const QPS_DELAY: number;
|
|
12
|
+
export declare function sleep(ms: number): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Read body content from file path or stdin ("-").
|
|
15
|
+
*/
|
|
16
|
+
export declare function readBody(bodyArg: string): Promise<string>;
|
|
17
|
+
export declare function getDocumentInfo(authInfo: AuthInfo, documentId: string): Promise<{
|
|
18
|
+
title: string;
|
|
19
|
+
revisionId: number;
|
|
20
|
+
}>;
|
|
21
|
+
export declare function getRootChildrenCount(authInfo: AuthInfo, documentId: string): Promise<number>;
|
|
22
|
+
/**
|
|
23
|
+
* Clear all top-level children of a document (batch delete from end).
|
|
24
|
+
*/
|
|
25
|
+
export declare function clearDocument(authInfo: AuthInfo, documentId: string, revisionId: number): Promise<number>;
|
|
26
|
+
export declare function backupDocument(authInfo: AuthInfo, documentId: string): Promise<{
|
|
27
|
+
filepath: string;
|
|
28
|
+
blocks: Block[];
|
|
29
|
+
}>;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Document infrastructure: backup/restore, clearing, helpers.
|
|
3
|
+
*
|
|
4
|
+
* Note: The old block-level write functions (writeBlocks, writeTableBlock,
|
|
5
|
+
* writeNestedBlocks, writeAllBlocks) have been replaced by the Convert +
|
|
6
|
+
* Descendant API pipeline in markdown-convert.js.
|
|
7
|
+
*/
|
|
8
|
+
import { readFile, mkdir, writeFile, readdir, unlink } from "node:fs/promises";
|
|
9
|
+
import { existsSync } from "node:fs";
|
|
10
|
+
import { join, resolve, normalize } from "node:path";
|
|
11
|
+
import { homedir } from "node:os";
|
|
12
|
+
import { randomUUID } from "node:crypto";
|
|
13
|
+
import { fetchWithAuth } from "../client.js";
|
|
14
|
+
import { CliError } from "../utils/errors.js";
|
|
15
|
+
import { fetchAllBlocks } from "./doc-blocks.js";
|
|
16
|
+
export const BACKUPS_DIR = join(homedir(), ".feishu-docs", "backups");
|
|
17
|
+
export const BATCH_SIZE = 50;
|
|
18
|
+
export const QPS_DELAY = 400;
|
|
19
|
+
export function sleep(ms) {
|
|
20
|
+
return new Promise((r) => setTimeout(r, ms));
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Read body content from file path or stdin ("-").
|
|
24
|
+
*/
|
|
25
|
+
export async function readBody(bodyArg) {
|
|
26
|
+
if (bodyArg === "-") {
|
|
27
|
+
const chunks = [];
|
|
28
|
+
for await (const chunk of process.stdin) {
|
|
29
|
+
chunks.push(chunk);
|
|
30
|
+
}
|
|
31
|
+
return Buffer.concat(chunks).toString("utf8");
|
|
32
|
+
}
|
|
33
|
+
const resolvedPath = resolve(normalize(bodyArg));
|
|
34
|
+
if (!existsSync(resolvedPath)) {
|
|
35
|
+
throw new CliError("FILE_NOT_FOUND", `文件不存在: ${resolvedPath}`);
|
|
36
|
+
}
|
|
37
|
+
return readFile(resolvedPath, "utf8");
|
|
38
|
+
}
|
|
39
|
+
// --- Document info helpers ---
|
|
40
|
+
export async function getDocumentInfo(authInfo, documentId) {
|
|
41
|
+
const res = await fetchWithAuth(authInfo, `/open-apis/docx/v1/documents/${encodeURIComponent(documentId)}`);
|
|
42
|
+
const data = res?.data;
|
|
43
|
+
const doc = (data?.document || {});
|
|
44
|
+
return {
|
|
45
|
+
title: doc.title,
|
|
46
|
+
revisionId: doc.revision_id,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
export async function getRootChildrenCount(authInfo, documentId) {
|
|
50
|
+
const res = await fetchWithAuth(authInfo, `/open-apis/docx/v1/documents/${encodeURIComponent(documentId)}/blocks/${encodeURIComponent(documentId)}`, { params: { document_revision_id: -1 } });
|
|
51
|
+
return res?.data?.block?.children
|
|
52
|
+
? (res?.data).block
|
|
53
|
+
.children.length
|
|
54
|
+
: 0;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Clear all top-level children of a document (batch delete from end).
|
|
58
|
+
*/
|
|
59
|
+
export async function clearDocument(authInfo, documentId, revisionId) {
|
|
60
|
+
let rev = revisionId;
|
|
61
|
+
let remaining = await getRootChildrenCount(authInfo, documentId);
|
|
62
|
+
let conflictRetries = 0;
|
|
63
|
+
const MAX_CONFLICT_RETRIES = 5;
|
|
64
|
+
while (remaining > 0) {
|
|
65
|
+
const end = remaining;
|
|
66
|
+
const start = Math.max(0, remaining - BATCH_SIZE);
|
|
67
|
+
try {
|
|
68
|
+
const res = await fetchWithAuth(authInfo, `/open-apis/docx/v1/documents/${encodeURIComponent(documentId)}/blocks/${encodeURIComponent(documentId)}/children/batch_delete`, {
|
|
69
|
+
method: "DELETE",
|
|
70
|
+
body: { start_index: start, end_index: end },
|
|
71
|
+
params: {
|
|
72
|
+
document_revision_id: rev,
|
|
73
|
+
client_token: randomUUID(),
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
rev =
|
|
77
|
+
res?.data
|
|
78
|
+
?.document_revision_id ?? rev;
|
|
79
|
+
remaining = start;
|
|
80
|
+
conflictRetries = 0;
|
|
81
|
+
if (remaining > 0)
|
|
82
|
+
await sleep(QPS_DELAY);
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
const code = err?.apiCode ||
|
|
86
|
+
err?.code;
|
|
87
|
+
if (code === 1770064) {
|
|
88
|
+
if (++conflictRetries > MAX_CONFLICT_RETRIES) {
|
|
89
|
+
throw new CliError("API_ERROR", "文档正在被并发编辑,清空操作失败,请稍后重试");
|
|
90
|
+
}
|
|
91
|
+
const doc = await getDocumentInfo(authInfo, documentId);
|
|
92
|
+
rev = doc.revisionId;
|
|
93
|
+
remaining = await getRootChildrenCount(authInfo, documentId);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
throw err;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return rev;
|
|
101
|
+
}
|
|
102
|
+
// --- Backup helpers ---
|
|
103
|
+
export async function backupDocument(authInfo, documentId) {
|
|
104
|
+
const blocks = await fetchAllBlocks(authInfo, documentId);
|
|
105
|
+
await mkdir(BACKUPS_DIR, { recursive: true, mode: 0o700 });
|
|
106
|
+
const filename = `${documentId}-${Date.now()}.json`;
|
|
107
|
+
const filepath = join(BACKUPS_DIR, filename);
|
|
108
|
+
await writeFile(filepath, JSON.stringify(blocks, null, 2), {
|
|
109
|
+
encoding: "utf8",
|
|
110
|
+
mode: 0o600,
|
|
111
|
+
});
|
|
112
|
+
process.stderr.write(`feishu-docs: info: 备份已保存到 ${filepath}\n`);
|
|
113
|
+
await rotateBackups();
|
|
114
|
+
return { filepath, blocks };
|
|
115
|
+
}
|
|
116
|
+
async function rotateBackups() {
|
|
117
|
+
try {
|
|
118
|
+
const files = await readdir(BACKUPS_DIR);
|
|
119
|
+
const jsonFiles = files.filter((f) => f.endsWith(".json")).sort();
|
|
120
|
+
if (jsonFiles.length > 10) {
|
|
121
|
+
const toDelete = jsonFiles.slice(0, jsonFiles.length - 10);
|
|
122
|
+
for (const f of toDelete) {
|
|
123
|
+
await unlink(join(BACKUPS_DIR, f));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
catch (err) {
|
|
128
|
+
process.stderr.write(`feishu-docs: warning: 备份轮转失败: ${err.message}\n`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=block-writer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"block-writer.js","sourceRoot":"","sources":["../../src/services/block-writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared document block fetching.
|
|
3
|
+
*/
|
|
4
|
+
import { fetchWithAuth } from "../client.js";
|
|
5
|
+
/**
|
|
6
|
+
* Fetch all blocks for a document.
|
|
7
|
+
*/
|
|
8
|
+
export async function fetchAllBlocks(authInfo, documentId) {
|
|
9
|
+
const blocks = [];
|
|
10
|
+
let pageToken;
|
|
11
|
+
do {
|
|
12
|
+
const params = {
|
|
13
|
+
document_revision_id: -1,
|
|
14
|
+
page_size: 500,
|
|
15
|
+
...(pageToken && { page_token: pageToken }),
|
|
16
|
+
};
|
|
17
|
+
const res = await fetchWithAuth(authInfo, `/open-apis/docx/v1/documents/${encodeURIComponent(documentId)}/blocks`, { params });
|
|
18
|
+
const data = res?.data;
|
|
19
|
+
if (data?.items) {
|
|
20
|
+
blocks.push(...data.items);
|
|
21
|
+
}
|
|
22
|
+
pageToken = data?.has_more ? data.page_token : undefined;
|
|
23
|
+
} while (pageToken);
|
|
24
|
+
return blocks;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=doc-blocks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc-blocks.js","sourceRoot":"","sources":["../../src/services/doc-blocks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAkB,EAClB,UAAkB;IAElB,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,IAAI,SAA6B,CAAC;IAElC,GAAG,CAAC;QACF,MAAM,MAAM,GAAgD;YAC1D,oBAAoB,EAAE,CAAC,CAAC;YACxB,SAAS,EAAE,GAAG;YACd,GAAG,CAAC,SAAS,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;SAC5C,CAAC;QAEF,MAAM,GAAG,GAAG,MAAM,aAAa,CAC7B,QAAQ,EACR,gCAAgC,kBAAkB,CAAC,UAAU,CAAC,SAAS,EACvE,EAAE,MAAM,EAAE,CACX,CAAC;QAEF,MAAM,IAAI,GAAG,GAAG,EAAE,IAA2C,CAAC;QAC9D,IAAI,IAAI,EAAE,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,GAAI,IAAI,CAAC,KAAiB,CAAC,CAAC;QAC1C,CAAC;QACD,SAAS,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAE,IAAI,CAAC,UAAqB,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,CAAC,QAAQ,SAAS,EAAE;IAEpB,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert Markdown to Feishu blocks via server-side Convert API,
|
|
3
|
+
* then write to document via Descendant API.
|
|
4
|
+
*
|
|
5
|
+
* This replaces the local md-to-blocks parser + multi-step block-writer
|
|
6
|
+
* table assembly with just 2 API calls:
|
|
7
|
+
* 1. Convert API: Markdown string -> block tree (server-side parsing)
|
|
8
|
+
* 2. Descendant API: Write entire block tree in one call (no 9-row table limit)
|
|
9
|
+
*
|
|
10
|
+
* Notes:
|
|
11
|
+
* - Descendant API accepts at most 1000 blocks per call; large content is
|
|
12
|
+
* automatically split into batches at top-level block boundaries.
|
|
13
|
+
* - Read-only fields returned by Convert API (parent_id, comment_ids,
|
|
14
|
+
* merge_info) are stripped before writing to avoid validation errors.
|
|
15
|
+
*/
|
|
16
|
+
import { AuthInfo, ConvertedBlocks, Block } from "../types/index.js";
|
|
17
|
+
/**
|
|
18
|
+
* Normalize code-fence language names in markdown before sending to Convert API.
|
|
19
|
+
* Replaces unrecognized aliases with their recognized equivalents.
|
|
20
|
+
*/
|
|
21
|
+
export declare function normalizeLangNames(markdown: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Convert markdown string to Feishu block array via Convert API.
|
|
24
|
+
* Requires scope: docx:document.block:convert
|
|
25
|
+
*
|
|
26
|
+
* @returns {{ blocks: Array, firstLevelBlockIds: string[], blockIdToImageUrls: Object }}
|
|
27
|
+
*/
|
|
28
|
+
export declare function convertMarkdown(authInfo: AuthInfo, markdown: string): Promise<ConvertedBlocks>;
|
|
29
|
+
/**
|
|
30
|
+
* Sanitize blocks for the Descendant API by removing read-only fields.
|
|
31
|
+
*
|
|
32
|
+
* Strips:
|
|
33
|
+
* - top-level read-only fields: parent_id, comment_ids
|
|
34
|
+
* - table.property.merge_info (read-only attribute)
|
|
35
|
+
*
|
|
36
|
+
* Returns a new array (immutable).
|
|
37
|
+
*/
|
|
38
|
+
export declare function sanitizeBlocks(blocks: Block[]): Block[];
|
|
39
|
+
/**
|
|
40
|
+
* Split converted blocks into batches that each stay within
|
|
41
|
+
* MAX_BLOCKS_PER_CALL. Splits at top-level block boundaries so
|
|
42
|
+
* parent–child relationships are preserved within each batch.
|
|
43
|
+
*/
|
|
44
|
+
export declare function splitIntoBatches(converted: ConvertedBlocks): ConvertedBlocks[];
|
|
45
|
+
/**
|
|
46
|
+
* Write blocks to document via Descendant API.
|
|
47
|
+
* Automatically batches when block count exceeds 1000.
|
|
48
|
+
*
|
|
49
|
+
* @param {object} authInfo - Auth credentials
|
|
50
|
+
* @param {string} documentId - Target document ID
|
|
51
|
+
* @param {string} parentBlockId - Parent block (usually same as documentId for top-level)
|
|
52
|
+
* @param {object} converted - Output from convertMarkdown()
|
|
53
|
+
* @param {number} revisionId - Document revision ID
|
|
54
|
+
* @param {number} index - Insert position (0 = beginning, -1 = append to end)
|
|
55
|
+
* @returns {number} Updated revision ID
|
|
56
|
+
*/
|
|
57
|
+
export declare function writeDescendant(authInfo: AuthInfo, documentId: string, parentBlockId: string, converted: ConvertedBlocks, revisionId: number, index?: number): Promise<number>;
|
|
58
|
+
/**
|
|
59
|
+
* High-level: Convert markdown and write to document in 2 API calls.
|
|
60
|
+
*
|
|
61
|
+
* @param {object} authInfo - Auth credentials
|
|
62
|
+
* @param {string} documentId - Target document ID
|
|
63
|
+
* @param {string} markdown - Raw Markdown content
|
|
64
|
+
* @param {number} revisionId - Current document revision ID
|
|
65
|
+
* @param {number} index - Insert position (0 = beginning, -1 = append)
|
|
66
|
+
* @returns {number} Updated revision ID
|
|
67
|
+
*/
|
|
68
|
+
export declare function convertAndWrite(authInfo: AuthInfo, documentId: string, markdown: string, revisionId: number, index?: number): Promise<number>;
|