feishu-docs-cli 0.1.0-beta.2

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.
Files changed (95) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +333 -0
  3. package/README.zh.md +332 -0
  4. package/bin/feishu-docs.js +8 -0
  5. package/dist/auth.d.ts +76 -0
  6. package/dist/auth.js +512 -0
  7. package/dist/auth.js.map +1 -0
  8. package/dist/cli.d.ts +5 -0
  9. package/dist/cli.js +166 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/client.d.ts +42 -0
  12. package/dist/client.js +269 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/commands/cat.d.ts +6 -0
  15. package/dist/commands/cat.js +151 -0
  16. package/dist/commands/cat.js.map +1 -0
  17. package/dist/commands/create.d.ts +6 -0
  18. package/dist/commands/create.js +120 -0
  19. package/dist/commands/create.js.map +1 -0
  20. package/dist/commands/delete.d.ts +6 -0
  21. package/dist/commands/delete.js +89 -0
  22. package/dist/commands/delete.js.map +1 -0
  23. package/dist/commands/info.d.ts +6 -0
  24. package/dist/commands/info.js +69 -0
  25. package/dist/commands/info.js.map +1 -0
  26. package/dist/commands/login.d.ts +10 -0
  27. package/dist/commands/login.js +90 -0
  28. package/dist/commands/login.js.map +1 -0
  29. package/dist/commands/ls.d.ts +6 -0
  30. package/dist/commands/ls.js +76 -0
  31. package/dist/commands/ls.js.map +1 -0
  32. package/dist/commands/read.d.ts +6 -0
  33. package/dist/commands/read.js +404 -0
  34. package/dist/commands/read.js.map +1 -0
  35. package/dist/commands/search.d.ts +7 -0
  36. package/dist/commands/search.js +87 -0
  37. package/dist/commands/search.js.map +1 -0
  38. package/dist/commands/share.d.ts +13 -0
  39. package/dist/commands/share.js +210 -0
  40. package/dist/commands/share.js.map +1 -0
  41. package/dist/commands/spaces.d.ts +6 -0
  42. package/dist/commands/spaces.js +43 -0
  43. package/dist/commands/spaces.js.map +1 -0
  44. package/dist/commands/tree.d.ts +6 -0
  45. package/dist/commands/tree.js +101 -0
  46. package/dist/commands/tree.js.map +1 -0
  47. package/dist/commands/update.d.ts +9 -0
  48. package/dist/commands/update.js +211 -0
  49. package/dist/commands/update.js.map +1 -0
  50. package/dist/commands/wiki.d.ts +6 -0
  51. package/dist/commands/wiki.js +284 -0
  52. package/dist/commands/wiki.js.map +1 -0
  53. package/dist/parser/block-types.d.ts +141 -0
  54. package/dist/parser/block-types.js +167 -0
  55. package/dist/parser/block-types.js.map +1 -0
  56. package/dist/parser/blocks-to-md.d.ts +26 -0
  57. package/dist/parser/blocks-to-md.js +576 -0
  58. package/dist/parser/blocks-to-md.js.map +1 -0
  59. package/dist/parser/text-elements.d.ts +13 -0
  60. package/dist/parser/text-elements.js +91 -0
  61. package/dist/parser/text-elements.js.map +1 -0
  62. package/dist/services/block-writer.d.ts +30 -0
  63. package/dist/services/block-writer.js +131 -0
  64. package/dist/services/block-writer.js.map +1 -0
  65. package/dist/services/doc-blocks.d.ts +9 -0
  66. package/dist/services/doc-blocks.js +30 -0
  67. package/dist/services/doc-blocks.js.map +1 -0
  68. package/dist/services/markdown-convert.d.ts +51 -0
  69. package/dist/services/markdown-convert.js +109 -0
  70. package/dist/services/markdown-convert.js.map +1 -0
  71. package/dist/services/wiki-nodes.d.ts +21 -0
  72. package/dist/services/wiki-nodes.js +47 -0
  73. package/dist/services/wiki-nodes.js.map +1 -0
  74. package/dist/types/index.d.ts +234 -0
  75. package/dist/types/index.js +5 -0
  76. package/dist/types/index.js.map +1 -0
  77. package/dist/utils/document-resolver.d.ts +28 -0
  78. package/dist/utils/document-resolver.js +47 -0
  79. package/dist/utils/document-resolver.js.map +1 -0
  80. package/dist/utils/drive-types.d.ts +4 -0
  81. package/dist/utils/drive-types.js +16 -0
  82. package/dist/utils/drive-types.js.map +1 -0
  83. package/dist/utils/errors.d.ts +21 -0
  84. package/dist/utils/errors.js +110 -0
  85. package/dist/utils/errors.js.map +1 -0
  86. package/dist/utils/member.d.ts +11 -0
  87. package/dist/utils/member.js +30 -0
  88. package/dist/utils/member.js.map +1 -0
  89. package/dist/utils/url-parser.d.ts +5 -0
  90. package/dist/utils/url-parser.js +55 -0
  91. package/dist/utils/url-parser.js.map +1 -0
  92. package/dist/utils/validate.d.ts +8 -0
  93. package/dist/utils/validate.js +15 -0
  94. package/dist/utils/validate.js.map +1 -0
  95. package/package.json +54 -0
@@ -0,0 +1,284 @@
1
+ /**
2
+ * wiki command: Wiki space and node management.
3
+ * Subcommands: create-space, add-member, remove-member, rename, move, copy.
4
+ */
5
+ import { createClient, fetchWithAuth } from "../client.js";
6
+ import { CliError } from "../utils/errors.js";
7
+ import { resolveDocument } from "../utils/document-resolver.js";
8
+ import { validateMemberId, detectMemberType } from "../utils/member.js";
9
+ import { validateToken } from "../utils/validate.js";
10
+ /**
11
+ * Resolve a wiki node URL/token to { spaceId, nodeToken }.
12
+ */
13
+ async function resolveWikiNode(client, authInfo, input) {
14
+ const doc = await resolveDocument(client, authInfo, input);
15
+ if (!doc.spaceId || !doc.nodeToken) {
16
+ throw new CliError("INVALID_ARGS", "该输入不是知识库节点,请使用知识库文档的 URL 或 wiki token");
17
+ }
18
+ return doc;
19
+ }
20
+ // --- Subcommand: create-space ---
21
+ async function createSpace(args, globalOpts) {
22
+ const name = args.positionals[0];
23
+ if (!name) {
24
+ throw new CliError("INVALID_ARGS", "缺少知识库名称。用法: feishu-docs wiki create-space <name> [--desc <description>]");
25
+ }
26
+ const { authInfo } = await createClient(globalOpts);
27
+ const descStr = args.desc;
28
+ const body = {
29
+ name,
30
+ ...(descStr && { description: descStr }),
31
+ };
32
+ const res = await fetchWithAuth(authInfo, "/open-apis/wiki/v2/spaces", {
33
+ method: "POST",
34
+ body,
35
+ });
36
+ const resData = res?.data;
37
+ const space = resData?.space;
38
+ if (!space) {
39
+ throw new CliError("API_ERROR", "创建知识库成功但未返回 space 信息");
40
+ }
41
+ if (globalOpts.json) {
42
+ process.stdout.write(JSON.stringify({ success: true, ...space }, null, 2) + "\n");
43
+ }
44
+ else {
45
+ process.stdout.write(`已创建知识库: ${space.name}\n`);
46
+ process.stdout.write(`space_id: ${space.space_id}\n`);
47
+ }
48
+ }
49
+ // --- Subcommand: add-member ---
50
+ async function addMember(args, globalOpts) {
51
+ const spaceId = args.positionals[0];
52
+ const memberId = args.positionals[1];
53
+ if (!spaceId || !memberId) {
54
+ throw new CliError("INVALID_ARGS", "用法: feishu-docs wiki add-member <space_id> <member> [--role admin|member]");
55
+ }
56
+ validateToken(spaceId, "space_id");
57
+ validateMemberId(memberId);
58
+ const memberType = detectMemberType(memberId);
59
+ const memberRole = args.role || "member";
60
+ if (memberRole !== "admin" && memberRole !== "member") {
61
+ throw new CliError("INVALID_ARGS", `无效的角色: ${memberRole}。可选值: admin, member`);
62
+ }
63
+ const { authInfo } = await createClient(globalOpts);
64
+ let alreadyExist = false;
65
+ try {
66
+ await fetchWithAuth(authInfo, `/open-apis/wiki/v2/spaces/${encodeURIComponent(spaceId)}/members`, {
67
+ method: "POST",
68
+ body: {
69
+ member_type: memberType,
70
+ member_id: memberId,
71
+ member_role: memberRole,
72
+ },
73
+ });
74
+ }
75
+ catch (err) {
76
+ if (err.apiCode === 131008) {
77
+ alreadyExist = true;
78
+ }
79
+ else {
80
+ throw err;
81
+ }
82
+ }
83
+ if (globalOpts.json) {
84
+ process.stdout.write(JSON.stringify({
85
+ success: true,
86
+ space_id: spaceId,
87
+ member_id: memberId,
88
+ member_type: memberType,
89
+ member_role: memberRole,
90
+ already_exist: alreadyExist,
91
+ }) + "\n");
92
+ }
93
+ else {
94
+ if (alreadyExist) {
95
+ process.stdout.write(`${memberId} 已是知识库 ${spaceId} 的成员\n`);
96
+ }
97
+ else {
98
+ process.stdout.write(`已添加 ${memberId} 为知识库 ${spaceId} 的${memberRole === "admin" ? "管理员" : "成员"}\n`);
99
+ }
100
+ }
101
+ }
102
+ // --- Subcommand: remove-member ---
103
+ async function removeMember(args, globalOpts) {
104
+ const spaceId = args.positionals[0];
105
+ const memberId = args.positionals[1];
106
+ if (!spaceId || !memberId) {
107
+ throw new CliError("INVALID_ARGS", "用法: feishu-docs wiki remove-member <space_id> <member> [--role admin|member]");
108
+ }
109
+ validateToken(spaceId, "space_id");
110
+ validateMemberId(memberId);
111
+ const memberType = detectMemberType(memberId);
112
+ const memberRole = args.role || "member";
113
+ const { authInfo } = await createClient(globalOpts);
114
+ await fetchWithAuth(authInfo, `/open-apis/wiki/v2/spaces/${encodeURIComponent(spaceId)}/members/${encodeURIComponent(memberId)}`, {
115
+ method: "DELETE",
116
+ body: {
117
+ member_type: memberType,
118
+ member_role: memberRole,
119
+ },
120
+ });
121
+ if (globalOpts.json) {
122
+ process.stdout.write(JSON.stringify({
123
+ success: true,
124
+ space_id: spaceId,
125
+ removed: memberId,
126
+ }) + "\n");
127
+ }
128
+ else {
129
+ process.stdout.write(`已移除 ${memberId} 从知识库 ${spaceId}\n`);
130
+ }
131
+ }
132
+ // --- Subcommand: rename ---
133
+ async function rename(args, globalOpts) {
134
+ const input = args.positionals[0];
135
+ if (!input || !args.title) {
136
+ throw new CliError("INVALID_ARGS", "用法: feishu-docs wiki rename <url|token> --title <new_title>");
137
+ }
138
+ const { client, authInfo } = await createClient(globalOpts);
139
+ const doc = await resolveWikiNode(client, authInfo, input);
140
+ await fetchWithAuth(authInfo, `/open-apis/wiki/v2/spaces/${encodeURIComponent(doc.spaceId)}/nodes/${encodeURIComponent(doc.nodeToken)}/update_title`, {
141
+ method: "POST",
142
+ body: { title: args.title },
143
+ });
144
+ if (globalOpts.json) {
145
+ process.stdout.write(JSON.stringify({
146
+ success: true,
147
+ space_id: doc.spaceId,
148
+ node_token: doc.nodeToken,
149
+ title: args.title,
150
+ }) + "\n");
151
+ }
152
+ else {
153
+ process.stdout.write(`已重命名为: ${args.title}\n`);
154
+ }
155
+ }
156
+ // --- Subcommand: move ---
157
+ async function move(args, globalOpts) {
158
+ const input = args.positionals[0];
159
+ if (!input) {
160
+ throw new CliError("INVALID_ARGS", "用法: feishu-docs wiki move <url|token> --to <space_id> [--parent <node_token>]");
161
+ }
162
+ if (!args.to && !args.parent) {
163
+ throw new CliError("INVALID_ARGS", "至少需要 --to <space_id> 或 --parent <node_token>");
164
+ }
165
+ const { client, authInfo } = await createClient(globalOpts);
166
+ const doc = await resolveWikiNode(client, authInfo, input);
167
+ const toStr = args.to;
168
+ const parentStr = args.parent;
169
+ const body = {
170
+ ...(toStr && { target_space_id: toStr }),
171
+ ...(parentStr && { target_parent_token: parentStr }),
172
+ };
173
+ await fetchWithAuth(authInfo, `/open-apis/wiki/v2/spaces/${encodeURIComponent(doc.spaceId)}/nodes/${encodeURIComponent(doc.nodeToken)}/move`, {
174
+ method: "POST",
175
+ body,
176
+ });
177
+ if (globalOpts.json) {
178
+ process.stdout.write(JSON.stringify({
179
+ success: true,
180
+ node_token: doc.nodeToken,
181
+ from_space: doc.spaceId,
182
+ ...(toStr && { to_space: toStr }),
183
+ ...(parentStr && { to_parent: parentStr }),
184
+ }) + "\n");
185
+ }
186
+ else {
187
+ const dest = args.to ? `知识库 ${args.to}` : `节点 ${args.parent} 下`;
188
+ process.stdout.write(`已移动节点 ${doc.nodeToken} 到${dest}\n`);
189
+ }
190
+ }
191
+ // --- Subcommand: copy ---
192
+ async function copy(args, globalOpts) {
193
+ const input = args.positionals[0];
194
+ if (!input) {
195
+ throw new CliError("INVALID_ARGS", "用法: feishu-docs wiki copy <url|token> --to <space_id> [--parent <node_token>] [--title <new_title>]");
196
+ }
197
+ if (!args.to && !args.parent) {
198
+ throw new CliError("INVALID_ARGS", "至少需要 --to <space_id> 或 --parent <node_token>");
199
+ }
200
+ const { client, authInfo } = await createClient(globalOpts);
201
+ const doc = await resolveWikiNode(client, authInfo, input);
202
+ const copyToStr = args.to;
203
+ const copyParentStr = args.parent;
204
+ const copyTitleStr = args.title;
205
+ const body = {
206
+ ...(copyToStr && { target_space_id: copyToStr }),
207
+ ...(copyParentStr && { target_parent_token: copyParentStr }),
208
+ ...(copyTitleStr && { title: copyTitleStr }),
209
+ };
210
+ const res = await fetchWithAuth(authInfo, `/open-apis/wiki/v2/spaces/${encodeURIComponent(doc.spaceId)}/nodes/${encodeURIComponent(doc.nodeToken)}/copy`, {
211
+ method: "POST",
212
+ body,
213
+ });
214
+ const copyResData = res?.data;
215
+ const newNode = copyResData?.node;
216
+ if (globalOpts.json) {
217
+ process.stdout.write(JSON.stringify({
218
+ success: true,
219
+ source_node: doc.nodeToken,
220
+ ...(newNode && {
221
+ new_node_token: newNode.node_token,
222
+ new_space_id: newNode.space_id,
223
+ }),
224
+ }) + "\n");
225
+ }
226
+ else {
227
+ const dest = args.to ? `知识库 ${args.to}` : `节点 ${args.parent} 下`;
228
+ process.stdout.write(`已复制节点到${dest}\n`);
229
+ if (newNode?.node_token) {
230
+ process.stdout.write(`新节点: ${newNode.node_token}\n`);
231
+ }
232
+ }
233
+ }
234
+ // --- Meta: subcommand registry ---
235
+ export const meta = {
236
+ subcommands: {
237
+ "create-space": {
238
+ options: {
239
+ desc: { type: "string" },
240
+ },
241
+ positionals: true,
242
+ handler: createSpace,
243
+ },
244
+ "add-member": {
245
+ options: {
246
+ role: { type: "string", default: "member" },
247
+ },
248
+ positionals: true,
249
+ handler: addMember,
250
+ },
251
+ "remove-member": {
252
+ options: {
253
+ role: { type: "string", default: "member" },
254
+ },
255
+ positionals: true,
256
+ handler: removeMember,
257
+ },
258
+ rename: {
259
+ options: {
260
+ title: { type: "string" },
261
+ },
262
+ positionals: true,
263
+ handler: rename,
264
+ },
265
+ move: {
266
+ options: {
267
+ to: { type: "string" },
268
+ parent: { type: "string" },
269
+ },
270
+ positionals: true,
271
+ handler: move,
272
+ },
273
+ copy: {
274
+ options: {
275
+ to: { type: "string" },
276
+ parent: { type: "string" },
277
+ title: { type: "string" },
278
+ },
279
+ positionals: true,
280
+ handler: copy,
281
+ },
282
+ },
283
+ };
284
+ //# sourceMappingURL=wiki.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wiki.js","sourceRoot":"","sources":["../../src/commands/wiki.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * BlockType constants and code language mapping.
3
+ *
4
+ * IDs from Feishu DocX API:
5
+ * https://open.feishu.cn/document/client-docs/docs-add-on/block-type-overview
6
+ */
7
+ export declare const BlockType: {
8
+ readonly PAGE: 1;
9
+ readonly TEXT: 2;
10
+ readonly HEADING1: 3;
11
+ readonly HEADING2: 4;
12
+ readonly HEADING3: 5;
13
+ readonly HEADING4: 6;
14
+ readonly HEADING5: 7;
15
+ readonly HEADING6: 8;
16
+ readonly HEADING7: 9;
17
+ readonly HEADING8: 10;
18
+ readonly HEADING9: 11;
19
+ readonly BULLET: 12;
20
+ readonly ORDERED: 13;
21
+ readonly CODE: 14;
22
+ readonly QUOTE: 15;
23
+ readonly EQUATION: 16;
24
+ readonly TODO: 17;
25
+ readonly BITABLE: 18;
26
+ readonly CALLOUT: 19;
27
+ readonly CHAT_CARD: 20;
28
+ readonly DIAGRAM: 21;
29
+ readonly DIVIDER: 22;
30
+ readonly FILE: 23;
31
+ readonly GRID: 24;
32
+ readonly GRID_COLUMN: 25;
33
+ readonly IFRAME: 26;
34
+ readonly IMAGE: 27;
35
+ readonly ISV: 28;
36
+ readonly MINDNOTE: 29;
37
+ readonly SHEET: 30;
38
+ readonly TABLE: 31;
39
+ readonly TABLE_CELL: 32;
40
+ readonly VIEW: 33;
41
+ readonly QUOTE_CONTAINER: 34;
42
+ readonly TASK: 35;
43
+ readonly OKR: 36;
44
+ readonly OKR_OBJECTIVE: 37;
45
+ readonly OKR_KEY_RESULT: 38;
46
+ readonly OKR_PROGRESS: 39;
47
+ readonly ADDONS: 40;
48
+ readonly JIRA_ISSUE: 41;
49
+ readonly WIKI_CATALOG: 42;
50
+ readonly BOARD: 43;
51
+ readonly AGENDA: 44;
52
+ readonly AGENDA_ITEM: 45;
53
+ readonly AGENDA_ITEM_TITLE: 46;
54
+ readonly AGENDA_ITEM_CONTENT: 47;
55
+ readonly LINK_PREVIEW: 48;
56
+ readonly SOURCE_SYNCED: 49;
57
+ readonly REFERENCE_SYNCED: 50;
58
+ readonly SUB_PAGE_LIST: 51;
59
+ readonly AI_TEMPLATE: 52;
60
+ };
61
+ export declare function isHeading(type: number): boolean;
62
+ export declare function headingLevel(type: number): number;
63
+ /**
64
+ * Feishu code language enum → display name.
65
+ * Values from SDK: 0 = PlainText, 1 = ABAP, etc.
66
+ */
67
+ export declare const CODE_LANGUAGES: {
68
+ readonly 0: "plaintext";
69
+ readonly 2: "abap";
70
+ readonly 3: "ada";
71
+ readonly 4: "apache";
72
+ readonly 5: "apex";
73
+ readonly 6: "assembly";
74
+ readonly 7: "bash";
75
+ readonly 8: "c#";
76
+ readonly 9: "c++";
77
+ readonly 10: "c";
78
+ readonly 11: "cobol";
79
+ readonly 12: "css";
80
+ readonly 13: "coffeescript";
81
+ readonly 14: "d";
82
+ readonly 15: "dart";
83
+ readonly 16: "delphi";
84
+ readonly 17: "django";
85
+ readonly 18: "dockerfile";
86
+ readonly 19: "erlang";
87
+ readonly 20: "fortran";
88
+ readonly 21: "foxpro";
89
+ readonly 22: "go";
90
+ readonly 23: "groovy";
91
+ readonly 24: "html";
92
+ readonly 25: "elixir";
93
+ readonly 26: "http";
94
+ readonly 27: "haskell";
95
+ readonly 28: "json";
96
+ readonly 29: "java";
97
+ readonly 30: "javascript";
98
+ readonly 31: "julia";
99
+ readonly 32: "kotlin";
100
+ readonly 33: "latex";
101
+ readonly 34: "lisp";
102
+ readonly 35: "logo";
103
+ readonly 36: "lua";
104
+ readonly 37: "matlab";
105
+ readonly 38: "makefile";
106
+ readonly 39: "markdown";
107
+ readonly 40: "nginx";
108
+ readonly 41: "objective-c";
109
+ readonly 42: "openedgeabl";
110
+ readonly 43: "php";
111
+ readonly 44: "perl";
112
+ readonly 45: "postscript";
113
+ readonly 46: "powershell";
114
+ readonly 47: "prolog";
115
+ readonly 48: "protobuf";
116
+ readonly 49: "python";
117
+ readonly 50: "r";
118
+ readonly 51: "rpg";
119
+ readonly 52: "ruby";
120
+ readonly 53: "rust";
121
+ readonly 54: "sas";
122
+ readonly 55: "plsql";
123
+ readonly 56: "sql";
124
+ readonly 57: "scala";
125
+ readonly 58: "scheme";
126
+ readonly 59: "scratch";
127
+ readonly 60: "shell";
128
+ readonly 61: "swift";
129
+ readonly 62: "thrift";
130
+ readonly 63: "typescript";
131
+ readonly 64: "vbscript";
132
+ readonly 65: "visual basic";
133
+ readonly 66: "xml";
134
+ readonly 67: "yaml";
135
+ readonly 68: "cmake";
136
+ readonly 69: "ansi";
137
+ readonly 70: "graphql";
138
+ readonly 71: "solidity";
139
+ readonly 72: "toml";
140
+ };
141
+ export declare const LANGUAGE_TO_ENUM: Readonly<Record<string, number | undefined>>;
@@ -0,0 +1,167 @@
1
+ /**
2
+ * BlockType constants and code language mapping.
3
+ *
4
+ * IDs from Feishu DocX API:
5
+ * https://open.feishu.cn/document/client-docs/docs-add-on/block-type-overview
6
+ */
7
+ export const BlockType = {
8
+ PAGE: 1,
9
+ TEXT: 2,
10
+ HEADING1: 3,
11
+ HEADING2: 4,
12
+ HEADING3: 5,
13
+ HEADING4: 6,
14
+ HEADING5: 7,
15
+ HEADING6: 8,
16
+ HEADING7: 9,
17
+ HEADING8: 10,
18
+ HEADING9: 11,
19
+ BULLET: 12,
20
+ ORDERED: 13,
21
+ CODE: 14,
22
+ QUOTE: 15,
23
+ EQUATION: 16,
24
+ TODO: 17,
25
+ BITABLE: 18,
26
+ CALLOUT: 19,
27
+ CHAT_CARD: 20,
28
+ DIAGRAM: 21,
29
+ DIVIDER: 22,
30
+ FILE: 23,
31
+ GRID: 24,
32
+ GRID_COLUMN: 25,
33
+ IFRAME: 26,
34
+ IMAGE: 27,
35
+ ISV: 28,
36
+ MINDNOTE: 29,
37
+ SHEET: 30,
38
+ TABLE: 31,
39
+ TABLE_CELL: 32,
40
+ VIEW: 33,
41
+ QUOTE_CONTAINER: 34,
42
+ TASK: 35,
43
+ OKR: 36,
44
+ OKR_OBJECTIVE: 37,
45
+ OKR_KEY_RESULT: 38,
46
+ OKR_PROGRESS: 39,
47
+ ADDONS: 40,
48
+ JIRA_ISSUE: 41,
49
+ WIKI_CATALOG: 42,
50
+ BOARD: 43,
51
+ AGENDA: 44,
52
+ AGENDA_ITEM: 45,
53
+ AGENDA_ITEM_TITLE: 46,
54
+ AGENDA_ITEM_CONTENT: 47,
55
+ LINK_PREVIEW: 48,
56
+ SOURCE_SYNCED: 49,
57
+ REFERENCE_SYNCED: 50,
58
+ SUB_PAGE_LIST: 51,
59
+ AI_TEMPLATE: 52,
60
+ };
61
+ export function isHeading(type) {
62
+ return type >= BlockType.HEADING1 && type <= BlockType.HEADING9;
63
+ }
64
+ export function headingLevel(type) {
65
+ return type - BlockType.HEADING1 + 1;
66
+ }
67
+ /**
68
+ * Feishu code language enum → display name.
69
+ * Values from SDK: 0 = PlainText, 1 = ABAP, etc.
70
+ */
71
+ export const CODE_LANGUAGES = {
72
+ 0: "plaintext",
73
+ 2: "abap",
74
+ 3: "ada",
75
+ 4: "apache",
76
+ 5: "apex",
77
+ 6: "assembly",
78
+ 7: "bash",
79
+ 8: "c#",
80
+ 9: "c++",
81
+ 10: "c",
82
+ 11: "cobol",
83
+ 12: "css",
84
+ 13: "coffeescript",
85
+ 14: "d",
86
+ 15: "dart",
87
+ 16: "delphi",
88
+ 17: "django",
89
+ 18: "dockerfile",
90
+ 19: "erlang",
91
+ 20: "fortran",
92
+ 21: "foxpro",
93
+ 22: "go",
94
+ 23: "groovy",
95
+ 24: "html",
96
+ 25: "elixir",
97
+ 26: "http",
98
+ 27: "haskell",
99
+ 28: "json",
100
+ 29: "java",
101
+ 30: "javascript",
102
+ 31: "julia",
103
+ 32: "kotlin",
104
+ 33: "latex",
105
+ 34: "lisp",
106
+ 35: "logo",
107
+ 36: "lua",
108
+ 37: "matlab",
109
+ 38: "makefile",
110
+ 39: "markdown",
111
+ 40: "nginx",
112
+ 41: "objective-c",
113
+ 42: "openedgeabl",
114
+ 43: "php",
115
+ 44: "perl",
116
+ 45: "postscript",
117
+ 46: "powershell",
118
+ 47: "prolog",
119
+ 48: "protobuf",
120
+ 49: "python",
121
+ 50: "r",
122
+ 51: "rpg",
123
+ 52: "ruby",
124
+ 53: "rust",
125
+ 54: "sas",
126
+ 55: "plsql",
127
+ 56: "sql",
128
+ 57: "scala",
129
+ 58: "scheme",
130
+ 59: "scratch",
131
+ 60: "shell",
132
+ 61: "swift",
133
+ 62: "thrift",
134
+ 63: "typescript",
135
+ 64: "vbscript",
136
+ 65: "visual basic",
137
+ 66: "xml",
138
+ 67: "yaml",
139
+ 68: "cmake",
140
+ 69: "ansi",
141
+ 70: "graphql",
142
+ 71: "solidity",
143
+ 72: "toml",
144
+ };
145
+ /**
146
+ * Markdown language name → Feishu code language enum value.
147
+ */
148
+ const baseLangMap = Object.fromEntries(Object.entries(CODE_LANGUAGES).map(([k, v]) => [v.toLowerCase(), Number(k)]));
149
+ export const LANGUAGE_TO_ENUM = Object.freeze({
150
+ ...baseLangMap,
151
+ // Common aliases
152
+ js: baseLangMap["javascript"],
153
+ ts: baseLangMap["typescript"],
154
+ py: baseLangMap["python"],
155
+ rb: baseLangMap["ruby"],
156
+ sh: baseLangMap["shell"],
157
+ yml: baseLangMap["yaml"],
158
+ md: baseLangMap["markdown"],
159
+ rs: baseLangMap["rust"],
160
+ cs: baseLangMap["c#"],
161
+ cpp: baseLangMap["c++"],
162
+ objc: baseLangMap["objective-c"],
163
+ ps1: baseLangMap["powershell"],
164
+ vb: baseLangMap["visual basic"],
165
+ mermaid: baseLangMap["plaintext"],
166
+ });
167
+ //# sourceMappingURL=block-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block-types.js","sourceRoot":"","sources":["../../src/parser/block-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Convert Feishu document blocks to Markdown.
3
+ *
4
+ * Input: Block[] (flat array with parent_id + children)
5
+ * Output: Markdown string
6
+ */
7
+ import { Block } from "../types/index.js";
8
+ interface BlocksToMarkdownOptions {
9
+ imageUrlMap?: Map<string, string>;
10
+ userNameMap?: Map<string, string>;
11
+ bitableDataMap?: Map<string, {
12
+ fields: string[];
13
+ records: unknown[][];
14
+ }>;
15
+ boardDataMap?: Map<string, string[]>;
16
+ sheetDataMap?: Map<string, {
17
+ fields: string[];
18
+ records: unknown[][];
19
+ title?: string;
20
+ }>;
21
+ }
22
+ /**
23
+ * Main entry: convert blocks to markdown string.
24
+ */
25
+ export declare function blocksToMarkdown(blocks: Block[], options?: BlocksToMarkdownOptions): string;
26
+ export {};