@6missedcalls/notion-cli 0.1.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.
Files changed (67) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +114 -0
  3. package/dist/cli/program.d.ts +7 -0
  4. package/dist/cli/program.d.ts.map +1 -0
  5. package/dist/cli/program.js +27 -0
  6. package/dist/cli/program.js.map +1 -0
  7. package/dist/cli/shared.d.ts +24 -0
  8. package/dist/cli/shared.d.ts.map +1 -0
  9. package/dist/cli/shared.js +97 -0
  10. package/dist/cli/shared.js.map +1 -0
  11. package/dist/cli.d.ts +13 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +15 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/commands/block.d.ts +6 -0
  16. package/dist/commands/block.d.ts.map +1 -0
  17. package/dist/commands/block.js +118 -0
  18. package/dist/commands/block.js.map +1 -0
  19. package/dist/commands/db.d.ts +6 -0
  20. package/dist/commands/db.d.ts.map +1 -0
  21. package/dist/commands/db.js +66 -0
  22. package/dist/commands/db.js.map +1 -0
  23. package/dist/commands/page.d.ts +6 -0
  24. package/dist/commands/page.d.ts.map +1 -0
  25. package/dist/commands/page.js +106 -0
  26. package/dist/commands/page.js.map +1 -0
  27. package/dist/commands/push.d.ts +7 -0
  28. package/dist/commands/push.d.ts.map +1 -0
  29. package/dist/commands/push.js +102 -0
  30. package/dist/commands/push.js.map +1 -0
  31. package/dist/commands/search.d.ts +6 -0
  32. package/dist/commands/search.d.ts.map +1 -0
  33. package/dist/commands/search.js +37 -0
  34. package/dist/commands/search.js.map +1 -0
  35. package/dist/index.d.ts +2 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +3 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/lib/index.d.ts +5 -0
  40. package/dist/lib/index.d.ts.map +1 -0
  41. package/dist/lib/index.js +5 -0
  42. package/dist/lib/index.js.map +1 -0
  43. package/dist/lib/markdown.d.ts +8 -0
  44. package/dist/lib/markdown.d.ts.map +1 -0
  45. package/dist/lib/markdown.js +159 -0
  46. package/dist/lib/markdown.js.map +1 -0
  47. package/dist/lib/markdown.test.d.ts +6 -0
  48. package/dist/lib/markdown.test.d.ts.map +1 -0
  49. package/dist/lib/markdown.test.js +338 -0
  50. package/dist/lib/markdown.test.js.map +1 -0
  51. package/dist/lib/notion-client.d.ts +41 -0
  52. package/dist/lib/notion-client.d.ts.map +1 -0
  53. package/dist/lib/notion-client.js +144 -0
  54. package/dist/lib/notion-client.js.map +1 -0
  55. package/dist/lib/shared.test.d.ts +6 -0
  56. package/dist/lib/shared.test.d.ts.map +1 -0
  57. package/dist/lib/shared.test.js +148 -0
  58. package/dist/lib/shared.test.js.map +1 -0
  59. package/dist/lib/types.d.ts +134 -0
  60. package/dist/lib/types.d.ts.map +1 -0
  61. package/dist/lib/types.js +53 -0
  62. package/dist/lib/types.js.map +1 -0
  63. package/dist/lib/types.test.d.ts +6 -0
  64. package/dist/lib/types.test.d.ts.map +1 -0
  65. package/dist/lib/types.test.js +177 -0
  66. package/dist/lib/types.test.js.map +1 -0
  67. package/package.json +56 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 6missedcalls
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,114 @@
1
+ # notion-cli
2
+
3
+ Fast Notion CLI for pages, databases, and blocks.
4
+
5
+ Created for use by [Openclaw](https://github.com/openclaw-ai/openclaw).
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ npm install -g @6missedcalls/notion-cli
11
+ ```
12
+
13
+ ## Setup
14
+
15
+ ```bash
16
+ export NOTION_API_KEY="secret_xxx"
17
+ ```
18
+
19
+ Get your API key from https://www.notion.so/my-integrations
20
+
21
+ ## Usage
22
+
23
+ ### Pages
24
+
25
+ ```bash
26
+ # Get a page
27
+ notion page get <page-id>
28
+
29
+ # Create a page
30
+ notion page create --parent <page-id> --title "My Page"
31
+
32
+ # Create in database
33
+ notion page create --parent <db-id> --title "Entry" --database
34
+
35
+ # Archive
36
+ notion page archive <page-id>
37
+ ```
38
+
39
+ ### Blocks
40
+
41
+ ```bash
42
+ # Get block children
43
+ notion block children <page-id>
44
+
45
+ # Append blocks from JSON file
46
+ notion block append <page-id> --json blocks.json
47
+
48
+ # Append from stdin
49
+ echo '[{"type":"paragraph","paragraph":{"rich_text":[{"type":"text","text":{"content":"Hello"}}]}}]' | notion block append <page-id> --stdin
50
+
51
+ # Delete
52
+ notion block delete <block-id>
53
+ ```
54
+
55
+ ### Databases
56
+
57
+ ```bash
58
+ # Get database schema
59
+ notion db get <database-id>
60
+
61
+ # Query with filter
62
+ notion db query <database-id> --filter '{"property":"Status","select":{"equals":"Done"}}'
63
+ ```
64
+
65
+ ### Search
66
+
67
+ ```bash
68
+ # Search everything
69
+ notion search "query"
70
+
71
+ # Search only pages
72
+ notion search "query" --filter page
73
+
74
+ # Search only databases
75
+ notion search --filter database
76
+ ```
77
+
78
+ ### Push (Markdown/JSON)
79
+
80
+ ```bash
81
+ # Push markdown file to page
82
+ notion push README.md --parent <page-id>
83
+
84
+ # Push JSON blocks
85
+ notion push blocks.json --parent <page-id>
86
+
87
+ # Push from stdin
88
+ cat notes.md | notion push --stdin --parent <page-id>
89
+
90
+ # Create new page and push content
91
+ notion push content.md --parent <page-id> --title "New Page"
92
+ ```
93
+
94
+ ## Options
95
+
96
+ All commands support:
97
+ - `--json` - Output as JSON
98
+ - `--quiet` - Suppress non-error output
99
+
100
+ ## Library Usage
101
+
102
+ ```typescript
103
+ import { NotionClient, markdownToBlocks } from '@6missedcalls/notion-cli';
104
+
105
+ const client = new NotionClient({ apiKey: process.env.NOTION_API_KEY });
106
+
107
+ // Push markdown
108
+ const blocks = markdownToBlocks('# Hello\n\nWorld');
109
+ await client.appendBlocks(pageId, blocks);
110
+ ```
111
+
112
+ ## License
113
+
114
+ MIT
@@ -0,0 +1,7 @@
1
+ /**
2
+ * CLI Program Setup
3
+ * Registers all commands
4
+ */
5
+ import { Command } from 'commander';
6
+ export declare function createProgram(): Command;
7
+ //# sourceMappingURL=program.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,wBAAgB,aAAa,IAAI,OAAO,CAkBvC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * CLI Program Setup
3
+ * Registers all commands
4
+ */
5
+ import { Command } from 'commander';
6
+ import { registerPageCommands } from '../commands/page.js';
7
+ import { registerBlockCommands } from '../commands/block.js';
8
+ import { registerDbCommands } from '../commands/db.js';
9
+ import { registerSearchCommand } from '../commands/search.js';
10
+ import { registerPushCommand } from '../commands/push.js';
11
+ export function createProgram() {
12
+ const program = new Command();
13
+ program
14
+ .name('notion')
15
+ .description('Fast Notion CLI for pages, databases, and blocks')
16
+ .version('0.1.0')
17
+ .option('--json', 'Output as JSON')
18
+ .option('--quiet', 'Suppress non-error output');
19
+ // Register commands
20
+ registerPageCommands(program);
21
+ registerBlockCommands(program);
22
+ registerDbCommands(program);
23
+ registerSearchCommand(program);
24
+ registerPushCommand(program);
25
+ return program;
26
+ }
27
+ //# sourceMappingURL=program.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/cli/program.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,QAAQ,CAAC;SACd,WAAW,CAAC,kDAAkD,CAAC;SAC/D,OAAO,CAAC,OAAO,CAAC;SAChB,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,SAAS,EAAE,2BAA2B,CAAC,CAAC;IAElD,oBAAoB;IACpB,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5B,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC/B,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE7B,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * CLI Context and Shared Utilities
3
+ */
4
+ import kleur from 'kleur';
5
+ export interface CliContext {
6
+ apiKey: string;
7
+ json: boolean;
8
+ quiet: boolean;
9
+ colors: typeof kleur;
10
+ }
11
+ export declare function createCliContext(options: {
12
+ json?: boolean;
13
+ quiet?: boolean;
14
+ }): CliContext;
15
+ export declare function output(ctx: CliContext, data: unknown): void;
16
+ export declare function error(ctx: CliContext, message: string): void;
17
+ export declare function success(ctx: CliContext, message: string): void;
18
+ export declare function info(ctx: CliContext, message: string): void;
19
+ export declare function normalizeId(id: string): string;
20
+ export declare function validateUrl(url: string, allowedProtocols?: string[]): string;
21
+ export declare function formatId(id: string): string;
22
+ export declare function validateFilePath(filePath: string): string;
23
+ export declare function readStdin(): Promise<string>;
24
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/cli/shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,UAAU,CAczF;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAU3D;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAE5D;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAG9D;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAG3D;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAa9C;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,gBAAgB,WAAsB,GAAG,MAAM,CAavF;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAK3C;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED,wBAAgB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAQ3C"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * CLI Context and Shared Utilities
3
+ */
4
+ import kleur from 'kleur';
5
+ export function createCliContext(options) {
6
+ const apiKey = process.env.NOTION_API_KEY;
7
+ if (!apiKey) {
8
+ console.error(kleur.red('Error: NOTION_API_KEY environment variable not set'));
9
+ process.exit(1);
10
+ }
11
+ return {
12
+ apiKey,
13
+ json: options.json ?? false,
14
+ quiet: options.quiet ?? false,
15
+ colors: kleur,
16
+ };
17
+ }
18
+ export function output(ctx, data) {
19
+ if (ctx.quiet)
20
+ return;
21
+ if (ctx.json) {
22
+ console.log(JSON.stringify(data, null, 2));
23
+ }
24
+ else if (typeof data === 'string') {
25
+ console.log(data);
26
+ }
27
+ else {
28
+ console.log(JSON.stringify(data, null, 2));
29
+ }
30
+ }
31
+ export function error(ctx, message) {
32
+ console.error(ctx.colors.red(`Error: ${message}`));
33
+ }
34
+ export function success(ctx, message) {
35
+ if (ctx.quiet)
36
+ return;
37
+ console.log(ctx.colors.green(`✓ ${message}`));
38
+ }
39
+ export function info(ctx, message) {
40
+ if (ctx.quiet)
41
+ return;
42
+ console.log(ctx.colors.blue(`ℹ ${message}`));
43
+ }
44
+ export function normalizeId(id) {
45
+ // Extract ID from URL if present
46
+ const urlMatch = id.match(/([a-f0-9]{32})/i);
47
+ if (urlMatch) {
48
+ return urlMatch[1];
49
+ }
50
+ // Remove hyphens and validate format
51
+ const cleaned = id.replace(/-/g, '');
52
+ if (!/^[a-f0-9]{32}$/i.test(cleaned)) {
53
+ throw new Error(`Invalid Notion ID format: ${id}`);
54
+ }
55
+ return cleaned;
56
+ }
57
+ export function validateUrl(url, allowedProtocols = ['http:', 'https:']) {
58
+ try {
59
+ const parsed = new URL(url);
60
+ if (!allowedProtocols.includes(parsed.protocol)) {
61
+ throw new Error(`URL must use ${allowedProtocols.join(' or ')} protocol`);
62
+ }
63
+ return url;
64
+ }
65
+ catch (e) {
66
+ if (e instanceof Error && e.message.includes('protocol')) {
67
+ throw e;
68
+ }
69
+ throw new Error(`Invalid URL format: ${url}`);
70
+ }
71
+ }
72
+ export function formatId(id) {
73
+ // Add hyphens to UUID format: 8-4-4-4-12
74
+ const clean = id.replace(/-/g, '');
75
+ if (clean.length !== 32)
76
+ return id;
77
+ return `${clean.slice(0, 8)}-${clean.slice(8, 12)}-${clean.slice(12, 16)}-${clean.slice(16, 20)}-${clean.slice(20)}`;
78
+ }
79
+ export function validateFilePath(filePath) {
80
+ // Basic path validation - ensure no null bytes (path traversal via null byte injection)
81
+ if (filePath.includes('\0')) {
82
+ throw new Error('Invalid file path: contains null bytes');
83
+ }
84
+ // Check for common path traversal patterns that could be problematic
85
+ // Note: We allow relative paths as they're useful for CLI usage
86
+ return filePath;
87
+ }
88
+ export function readStdin() {
89
+ return new Promise((resolve, reject) => {
90
+ let data = '';
91
+ process.stdin.setEncoding('utf8');
92
+ process.stdin.on('data', chunk => { data += chunk; });
93
+ process.stdin.on('end', () => resolve(data));
94
+ process.stdin.on('error', reject);
95
+ });
96
+ }
97
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/cli/shared.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * notion - Fast Notion CLI
4
+ *
5
+ * Usage:
6
+ * notion page get <id>
7
+ * notion page create --parent <id> --title "Title"
8
+ * notion block append <id> --json blocks.json
9
+ * notion push file.md --parent <id>
10
+ * notion search "query"
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG"}
package/dist/cli.js ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * notion - Fast Notion CLI
4
+ *
5
+ * Usage:
6
+ * notion page get <id>
7
+ * notion page create --parent <id> --title "Title"
8
+ * notion block append <id> --json blocks.json
9
+ * notion push file.md --parent <id>
10
+ * notion search "query"
11
+ */
12
+ import { createProgram } from './cli/program.js';
13
+ const program = createProgram();
14
+ program.parse(process.argv);
15
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;AAChC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Block Commands
3
+ */
4
+ import type { Command } from 'commander';
5
+ export declare function registerBlockCommands(program: Command): void;
6
+ //# sourceMappingURL=block.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block.d.ts","sourceRoot":"","sources":["../../src/commands/block.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoH5D"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * Block Commands
3
+ */
4
+ import { readFile } from 'fs/promises';
5
+ import { NotionClient } from '../lib/notion-client.js';
6
+ import { createCliContext, output, error, success, normalizeId, readStdin, validateFilePath } from '../cli/shared.js';
7
+ export function registerBlockCommands(program) {
8
+ const block = program.command('block').description('Block operations');
9
+ block
10
+ .command('get')
11
+ .description('Get a block by ID')
12
+ .argument('<id>', 'Block ID')
13
+ .action(async (id) => {
14
+ const opts = program.opts();
15
+ const ctx = createCliContext(opts);
16
+ const client = new NotionClient({ apiKey: ctx.apiKey });
17
+ const result = await client.getBlock(normalizeId(id));
18
+ if (result.success && result.data) {
19
+ output(ctx, result.data);
20
+ }
21
+ else {
22
+ error(ctx, result.error ?? 'Failed to get block');
23
+ process.exit(1);
24
+ }
25
+ });
26
+ block
27
+ .command('children')
28
+ .description('Get child blocks of a page or block')
29
+ .argument('<id>', 'Page or block ID')
30
+ .option('--cursor <cursor>', 'Pagination cursor')
31
+ .action(async (id, opts) => {
32
+ const globalOpts = program.opts();
33
+ const ctx = createCliContext(globalOpts);
34
+ const client = new NotionClient({ apiKey: ctx.apiKey });
35
+ const result = await client.getBlockChildren(normalizeId(id), opts.cursor);
36
+ if (result.success && result.data) {
37
+ output(ctx, result.data);
38
+ }
39
+ else {
40
+ error(ctx, result.error ?? 'Failed to get block children');
41
+ process.exit(1);
42
+ }
43
+ });
44
+ block
45
+ .command('append')
46
+ .description('Append blocks to a page or block')
47
+ .argument('<id>', 'Page or block ID')
48
+ .option('--json <file>', 'JSON file containing blocks')
49
+ .option('--stdin', 'Read blocks from stdin')
50
+ .action(async (id, opts) => {
51
+ const globalOpts = program.opts();
52
+ const ctx = createCliContext(globalOpts);
53
+ const client = new NotionClient({ apiKey: ctx.apiKey });
54
+ let blocksData;
55
+ if (opts.stdin) {
56
+ blocksData = await readStdin();
57
+ }
58
+ else if (opts.json) {
59
+ try {
60
+ blocksData = await readFile(validateFilePath(opts.json), 'utf-8');
61
+ }
62
+ catch (e) {
63
+ error(ctx, e instanceof Error ? e.message : 'Failed to read file');
64
+ process.exit(1);
65
+ }
66
+ }
67
+ else {
68
+ error(ctx, 'Must specify --json <file> or --stdin');
69
+ process.exit(1);
70
+ }
71
+ let parsed;
72
+ try {
73
+ parsed = JSON.parse(blocksData);
74
+ }
75
+ catch (e) {
76
+ const message = e instanceof SyntaxError ? e.message : 'Unknown parse error';
77
+ error(ctx, `Invalid JSON: ${message}`);
78
+ process.exit(1);
79
+ }
80
+ // Handle both { children: [...] } and [...] formats
81
+ const children = Array.isArray(parsed) ? parsed : parsed.children;
82
+ if (!Array.isArray(children) || children.length === 0) {
83
+ error(ctx, 'No blocks to append');
84
+ process.exit(1);
85
+ }
86
+ const result = await client.appendBlocks(normalizeId(id), children);
87
+ if (result.success && result.data) {
88
+ output(ctx, result.data);
89
+ if (!ctx.json)
90
+ success(ctx, `Appended ${children.length} blocks`);
91
+ }
92
+ else {
93
+ error(ctx, result.error ?? 'Failed to append blocks');
94
+ process.exit(1);
95
+ }
96
+ });
97
+ block
98
+ .command('delete')
99
+ .description('Delete a block')
100
+ .argument('<id>', 'Block ID')
101
+ .action(async (id) => {
102
+ const globalOpts = program.opts();
103
+ const ctx = createCliContext(globalOpts);
104
+ const client = new NotionClient({ apiKey: ctx.apiKey });
105
+ const result = await client.deleteBlock(normalizeId(id));
106
+ if (result.success) {
107
+ if (!ctx.json)
108
+ success(ctx, 'Block deleted');
109
+ else
110
+ output(ctx, { deleted: true });
111
+ }
112
+ else {
113
+ error(ctx, result.error ?? 'Failed to delete block');
114
+ process.exit(1);
115
+ }
116
+ });
117
+ }
118
+ //# sourceMappingURL=block.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"block.js","sourceRoot":"","sources":["../../src/commands/block.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Database Commands
3
+ */
4
+ import type { Command } from 'commander';
5
+ export declare function registerDbCommands(program: Command): void;
6
+ //# sourceMappingURL=db.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/commands/db.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqEzD"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Database Commands
3
+ */
4
+ import { NotionClient } from '../lib/notion-client.js';
5
+ import { createCliContext, output, error, normalizeId } from '../cli/shared.js';
6
+ export function registerDbCommands(program) {
7
+ const db = program.command('db').description('Database operations');
8
+ db
9
+ .command('get')
10
+ .description('Get database schema')
11
+ .argument('<id>', 'Database ID')
12
+ .action(async (id) => {
13
+ const opts = program.opts();
14
+ const ctx = createCliContext(opts);
15
+ const client = new NotionClient({ apiKey: ctx.apiKey });
16
+ const result = await client.getDatabase(normalizeId(id));
17
+ if (result.success && result.data) {
18
+ output(ctx, result.data);
19
+ }
20
+ else {
21
+ error(ctx, result.error ?? 'Failed to get database');
22
+ process.exit(1);
23
+ }
24
+ });
25
+ db
26
+ .command('query')
27
+ .description('Query database entries')
28
+ .argument('<id>', 'Database ID')
29
+ .option('--filter <json>', 'Filter as JSON')
30
+ .option('--sort <json>', 'Sort as JSON array')
31
+ .option('--cursor <cursor>', 'Pagination cursor')
32
+ .action(async (id, opts) => {
33
+ const globalOpts = program.opts();
34
+ const ctx = createCliContext(globalOpts);
35
+ const client = new NotionClient({ apiKey: ctx.apiKey });
36
+ let filter;
37
+ let sorts;
38
+ if (opts.filter) {
39
+ try {
40
+ filter = JSON.parse(opts.filter);
41
+ }
42
+ catch {
43
+ error(ctx, 'Invalid filter JSON');
44
+ process.exit(1);
45
+ }
46
+ }
47
+ if (opts.sort) {
48
+ try {
49
+ sorts = JSON.parse(opts.sort);
50
+ }
51
+ catch {
52
+ error(ctx, 'Invalid sort JSON');
53
+ process.exit(1);
54
+ }
55
+ }
56
+ const result = await client.queryDatabase(normalizeId(id), filter, sorts, opts.cursor);
57
+ if (result.success && result.data) {
58
+ output(ctx, result.data);
59
+ }
60
+ else {
61
+ error(ctx, result.error ?? 'Failed to query database');
62
+ process.exit(1);
63
+ }
64
+ });
65
+ }
66
+ //# sourceMappingURL=db.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/commands/db.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Page Commands
3
+ */
4
+ import type { Command } from 'commander';
5
+ export declare function registerPageCommands(program: Command): void;
6
+ //# sourceMappingURL=page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../../src/commands/page.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0G3D"}