@n24q02m/better-notion-mcp 1.0.0
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 +240 -0
- package/bin/cli.mjs +117 -0
- package/build/scripts/start-server.d.ts +6 -0
- package/build/scripts/start-server.d.ts.map +1 -0
- package/build/scripts/start-server.js +21 -0
- package/build/scripts/start-server.js.map +1 -0
- package/build/src/init-server.d.ts +29 -0
- package/build/src/init-server.d.ts.map +1 -0
- package/build/src/init-server.js +32 -0
- package/build/src/init-server.js.map +1 -0
- package/build/src/tools/composite/blocks.d.ts +16 -0
- package/build/src/tools/composite/blocks.d.ts.map +1 -0
- package/build/src/tools/composite/blocks.js +104 -0
- package/build/src/tools/composite/blocks.js.map +1 -0
- package/build/src/tools/composite/comments.d.ts +16 -0
- package/build/src/tools/composite/comments.d.ts.map +1 -0
- package/build/src/tools/composite/comments.js +69 -0
- package/build/src/tools/composite/comments.js.map +1 -0
- package/build/src/tools/composite/content.d.ts +13 -0
- package/build/src/tools/composite/content.d.ts.map +1 -0
- package/build/src/tools/composite/content.js +50 -0
- package/build/src/tools/composite/content.js.map +1 -0
- package/build/src/tools/composite/databases.d.ts +33 -0
- package/build/src/tools/composite/databases.d.ts.map +1 -0
- package/build/src/tools/composite/databases.js +419 -0
- package/build/src/tools/composite/databases.js.map +1 -0
- package/build/src/tools/composite/pages.d.ts +24 -0
- package/build/src/tools/composite/pages.d.ts.map +1 -0
- package/build/src/tools/composite/pages.js +316 -0
- package/build/src/tools/composite/pages.js.map +1 -0
- package/build/src/tools/composite/search.d.ts +23 -0
- package/build/src/tools/composite/search.d.ts.map +1 -0
- package/build/src/tools/composite/search.js +94 -0
- package/build/src/tools/composite/search.js.map +1 -0
- package/build/src/tools/composite/users.d.ts +15 -0
- package/build/src/tools/composite/users.d.ts.map +1 -0
- package/build/src/tools/composite/users.js +93 -0
- package/build/src/tools/composite/users.js.map +1 -0
- package/build/src/tools/composite/workspace.d.ts +25 -0
- package/build/src/tools/composite/workspace.d.ts.map +1 -0
- package/build/src/tools/composite/workspace.js +72 -0
- package/build/src/tools/composite/workspace.js.map +1 -0
- package/build/src/tools/helpers/errors.d.ts +43 -0
- package/build/src/tools/helpers/errors.d.ts.map +1 -0
- package/build/src/tools/helpers/errors.js +162 -0
- package/build/src/tools/helpers/errors.js.map +1 -0
- package/build/src/tools/helpers/markdown.d.ts +45 -0
- package/build/src/tools/helpers/markdown.d.ts.map +1 -0
- package/build/src/tools/helpers/markdown.js +320 -0
- package/build/src/tools/helpers/markdown.js.map +1 -0
- package/build/src/tools/helpers/pagination.d.ts +42 -0
- package/build/src/tools/helpers/pagination.d.ts.map +1 -0
- package/build/src/tools/helpers/pagination.js +72 -0
- package/build/src/tools/helpers/pagination.js.map +1 -0
- package/build/src/tools/helpers/properties.d.ts +10 -0
- package/build/src/tools/helpers/properties.d.ts.map +1 -0
- package/build/src/tools/helpers/properties.js +57 -0
- package/build/src/tools/helpers/properties.js.map +1 -0
- package/build/src/tools/helpers/richtext.d.ts +85 -0
- package/build/src/tools/helpers/richtext.d.ts.map +1 -0
- package/build/src/tools/helpers/richtext.js +146 -0
- package/build/src/tools/helpers/richtext.js.map +1 -0
- package/build/src/tools/registry.d.ts +10 -0
- package/build/src/tools/registry.d.ts.map +1 -0
- package/build/src/tools/registry.js +342 -0
- package/build/src/tools/registry.js.map +1 -0
- package/build/tsconfig.tsbuildinfo +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Blocks Mega Tool
|
|
3
|
+
* All block operations in one unified interface
|
|
4
|
+
*/
|
|
5
|
+
import { NotionMCPError, withErrorHandling } from '../helpers/errors.js';
|
|
6
|
+
import { blocksToMarkdown, markdownToBlocks } from '../helpers/markdown.js';
|
|
7
|
+
import { autoPaginate } from '../helpers/pagination.js';
|
|
8
|
+
/**
|
|
9
|
+
* Unified blocks tool
|
|
10
|
+
* Maps to: GET/PATCH/DELETE /v1/blocks/{id} and GET/PATCH /v1/blocks/{id}/children
|
|
11
|
+
*/
|
|
12
|
+
export async function blocks(notion, input) {
|
|
13
|
+
return withErrorHandling(async () => {
|
|
14
|
+
if (!input.block_id) {
|
|
15
|
+
throw new NotionMCPError('block_id required', 'VALIDATION_ERROR', 'Provide block_id');
|
|
16
|
+
}
|
|
17
|
+
switch (input.action) {
|
|
18
|
+
case 'get': {
|
|
19
|
+
const block = await notion.blocks.retrieve({ block_id: input.block_id });
|
|
20
|
+
return {
|
|
21
|
+
action: 'get',
|
|
22
|
+
block_id: block.id,
|
|
23
|
+
type: block.type,
|
|
24
|
+
has_children: block.has_children,
|
|
25
|
+
archived: block.archived,
|
|
26
|
+
block
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
case 'children': {
|
|
30
|
+
const blocksList = await autoPaginate((cursor) => notion.blocks.children.list({
|
|
31
|
+
block_id: input.block_id,
|
|
32
|
+
start_cursor: cursor,
|
|
33
|
+
page_size: 100
|
|
34
|
+
}));
|
|
35
|
+
const markdown = blocksToMarkdown(blocksList);
|
|
36
|
+
return {
|
|
37
|
+
action: 'children',
|
|
38
|
+
block_id: input.block_id,
|
|
39
|
+
total_children: blocksList.length,
|
|
40
|
+
markdown,
|
|
41
|
+
blocks: blocksList
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
case 'append': {
|
|
45
|
+
if (!input.content) {
|
|
46
|
+
throw new NotionMCPError('content required for append', 'VALIDATION_ERROR', 'Provide markdown content');
|
|
47
|
+
}
|
|
48
|
+
const blocksList = markdownToBlocks(input.content);
|
|
49
|
+
await notion.blocks.children.append({
|
|
50
|
+
block_id: input.block_id,
|
|
51
|
+
children: blocksList
|
|
52
|
+
});
|
|
53
|
+
return {
|
|
54
|
+
action: 'append',
|
|
55
|
+
block_id: input.block_id,
|
|
56
|
+
appended_count: blocksList.length
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
case 'update': {
|
|
60
|
+
if (!input.content) {
|
|
61
|
+
throw new NotionMCPError('content required for update', 'VALIDATION_ERROR', 'Provide markdown content');
|
|
62
|
+
}
|
|
63
|
+
const block = await notion.blocks.retrieve({ block_id: input.block_id });
|
|
64
|
+
const blockType = block.type;
|
|
65
|
+
const newBlocks = markdownToBlocks(input.content);
|
|
66
|
+
if (newBlocks.length === 0) {
|
|
67
|
+
throw new NotionMCPError('Content must produce at least one block', 'VALIDATION_ERROR', 'Invalid markdown');
|
|
68
|
+
}
|
|
69
|
+
const newContent = newBlocks[0];
|
|
70
|
+
let updatePayload = {};
|
|
71
|
+
// Build update based on block type
|
|
72
|
+
if (['paragraph', 'heading_1', 'heading_2', 'heading_3', 'bulleted_list_item', 'numbered_list_item', 'quote'].includes(blockType)) {
|
|
73
|
+
updatePayload[blockType] = {
|
|
74
|
+
rich_text: newContent[blockType]?.rich_text || []
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
throw new NotionMCPError(`Block type '${blockType}' cannot be updated`, 'VALIDATION_ERROR', 'Only text blocks can be updated');
|
|
79
|
+
}
|
|
80
|
+
await notion.blocks.update({
|
|
81
|
+
block_id: input.block_id,
|
|
82
|
+
...updatePayload
|
|
83
|
+
});
|
|
84
|
+
return {
|
|
85
|
+
action: 'update',
|
|
86
|
+
block_id: input.block_id,
|
|
87
|
+
type: blockType,
|
|
88
|
+
updated: true
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
case 'delete': {
|
|
92
|
+
await notion.blocks.delete({ block_id: input.block_id });
|
|
93
|
+
return {
|
|
94
|
+
action: 'delete',
|
|
95
|
+
block_id: input.block_id,
|
|
96
|
+
deleted: true
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
default:
|
|
100
|
+
throw new NotionMCPError(`Unknown action: ${input.action}`, 'VALIDATION_ERROR', 'Supported actions: get, children, append, update, delete');
|
|
101
|
+
}
|
|
102
|
+
})();
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=blocks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../../../src/tools/composite/blocks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comments Composite Tool
|
|
3
|
+
* Manage page comments
|
|
4
|
+
*/
|
|
5
|
+
import { Client } from '@notionhq/client';
|
|
6
|
+
export interface CommentsManageInput {
|
|
7
|
+
page_id?: string;
|
|
8
|
+
discussion_id?: string;
|
|
9
|
+
action: 'list' | 'create';
|
|
10
|
+
content?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Manage comments (list, create, resolve)
|
|
14
|
+
*/
|
|
15
|
+
export declare function commentsManage(notion: Client, input: CommentsManageInput): Promise<any>;
|
|
16
|
+
//# sourceMappingURL=comments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comments.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/comments.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAKzC,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,GAAG,CAAC,CAmEd"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comments Composite Tool
|
|
3
|
+
* Manage page comments
|
|
4
|
+
*/
|
|
5
|
+
import { withErrorHandling } from '../helpers/errors.js';
|
|
6
|
+
import { autoPaginate } from '../helpers/pagination.js';
|
|
7
|
+
import * as RichText from '../helpers/richtext.js';
|
|
8
|
+
/**
|
|
9
|
+
* Manage comments (list, create, resolve)
|
|
10
|
+
*/
|
|
11
|
+
export async function commentsManage(notion, input) {
|
|
12
|
+
return withErrorHandling(async () => {
|
|
13
|
+
switch (input.action) {
|
|
14
|
+
case 'list': {
|
|
15
|
+
if (!input.page_id) {
|
|
16
|
+
throw new Error('page_id required for list action');
|
|
17
|
+
}
|
|
18
|
+
const comments = await autoPaginate(async (cursor) => {
|
|
19
|
+
return await notion.comments.list({
|
|
20
|
+
block_id: input.page_id,
|
|
21
|
+
start_cursor: cursor
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
return {
|
|
25
|
+
page_id: input.page_id,
|
|
26
|
+
total_comments: comments.length,
|
|
27
|
+
comments: comments.map((comment) => ({
|
|
28
|
+
id: comment.id,
|
|
29
|
+
created_time: comment.created_time,
|
|
30
|
+
created_by: comment.created_by,
|
|
31
|
+
discussion_id: comment.discussion_id,
|
|
32
|
+
text: RichText.extractPlainText(comment.rich_text),
|
|
33
|
+
parent: comment.parent
|
|
34
|
+
}))
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
case 'create': {
|
|
38
|
+
if (!input.content) {
|
|
39
|
+
throw new Error('content required for create action');
|
|
40
|
+
}
|
|
41
|
+
// Either page_id or discussion_id must be provided
|
|
42
|
+
if (!input.page_id && !input.discussion_id) {
|
|
43
|
+
throw new Error('Either page_id or discussion_id is required for create action');
|
|
44
|
+
}
|
|
45
|
+
const createParams = {
|
|
46
|
+
rich_text: [RichText.text(input.content)]
|
|
47
|
+
};
|
|
48
|
+
// Add parent or discussion_id based on input
|
|
49
|
+
if (input.discussion_id) {
|
|
50
|
+
createParams.discussion_id = input.discussion_id;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
createParams.parent = {
|
|
54
|
+
page_id: input.page_id
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
const comment = await notion.comments.create(createParams);
|
|
58
|
+
return {
|
|
59
|
+
comment_id: comment.id,
|
|
60
|
+
discussion_id: comment.discussion_id,
|
|
61
|
+
created: true
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
default:
|
|
65
|
+
throw new Error(`Unsupported action: ${input.action}`);
|
|
66
|
+
}
|
|
67
|
+
})();
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=comments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comments.js","sourceRoot":"","sources":["../../../../src/tools/composite/comments.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,KAAK,QAAQ,MAAM,wBAAwB,CAAA;AASlD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,KAA0B;IAE1B,OAAO,iBAAiB,CAAC,KAAK,IAAI,EAAE;QAClC,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;YACrB,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAA;gBACrD,CAAC;gBAED,MAAM,QAAQ,GAAG,MAAM,YAAY,CACjC,KAAK,EAAE,MAAM,EAAE,EAAE;oBACf,OAAO,MAAO,MAAM,CAAC,QAAgB,CAAC,IAAI,CAAC;wBACzC,QAAQ,EAAE,KAAK,CAAC,OAAO;wBACvB,YAAY,EAAE,MAAM;qBACrB,CAAC,CAAA;gBACJ,CAAC,CACF,CAAA;gBAED,OAAO;oBACL,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,cAAc,EAAE,QAAQ,CAAC,MAAM;oBAC/B,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,CAAC;wBACxC,EAAE,EAAE,OAAO,CAAC,EAAE;wBACd,YAAY,EAAE,OAAO,CAAC,YAAY;wBAClC,UAAU,EAAE,OAAO,CAAC,UAAU;wBAC9B,aAAa,EAAE,OAAO,CAAC,aAAa;wBACpC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;wBAClD,MAAM,EAAE,OAAO,CAAC,MAAM;qBACvB,CAAC,CAAC;iBACJ,CAAA;YACH,CAAC;YAED,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBACnB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;gBACvD,CAAC;gBAED,mDAAmD;gBACnD,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;oBAC3C,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAA;gBAClF,CAAC;gBAED,MAAM,YAAY,GAAQ;oBACxB,SAAS,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBAC1C,CAAA;gBAED,6CAA6C;gBAC7C,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;oBACxB,YAAY,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAA;gBAClD,CAAC;qBAAM,CAAC;oBACN,YAAY,CAAC,MAAM,GAAG;wBACpB,OAAO,EAAE,KAAK,CAAC,OAAO;qBACvB,CAAA;gBACH,CAAC;gBAED,MAAM,OAAO,GAAG,MAAO,MAAM,CAAC,QAAgB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;gBAEnE,OAAO;oBACL,UAAU,EAAE,OAAO,CAAC,EAAE;oBACtB,aAAa,EAAE,OAAO,CAAC,aAAa;oBACpC,OAAO,EAAE,IAAI;iBACd,CAAA;YACH,CAAC;YAED;gBACE,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC,CAAC,EAAE,CAAA;AACN,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content Conversion Tool
|
|
3
|
+
* Convert between Markdown and Notion blocks
|
|
4
|
+
*/
|
|
5
|
+
export interface ContentConvertInput {
|
|
6
|
+
direction: 'markdown-to-blocks' | 'blocks-to-markdown';
|
|
7
|
+
content: string | any[];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Convert content between formats
|
|
11
|
+
*/
|
|
12
|
+
export declare function contentConvert(input: ContentConvertInput): Promise<any>;
|
|
13
|
+
//# sourceMappingURL=content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/content.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,oBAAoB,GAAG,oBAAoB,CAAA;IACtD,OAAO,EAAE,MAAM,GAAG,GAAG,EAAE,CAAA;CACxB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,GAAG,CAAC,CAwCd"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content Conversion Tool
|
|
3
|
+
* Convert between Markdown and Notion blocks
|
|
4
|
+
*/
|
|
5
|
+
import { withErrorHandling } from '../helpers/errors.js';
|
|
6
|
+
import { blocksToMarkdown, markdownToBlocks } from '../helpers/markdown.js';
|
|
7
|
+
/**
|
|
8
|
+
* Convert content between formats
|
|
9
|
+
*/
|
|
10
|
+
export async function contentConvert(input) {
|
|
11
|
+
return withErrorHandling(async () => {
|
|
12
|
+
switch (input.direction) {
|
|
13
|
+
case 'markdown-to-blocks': {
|
|
14
|
+
if (typeof input.content !== 'string') {
|
|
15
|
+
throw new Error('Content must be a string for markdown-to-blocks');
|
|
16
|
+
}
|
|
17
|
+
const blocks = markdownToBlocks(input.content);
|
|
18
|
+
return {
|
|
19
|
+
direction: input.direction,
|
|
20
|
+
block_count: blocks.length,
|
|
21
|
+
blocks
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
case 'blocks-to-markdown': {
|
|
25
|
+
let content = input.content;
|
|
26
|
+
// Parse JSON string if needed
|
|
27
|
+
if (typeof content === 'string') {
|
|
28
|
+
try {
|
|
29
|
+
content = JSON.parse(content);
|
|
30
|
+
}
|
|
31
|
+
catch (e) {
|
|
32
|
+
throw new Error('Content must be a valid JSON array or array object for blocks-to-markdown');
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (!Array.isArray(content)) {
|
|
36
|
+
throw new Error('Content must be an array for blocks-to-markdown');
|
|
37
|
+
}
|
|
38
|
+
const markdown = blocksToMarkdown(content);
|
|
39
|
+
return {
|
|
40
|
+
direction: input.direction,
|
|
41
|
+
char_count: markdown.length,
|
|
42
|
+
markdown
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
default:
|
|
46
|
+
throw new Error(`Unsupported direction: ${input.direction}`);
|
|
47
|
+
}
|
|
48
|
+
})();
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../../../src/tools/composite/content.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAO3E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAA0B;IAE1B,OAAO,iBAAiB,CAAC,KAAK,IAAI,EAAE;QAClC,QAAQ,KAAK,CAAC,SAAS,EAAE,CAAC;YACxB,KAAK,oBAAoB,CAAC,CAAC,CAAC;gBAC1B,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;oBACtC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;gBACpE,CAAC;gBACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBAC9C,OAAO;oBACL,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,WAAW,EAAE,MAAM,CAAC,MAAM;oBAC1B,MAAM;iBACP,CAAA;YACH,CAAC;YAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;gBAC1B,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAA;gBAC3B,8BAA8B;gBAC9B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;oBAChC,IAAI,CAAC;wBACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;oBAC/B,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAA;oBAC9F,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC5B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;gBACpE,CAAC;gBACD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAc,CAAC,CAAA;gBACjD,OAAO;oBACL,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,UAAU,EAAE,QAAQ,CAAC,MAAM;oBAC3B,QAAQ;iBACT,CAAA;YACH,CAAC;YAED;gBACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,SAAS,EAAE,CAAC,CAAA;QAChE,CAAC;IACH,CAAC,CAAC,EAAE,CAAA;AACN,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Databases Mega Tool - Updated for Notion API 2025-09-03
|
|
3
|
+
* Supports data_sources architecture
|
|
4
|
+
*/
|
|
5
|
+
import { Client } from '@notionhq/client';
|
|
6
|
+
export interface DatabasesInput {
|
|
7
|
+
action: 'create' | 'get' | 'query' | 'create_page' | 'update_page' | 'delete_page' | 'create_data_source' | 'update_data_source' | 'update_database';
|
|
8
|
+
database_id?: string;
|
|
9
|
+
data_source_id?: string;
|
|
10
|
+
parent_id?: string;
|
|
11
|
+
title?: string;
|
|
12
|
+
description?: string;
|
|
13
|
+
properties?: Record<string, any>;
|
|
14
|
+
is_inline?: boolean;
|
|
15
|
+
icon?: string;
|
|
16
|
+
cover?: string;
|
|
17
|
+
filters?: any;
|
|
18
|
+
sorts?: any[];
|
|
19
|
+
limit?: number;
|
|
20
|
+
search?: string;
|
|
21
|
+
page_id?: string;
|
|
22
|
+
page_ids?: string[];
|
|
23
|
+
page_properties?: Record<string, any>;
|
|
24
|
+
pages?: Array<{
|
|
25
|
+
page_id?: string;
|
|
26
|
+
properties: Record<string, any>;
|
|
27
|
+
}>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Unified databases tool - handles all database operations
|
|
31
|
+
*/
|
|
32
|
+
export declare function databases(notion: Client, input: DatabasesInput): Promise<any>;
|
|
33
|
+
//# sourceMappingURL=databases.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"databases.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/databases.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAMzC,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,aAAa,GAAG,aAAa,GAAG,aAAa,GAClF,oBAAoB,GAAG,oBAAoB,GAAG,iBAAiB,CAAA;IAG/D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;IAGvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAChC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IAGd,OAAO,CAAC,EAAE,GAAG,CAAA;IACb,KAAK,CAAC,EAAE,GAAG,EAAE,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IAGf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAGrC,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAChC,CAAC,CAAA;CACH;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,GAAG,CAAC,CAsCd"}
|