@stoneforge/quarry 1.12.0 → 1.14.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/README.md +2 -0
- package/dist/api/quarry-api.d.ts +9 -1
- package/dist/api/quarry-api.d.ts.map +1 -1
- package/dist/api/quarry-api.js +21 -2
- package/dist/api/quarry-api.js.map +1 -1
- package/dist/api/types.d.ts +8 -1
- package/dist/api/types.d.ts.map +1 -1
- package/dist/api/types.js.map +1 -1
- package/dist/cli/commands/auto-link-helper.d.ts +33 -0
- package/dist/cli/commands/auto-link-helper.d.ts.map +1 -0
- package/dist/cli/commands/auto-link-helper.js +74 -0
- package/dist/cli/commands/auto-link-helper.js.map +1 -0
- package/dist/cli/commands/crud.d.ts +3 -0
- package/dist/cli/commands/crud.d.ts.map +1 -1
- package/dist/cli/commands/crud.js +144 -15
- package/dist/cli/commands/crud.js.map +1 -1
- package/dist/cli/commands/docs.js +2 -2
- package/dist/cli/commands/docs.js.map +1 -1
- package/dist/cli/commands/document.js +1 -1
- package/dist/cli/commands/document.js.map +1 -1
- package/dist/cli/commands/entity.js +1 -1
- package/dist/cli/commands/entity.js.map +1 -1
- package/dist/cli/commands/external-sync.d.ts +18 -0
- package/dist/cli/commands/external-sync.d.ts.map +1 -0
- package/dist/cli/commands/external-sync.js +2499 -0
- package/dist/cli/commands/external-sync.js.map +1 -0
- package/dist/cli/commands/library.js +1 -1
- package/dist/cli/commands/library.js.map +1 -1
- package/dist/cli/commands/message.js +2 -2
- package/dist/cli/commands/message.js.map +1 -1
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/serve.js +2 -0
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/task.d.ts.map +1 -1
- package/dist/cli/commands/task.js +7 -4
- package/dist/cli/commands/task.js.map +1 -1
- package/dist/cli/commands/team.js +1 -1
- package/dist/cli/commands/team.js.map +1 -1
- package/dist/cli/commands/workflow.js +1 -1
- package/dist/cli/commands/workflow.js.map +1 -1
- package/dist/cli/runner.d.ts.map +1 -1
- package/dist/cli/runner.js +3 -0
- package/dist/cli/runner.js.map +1 -1
- package/dist/cli/utils/progress.d.ts +30 -0
- package/dist/cli/utils/progress.d.ts.map +1 -0
- package/dist/cli/utils/progress.js +47 -0
- package/dist/cli/utils/progress.js.map +1 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +34 -0
- package/dist/config/config.js.map +1 -1
- package/dist/config/defaults.d.ts +13 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +22 -0
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/file.d.ts.map +1 -1
- package/dist/config/file.js +71 -0
- package/dist/config/file.js.map +1 -1
- package/dist/config/index.d.ts +3 -3
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +2 -2
- package/dist/config/index.js.map +1 -1
- package/dist/config/merge.d.ts.map +1 -1
- package/dist/config/merge.js +52 -1
- package/dist/config/merge.js.map +1 -1
- package/dist/config/types.d.ts +68 -1
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js +33 -0
- package/dist/config/types.js.map +1 -1
- package/dist/config/validation.d.ts.map +1 -1
- package/dist/config/validation.js +64 -1
- package/dist/config/validation.js.map +1 -1
- package/dist/external-sync/adapters/document-sync-adapter.d.ts +150 -0
- package/dist/external-sync/adapters/document-sync-adapter.d.ts.map +1 -0
- package/dist/external-sync/adapters/document-sync-adapter.js +325 -0
- package/dist/external-sync/adapters/document-sync-adapter.js.map +1 -0
- package/dist/external-sync/adapters/task-sync-adapter.d.ts +177 -0
- package/dist/external-sync/adapters/task-sync-adapter.d.ts.map +1 -0
- package/dist/external-sync/adapters/task-sync-adapter.js +353 -0
- package/dist/external-sync/adapters/task-sync-adapter.js.map +1 -0
- package/dist/external-sync/auto-link.d.ts +66 -0
- package/dist/external-sync/auto-link.d.ts.map +1 -0
- package/dist/external-sync/auto-link.js +98 -0
- package/dist/external-sync/auto-link.js.map +1 -0
- package/dist/external-sync/conflict-resolver.d.ts +170 -0
- package/dist/external-sync/conflict-resolver.d.ts.map +1 -0
- package/dist/external-sync/conflict-resolver.js +580 -0
- package/dist/external-sync/conflict-resolver.js.map +1 -0
- package/dist/external-sync/index.d.ts +23 -0
- package/dist/external-sync/index.d.ts.map +1 -0
- package/dist/external-sync/index.js +24 -0
- package/dist/external-sync/index.js.map +1 -0
- package/dist/external-sync/provider-registry.d.ts +113 -0
- package/dist/external-sync/provider-registry.d.ts.map +1 -0
- package/dist/external-sync/provider-registry.js +205 -0
- package/dist/external-sync/provider-registry.js.map +1 -0
- package/dist/external-sync/providers/folder/folder-document-adapter.d.ts +97 -0
- package/dist/external-sync/providers/folder/folder-document-adapter.d.ts.map +1 -0
- package/dist/external-sync/providers/folder/folder-document-adapter.js +261 -0
- package/dist/external-sync/providers/folder/folder-document-adapter.js.map +1 -0
- package/dist/external-sync/providers/folder/folder-fs.d.ts +146 -0
- package/dist/external-sync/providers/folder/folder-fs.d.ts.map +1 -0
- package/dist/external-sync/providers/folder/folder-fs.js +300 -0
- package/dist/external-sync/providers/folder/folder-fs.js.map +1 -0
- package/dist/external-sync/providers/folder/folder-provider.d.ts +28 -0
- package/dist/external-sync/providers/folder/folder-provider.d.ts.map +1 -0
- package/dist/external-sync/providers/folder/folder-provider.js +87 -0
- package/dist/external-sync/providers/folder/folder-provider.js.map +1 -0
- package/dist/external-sync/providers/folder/index.d.ts +11 -0
- package/dist/external-sync/providers/folder/index.d.ts.map +1 -0
- package/dist/external-sync/providers/folder/index.js +13 -0
- package/dist/external-sync/providers/folder/index.js.map +1 -0
- package/dist/external-sync/providers/github/github-api.d.ts +271 -0
- package/dist/external-sync/providers/github/github-api.d.ts.map +1 -0
- package/dist/external-sync/providers/github/github-api.js +366 -0
- package/dist/external-sync/providers/github/github-api.js.map +1 -0
- package/dist/external-sync/providers/github/github-field-map.d.ts +76 -0
- package/dist/external-sync/providers/github/github-field-map.d.ts.map +1 -0
- package/dist/external-sync/providers/github/github-field-map.js +157 -0
- package/dist/external-sync/providers/github/github-field-map.js.map +1 -0
- package/dist/external-sync/providers/github/github-provider.d.ts +36 -0
- package/dist/external-sync/providers/github/github-provider.d.ts.map +1 -0
- package/dist/external-sync/providers/github/github-provider.js +212 -0
- package/dist/external-sync/providers/github/github-provider.js.map +1 -0
- package/dist/external-sync/providers/github/github-task-adapter.d.ts +135 -0
- package/dist/external-sync/providers/github/github-task-adapter.d.ts.map +1 -0
- package/dist/external-sync/providers/github/github-task-adapter.js +374 -0
- package/dist/external-sync/providers/github/github-task-adapter.js.map +1 -0
- package/dist/external-sync/providers/github/index.d.ts +12 -0
- package/dist/external-sync/providers/github/index.d.ts.map +1 -0
- package/dist/external-sync/providers/github/index.js +15 -0
- package/dist/external-sync/providers/github/index.js.map +1 -0
- package/dist/external-sync/providers/index.d.ts +13 -0
- package/dist/external-sync/providers/index.d.ts.map +1 -0
- package/dist/external-sync/providers/index.js +15 -0
- package/dist/external-sync/providers/index.js.map +1 -0
- package/dist/external-sync/providers/linear/index.d.ts +19 -0
- package/dist/external-sync/providers/linear/index.d.ts.map +1 -0
- package/dist/external-sync/providers/linear/index.js +19 -0
- package/dist/external-sync/providers/linear/index.js.map +1 -0
- package/dist/external-sync/providers/linear/linear-api.d.ts +252 -0
- package/dist/external-sync/providers/linear/linear-api.d.ts.map +1 -0
- package/dist/external-sync/providers/linear/linear-api.js +522 -0
- package/dist/external-sync/providers/linear/linear-api.js.map +1 -0
- package/dist/external-sync/providers/linear/linear-field-map.d.ts +135 -0
- package/dist/external-sync/providers/linear/linear-field-map.d.ts.map +1 -0
- package/dist/external-sync/providers/linear/linear-field-map.js +338 -0
- package/dist/external-sync/providers/linear/linear-field-map.js.map +1 -0
- package/dist/external-sync/providers/linear/linear-provider.d.ts +52 -0
- package/dist/external-sync/providers/linear/linear-provider.d.ts.map +1 -0
- package/dist/external-sync/providers/linear/linear-provider.js +169 -0
- package/dist/external-sync/providers/linear/linear-provider.js.map +1 -0
- package/dist/external-sync/providers/linear/linear-task-adapter.d.ts +190 -0
- package/dist/external-sync/providers/linear/linear-task-adapter.d.ts.map +1 -0
- package/dist/external-sync/providers/linear/linear-task-adapter.js +521 -0
- package/dist/external-sync/providers/linear/linear-task-adapter.js.map +1 -0
- package/dist/external-sync/providers/linear/linear-types.d.ts +114 -0
- package/dist/external-sync/providers/linear/linear-types.d.ts.map +1 -0
- package/dist/external-sync/providers/linear/linear-types.js +10 -0
- package/dist/external-sync/providers/linear/linear-types.js.map +1 -0
- package/dist/external-sync/providers/notion/index.d.ts +19 -0
- package/dist/external-sync/providers/notion/index.d.ts.map +1 -0
- package/dist/external-sync/providers/notion/index.js +20 -0
- package/dist/external-sync/providers/notion/index.js.map +1 -0
- package/dist/external-sync/providers/notion/notion-api.d.ts +253 -0
- package/dist/external-sync/providers/notion/notion-api.d.ts.map +1 -0
- package/dist/external-sync/providers/notion/notion-api.js +492 -0
- package/dist/external-sync/providers/notion/notion-api.js.map +1 -0
- package/dist/external-sync/providers/notion/notion-blocks.d.ts +93 -0
- package/dist/external-sync/providers/notion/notion-blocks.d.ts.map +1 -0
- package/dist/external-sync/providers/notion/notion-blocks.js +773 -0
- package/dist/external-sync/providers/notion/notion-blocks.js.map +1 -0
- package/dist/external-sync/providers/notion/notion-document-adapter.d.ts +176 -0
- package/dist/external-sync/providers/notion/notion-document-adapter.d.ts.map +1 -0
- package/dist/external-sync/providers/notion/notion-document-adapter.js +413 -0
- package/dist/external-sync/providers/notion/notion-document-adapter.js.map +1 -0
- package/dist/external-sync/providers/notion/notion-provider.d.ts +57 -0
- package/dist/external-sync/providers/notion/notion-provider.d.ts.map +1 -0
- package/dist/external-sync/providers/notion/notion-provider.js +159 -0
- package/dist/external-sync/providers/notion/notion-provider.js.map +1 -0
- package/dist/external-sync/providers/notion/notion-types.d.ts +388 -0
- package/dist/external-sync/providers/notion/notion-types.d.ts.map +1 -0
- package/dist/external-sync/providers/notion/notion-types.js +47 -0
- package/dist/external-sync/providers/notion/notion-types.js.map +1 -0
- package/dist/external-sync/sync-engine.d.ts +364 -0
- package/dist/external-sync/sync-engine.d.ts.map +1 -0
- package/dist/external-sync/sync-engine.js +1154 -0
- package/dist/external-sync/sync-engine.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/server/index.js +8 -8
- package/dist/server/index.js.map +1 -1
- package/dist/services/inbox.js +1 -1
- package/dist/sync/hash.d.ts +5 -0
- package/dist/sync/hash.d.ts.map +1 -1
- package/dist/sync/hash.js +21 -2
- package/dist/sync/hash.js.map +1 -1
- package/package.json +10 -12
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notion-blocks.js","sourceRoot":"","sources":["../../../../src/external-sync/providers/notion/notion-blocks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Notion Document Sync Adapter
|
|
3
|
+
*
|
|
4
|
+
* Implements the DocumentSyncAdapter interface for Notion pages.
|
|
5
|
+
* Converts between Stoneforge documents and Notion pages using the
|
|
6
|
+
* Notion API client and the blocks ↔ markdown converter.
|
|
7
|
+
*
|
|
8
|
+
* Key operations:
|
|
9
|
+
* - getPage: Fetch a page's properties and blocks, convert to ExternalDocument
|
|
10
|
+
* - listPagesSince: Query a database for recently edited pages
|
|
11
|
+
* - createPage: Convert markdown to Notion blocks, create page with properties
|
|
12
|
+
* - updatePage: Update page properties and/or replace content blocks
|
|
13
|
+
*
|
|
14
|
+
* The adapter expects:
|
|
15
|
+
* - `project` = Notion database ID
|
|
16
|
+
* - `externalId` = Notion page ID
|
|
17
|
+
*
|
|
18
|
+
* Schema discovery:
|
|
19
|
+
* The adapter discovers the database schema on first use via GET /databases/{id}.
|
|
20
|
+
* Every Notion database has exactly one property of type "title", but its name
|
|
21
|
+
* varies (common names: "Name", "Title"). The adapter discovers and caches this
|
|
22
|
+
* name rather than hardcoding it.
|
|
23
|
+
*
|
|
24
|
+
* Optional properties (Category as select, Tags as multi_select, Library as
|
|
25
|
+
* select) are only included in page properties when the database schema
|
|
26
|
+
* confirms they exist. If they don't exist, the adapter attempts to auto-create
|
|
27
|
+
* them via PATCH /databases/{id}. If that fails (e.g., insufficient
|
|
28
|
+
* permissions), they are silently skipped.
|
|
29
|
+
*/
|
|
30
|
+
import type { DocumentSyncAdapter, ExternalDocument, ExternalDocumentInput } from '@stoneforge/core';
|
|
31
|
+
import type { Timestamp } from '@stoneforge/core';
|
|
32
|
+
import type { NotionProperty, NotionDatabaseSchema } from './notion-types.js';
|
|
33
|
+
import { NotionApiClient } from './notion-api.js';
|
|
34
|
+
/**
|
|
35
|
+
* Extracts the title from a Notion page's properties.
|
|
36
|
+
*
|
|
37
|
+
* Searches through all properties for one of type 'title', then
|
|
38
|
+
* concatenates the plain_text of all rich text elements within it.
|
|
39
|
+
*
|
|
40
|
+
* @param properties - The page's properties record
|
|
41
|
+
* @returns The page title, or empty string if no title property is found
|
|
42
|
+
*/
|
|
43
|
+
export declare function extractTitleFromProperties(properties: Record<string, NotionProperty>): string;
|
|
44
|
+
/**
|
|
45
|
+
* Builds Notion page properties for creating or updating a page.
|
|
46
|
+
*
|
|
47
|
+
* Uses the discovered database schema to:
|
|
48
|
+
* - Set the title on the correct property (discovered name, not hardcoded)
|
|
49
|
+
* - Only include Category, Tags, and Library if the database schema confirms they exist
|
|
50
|
+
*
|
|
51
|
+
* @param title - The page title
|
|
52
|
+
* @param schema - The discovered database schema with property availability info
|
|
53
|
+
* @param category - Optional category for the Category select property
|
|
54
|
+
* @param tags - Optional tags for the Tags multi_select property
|
|
55
|
+
* @param libraryPath - Optional library path for the Library select property
|
|
56
|
+
* @returns A properties record suitable for the Notion API
|
|
57
|
+
*/
|
|
58
|
+
export declare function buildPageProperties(title: string, schema: NotionDatabaseSchema, category?: string, tags?: readonly string[], libraryPath?: string): Record<string, unknown>;
|
|
59
|
+
/**
|
|
60
|
+
* DocumentSyncAdapter implementation for Notion.
|
|
61
|
+
*
|
|
62
|
+
* Uses the NotionApiClient for all API interactions and the
|
|
63
|
+
* blocks ↔ markdown converter for content transformation.
|
|
64
|
+
*
|
|
65
|
+
* On first use of createPage() or updatePage(), the adapter discovers the
|
|
66
|
+
* database schema to find the title property name and check which optional
|
|
67
|
+
* properties exist. The schema is cached per database ID, so only one
|
|
68
|
+
* getDatabase() call is made per adapter instance per database.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* const api = new NotionApiClient({ token: 'ntn_...' });
|
|
73
|
+
* const adapter = new NotionDocumentAdapter(api);
|
|
74
|
+
*
|
|
75
|
+
* // Fetch a page
|
|
76
|
+
* const doc = await adapter.getPage('database-id', 'page-id');
|
|
77
|
+
*
|
|
78
|
+
* // List recently edited pages
|
|
79
|
+
* const docs = await adapter.listPagesSince('database-id', '2024-01-01T00:00:00Z');
|
|
80
|
+
*
|
|
81
|
+
* // Create a new page (schema is discovered automatically)
|
|
82
|
+
* const newDoc = await adapter.createPage('database-id', {
|
|
83
|
+
* title: 'New Page',
|
|
84
|
+
* content: '# Hello\n\nWorld',
|
|
85
|
+
* contentType: 'markdown',
|
|
86
|
+
* });
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export declare class NotionDocumentAdapter implements DocumentSyncAdapter {
|
|
90
|
+
private readonly api;
|
|
91
|
+
/** Cached database schemas keyed by database ID */
|
|
92
|
+
private readonly schemaCache;
|
|
93
|
+
constructor(api: NotionApiClient);
|
|
94
|
+
/**
|
|
95
|
+
* Discover and cache the database schema for a given database ID.
|
|
96
|
+
*
|
|
97
|
+
* Fetches the database schema from the Notion API, discovers the title
|
|
98
|
+
* property name (every database has exactly one property of type 'title'),
|
|
99
|
+
* and checks for the existence of Category (select), Tags (multi_select),
|
|
100
|
+
* and Library (select) properties.
|
|
101
|
+
*
|
|
102
|
+
* If Category, Tags, or Library properties don't exist, attempts to
|
|
103
|
+
* auto-create them via PATCH /databases/{id}. If the integration lacks
|
|
104
|
+
* permission, the properties are simply skipped — no error is thrown.
|
|
105
|
+
*
|
|
106
|
+
* Results are cached per database ID so only one API call is made per
|
|
107
|
+
* adapter instance per database.
|
|
108
|
+
*
|
|
109
|
+
* @param databaseId - The Notion database ID to discover
|
|
110
|
+
* @returns The discovered database schema
|
|
111
|
+
* @throws Error if the database has no title property
|
|
112
|
+
*/
|
|
113
|
+
getDatabaseSchema(databaseId: string): Promise<NotionDatabaseSchema>;
|
|
114
|
+
/**
|
|
115
|
+
* Fetch a single page by its ID.
|
|
116
|
+
*
|
|
117
|
+
* Retrieves the page properties and block children, converts the blocks
|
|
118
|
+
* to markdown, and returns a normalized ExternalDocument.
|
|
119
|
+
*
|
|
120
|
+
* @param project - The Notion database ID
|
|
121
|
+
* @param externalId - The Notion page ID
|
|
122
|
+
* @returns The page as an ExternalDocument, or null if not found
|
|
123
|
+
*/
|
|
124
|
+
getPage(project: string, externalId: string): Promise<ExternalDocument | null>;
|
|
125
|
+
/**
|
|
126
|
+
* List pages in a database that have been edited since a given timestamp.
|
|
127
|
+
*
|
|
128
|
+
* Queries the database with a `last_edited_time > since` filter and
|
|
129
|
+
* returns all matching pages as ExternalDocuments. Block content is
|
|
130
|
+
* fetched for each page to build the full document.
|
|
131
|
+
*
|
|
132
|
+
* @param project - The Notion database ID
|
|
133
|
+
* @param since - ISO 8601 timestamp to filter by last_edited_time
|
|
134
|
+
* @returns Array of ExternalDocuments edited since the given time
|
|
135
|
+
*/
|
|
136
|
+
listPagesSince(project: string, since: Timestamp): Promise<ExternalDocument[]>;
|
|
137
|
+
/**
|
|
138
|
+
* Create a new page in a Notion database.
|
|
139
|
+
*
|
|
140
|
+
* Discovers the database schema (if not cached), then converts the markdown
|
|
141
|
+
* content to Notion blocks and creates a page with the discovered title
|
|
142
|
+
* property name. Category (select) and Tags (multi_select) properties are
|
|
143
|
+
* only set if they exist in the database schema.
|
|
144
|
+
*
|
|
145
|
+
* Notion limits POST /pages to 100 children blocks. If the content exceeds
|
|
146
|
+
* this limit, the page is created with the first 100 blocks, and the
|
|
147
|
+
* remaining blocks are appended in batches of 100 via PATCH /blocks/{id}/children.
|
|
148
|
+
*
|
|
149
|
+
* @param project - The Notion database ID
|
|
150
|
+
* @param page - The document input with title and content
|
|
151
|
+
* @returns The created page as an ExternalDocument
|
|
152
|
+
*/
|
|
153
|
+
createPage(project: string, page: ExternalDocumentInput): Promise<ExternalDocument>;
|
|
154
|
+
/**
|
|
155
|
+
* Update an existing page's properties and/or content.
|
|
156
|
+
*
|
|
157
|
+
* If the updates include a title, the title property is updated using the
|
|
158
|
+
* discovered property name from the database schema.
|
|
159
|
+
* If the updates include content, all existing blocks are replaced
|
|
160
|
+
* with new blocks converted from the updated markdown.
|
|
161
|
+
*
|
|
162
|
+
* @param project - The Notion database ID
|
|
163
|
+
* @param externalId - The Notion page ID to update
|
|
164
|
+
* @param updates - Partial updates to apply
|
|
165
|
+
* @returns The updated page as an ExternalDocument
|
|
166
|
+
*/
|
|
167
|
+
updatePage(project: string, externalId: string, updates: Partial<ExternalDocumentInput>): Promise<ExternalDocument>;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Create a NotionDocumentAdapter from a NotionApiClient.
|
|
171
|
+
*
|
|
172
|
+
* @param api - A configured NotionApiClient
|
|
173
|
+
* @returns A DocumentSyncAdapter for Notion
|
|
174
|
+
*/
|
|
175
|
+
export declare function createNotionDocumentAdapter(api: NotionApiClient): NotionDocumentAdapter;
|
|
176
|
+
//# sourceMappingURL=notion-document-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notion-document-adapter.d.ts","sourceRoot":"","sources":["../../../../src/external-sync/providers/notion/notion-document-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAgC,cAAc,EAAkB,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC5H,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAOlD;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GACzC,MAAM,CAOR;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,CAAC,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,EACxB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA8BzB;AAwCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,qBAAsB,YAAW,mBAAmB;IAC/D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IAEtC,mDAAmD;IACnD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2C;gBAE3D,GAAG,EAAE,eAAe;IAIhC;;;;;;;;;;;;;;;;;;OAkBG;IACG,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAmE1E;;;;;;;;;OASG;IACG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAkBpF;;;;;;;;;;OAUG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAsBpF;;;;;;;;;;;;;;;OAeG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,qBAAqB,GAC1B,OAAO,CAAC,gBAAgB,CAAC;IA4B5B;;;;;;;;;;;;OAYG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,CAAC,qBAAqB,CAAC,GACtC,OAAO,CAAC,gBAAgB,CAAC;CA4D7B;AAoBD;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,eAAe,GACnB,qBAAqB,CAEvB"}
|
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Notion Document Sync Adapter
|
|
3
|
+
*
|
|
4
|
+
* Implements the DocumentSyncAdapter interface for Notion pages.
|
|
5
|
+
* Converts between Stoneforge documents and Notion pages using the
|
|
6
|
+
* Notion API client and the blocks ↔ markdown converter.
|
|
7
|
+
*
|
|
8
|
+
* Key operations:
|
|
9
|
+
* - getPage: Fetch a page's properties and blocks, convert to ExternalDocument
|
|
10
|
+
* - listPagesSince: Query a database for recently edited pages
|
|
11
|
+
* - createPage: Convert markdown to Notion blocks, create page with properties
|
|
12
|
+
* - updatePage: Update page properties and/or replace content blocks
|
|
13
|
+
*
|
|
14
|
+
* The adapter expects:
|
|
15
|
+
* - `project` = Notion database ID
|
|
16
|
+
* - `externalId` = Notion page ID
|
|
17
|
+
*
|
|
18
|
+
* Schema discovery:
|
|
19
|
+
* The adapter discovers the database schema on first use via GET /databases/{id}.
|
|
20
|
+
* Every Notion database has exactly one property of type "title", but its name
|
|
21
|
+
* varies (common names: "Name", "Title"). The adapter discovers and caches this
|
|
22
|
+
* name rather than hardcoding it.
|
|
23
|
+
*
|
|
24
|
+
* Optional properties (Category as select, Tags as multi_select, Library as
|
|
25
|
+
* select) are only included in page properties when the database schema
|
|
26
|
+
* confirms they exist. If they don't exist, the adapter attempts to auto-create
|
|
27
|
+
* them via PATCH /databases/{id}. If that fails (e.g., insufficient
|
|
28
|
+
* permissions), they are silently skipped.
|
|
29
|
+
*/
|
|
30
|
+
import { notionBlocksToMarkdown, markdownToNotionBlocks } from './notion-blocks.js';
|
|
31
|
+
// ============================================================================
|
|
32
|
+
// Helper Functions
|
|
33
|
+
// ============================================================================
|
|
34
|
+
/**
|
|
35
|
+
* Extracts the title from a Notion page's properties.
|
|
36
|
+
*
|
|
37
|
+
* Searches through all properties for one of type 'title', then
|
|
38
|
+
* concatenates the plain_text of all rich text elements within it.
|
|
39
|
+
*
|
|
40
|
+
* @param properties - The page's properties record
|
|
41
|
+
* @returns The page title, or empty string if no title property is found
|
|
42
|
+
*/
|
|
43
|
+
export function extractTitleFromProperties(properties) {
|
|
44
|
+
for (const prop of Object.values(properties)) {
|
|
45
|
+
if (prop.type === 'title' && prop.title) {
|
|
46
|
+
return prop.title.map((rt) => rt.plain_text).join('');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return '';
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Builds Notion page properties for creating or updating a page.
|
|
53
|
+
*
|
|
54
|
+
* Uses the discovered database schema to:
|
|
55
|
+
* - Set the title on the correct property (discovered name, not hardcoded)
|
|
56
|
+
* - Only include Category, Tags, and Library if the database schema confirms they exist
|
|
57
|
+
*
|
|
58
|
+
* @param title - The page title
|
|
59
|
+
* @param schema - The discovered database schema with property availability info
|
|
60
|
+
* @param category - Optional category for the Category select property
|
|
61
|
+
* @param tags - Optional tags for the Tags multi_select property
|
|
62
|
+
* @param libraryPath - Optional library path for the Library select property
|
|
63
|
+
* @returns A properties record suitable for the Notion API
|
|
64
|
+
*/
|
|
65
|
+
export function buildPageProperties(title, schema, category, tags, libraryPath) {
|
|
66
|
+
const properties = {
|
|
67
|
+
[schema.titlePropertyName]: {
|
|
68
|
+
title: [
|
|
69
|
+
{
|
|
70
|
+
text: { content: title },
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
if (category && schema.hasCategoryProperty) {
|
|
76
|
+
properties.Category = {
|
|
77
|
+
select: { name: category },
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
if (tags && tags.length > 0 && schema.hasTagsProperty) {
|
|
81
|
+
properties.Tags = {
|
|
82
|
+
multi_select: tags.map((tag) => ({ name: tag })),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
if (libraryPath && schema.hasLibraryProperty) {
|
|
86
|
+
properties.Library = {
|
|
87
|
+
select: { name: libraryPath },
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return properties;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Converts a Notion page and its blocks into an ExternalDocument.
|
|
94
|
+
*
|
|
95
|
+
* @param page - The Notion page object
|
|
96
|
+
* @param markdown - The markdown content converted from page blocks
|
|
97
|
+
* @param databaseId - The database ID (project)
|
|
98
|
+
* @returns An ExternalDocument representation
|
|
99
|
+
*/
|
|
100
|
+
function pageToExternalDocument(page, markdown, databaseId) {
|
|
101
|
+
// Extract the Library select value if present
|
|
102
|
+
const libraryProp = page.properties['Library'];
|
|
103
|
+
const libraryPath = libraryProp?.type === 'select' && libraryProp.select
|
|
104
|
+
? libraryProp.select.name
|
|
105
|
+
: undefined;
|
|
106
|
+
return {
|
|
107
|
+
externalId: page.id,
|
|
108
|
+
url: page.url,
|
|
109
|
+
provider: 'notion',
|
|
110
|
+
project: databaseId,
|
|
111
|
+
title: extractTitleFromProperties(page.properties),
|
|
112
|
+
content: markdown,
|
|
113
|
+
contentType: 'markdown',
|
|
114
|
+
updatedAt: page.last_edited_time,
|
|
115
|
+
...(libraryPath ? { libraryPath } : {}),
|
|
116
|
+
raw: page,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
// ============================================================================
|
|
120
|
+
// NotionDocumentAdapter
|
|
121
|
+
// ============================================================================
|
|
122
|
+
/**
|
|
123
|
+
* DocumentSyncAdapter implementation for Notion.
|
|
124
|
+
*
|
|
125
|
+
* Uses the NotionApiClient for all API interactions and the
|
|
126
|
+
* blocks ↔ markdown converter for content transformation.
|
|
127
|
+
*
|
|
128
|
+
* On first use of createPage() or updatePage(), the adapter discovers the
|
|
129
|
+
* database schema to find the title property name and check which optional
|
|
130
|
+
* properties exist. The schema is cached per database ID, so only one
|
|
131
|
+
* getDatabase() call is made per adapter instance per database.
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```typescript
|
|
135
|
+
* const api = new NotionApiClient({ token: 'ntn_...' });
|
|
136
|
+
* const adapter = new NotionDocumentAdapter(api);
|
|
137
|
+
*
|
|
138
|
+
* // Fetch a page
|
|
139
|
+
* const doc = await adapter.getPage('database-id', 'page-id');
|
|
140
|
+
*
|
|
141
|
+
* // List recently edited pages
|
|
142
|
+
* const docs = await adapter.listPagesSince('database-id', '2024-01-01T00:00:00Z');
|
|
143
|
+
*
|
|
144
|
+
* // Create a new page (schema is discovered automatically)
|
|
145
|
+
* const newDoc = await adapter.createPage('database-id', {
|
|
146
|
+
* title: 'New Page',
|
|
147
|
+
* content: '# Hello\n\nWorld',
|
|
148
|
+
* contentType: 'markdown',
|
|
149
|
+
* });
|
|
150
|
+
* ```
|
|
151
|
+
*/
|
|
152
|
+
export class NotionDocumentAdapter {
|
|
153
|
+
api;
|
|
154
|
+
/** Cached database schemas keyed by database ID */
|
|
155
|
+
schemaCache = new Map();
|
|
156
|
+
constructor(api) {
|
|
157
|
+
this.api = api;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Discover and cache the database schema for a given database ID.
|
|
161
|
+
*
|
|
162
|
+
* Fetches the database schema from the Notion API, discovers the title
|
|
163
|
+
* property name (every database has exactly one property of type 'title'),
|
|
164
|
+
* and checks for the existence of Category (select), Tags (multi_select),
|
|
165
|
+
* and Library (select) properties.
|
|
166
|
+
*
|
|
167
|
+
* If Category, Tags, or Library properties don't exist, attempts to
|
|
168
|
+
* auto-create them via PATCH /databases/{id}. If the integration lacks
|
|
169
|
+
* permission, the properties are simply skipped — no error is thrown.
|
|
170
|
+
*
|
|
171
|
+
* Results are cached per database ID so only one API call is made per
|
|
172
|
+
* adapter instance per database.
|
|
173
|
+
*
|
|
174
|
+
* @param databaseId - The Notion database ID to discover
|
|
175
|
+
* @returns The discovered database schema
|
|
176
|
+
* @throws Error if the database has no title property
|
|
177
|
+
*/
|
|
178
|
+
async getDatabaseSchema(databaseId) {
|
|
179
|
+
const cached = this.schemaCache.get(databaseId);
|
|
180
|
+
if (cached)
|
|
181
|
+
return cached;
|
|
182
|
+
const db = await this.api.getDatabase(databaseId);
|
|
183
|
+
// Discover the title property name
|
|
184
|
+
let titlePropertyName = null;
|
|
185
|
+
for (const [name, prop] of Object.entries(db.properties)) {
|
|
186
|
+
if (prop.type === 'title') {
|
|
187
|
+
titlePropertyName = name;
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
if (!titlePropertyName) {
|
|
192
|
+
throw new Error(`Notion database ${databaseId} has no title property. ` +
|
|
193
|
+
'Every Notion database should have exactly one property of type "title".');
|
|
194
|
+
}
|
|
195
|
+
// Check if Category, Tags, and Library properties exist with the expected types
|
|
196
|
+
let hasCategoryProperty = db.properties['Category']?.type === 'select';
|
|
197
|
+
let hasTagsProperty = db.properties['Tags']?.type === 'multi_select';
|
|
198
|
+
let hasLibraryProperty = db.properties['Library']?.type === 'select';
|
|
199
|
+
// Auto-create missing properties if needed
|
|
200
|
+
if (!hasCategoryProperty || !hasTagsProperty || !hasLibraryProperty) {
|
|
201
|
+
const propertiesToCreate = {};
|
|
202
|
+
if (!hasCategoryProperty) {
|
|
203
|
+
propertiesToCreate['Category'] = { select: { options: [] } };
|
|
204
|
+
}
|
|
205
|
+
if (!hasTagsProperty) {
|
|
206
|
+
propertiesToCreate['Tags'] = { multi_select: { options: [] } };
|
|
207
|
+
}
|
|
208
|
+
if (!hasLibraryProperty) {
|
|
209
|
+
propertiesToCreate['Library'] = { select: { options: [] } };
|
|
210
|
+
}
|
|
211
|
+
try {
|
|
212
|
+
const updatedDb = await this.api.updateDatabase(databaseId, {
|
|
213
|
+
properties: propertiesToCreate,
|
|
214
|
+
});
|
|
215
|
+
// Re-check after creation attempt
|
|
216
|
+
hasCategoryProperty = updatedDb.properties['Category']?.type === 'select';
|
|
217
|
+
hasTagsProperty = updatedDb.properties['Tags']?.type === 'multi_select';
|
|
218
|
+
hasLibraryProperty = updatedDb.properties['Library']?.type === 'select';
|
|
219
|
+
}
|
|
220
|
+
catch {
|
|
221
|
+
// If we lack permission to update the database schema, just skip.
|
|
222
|
+
// The adapter will omit Category/Tags/Library from page properties.
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
const schema = {
|
|
226
|
+
titlePropertyName,
|
|
227
|
+
hasCategoryProperty,
|
|
228
|
+
hasTagsProperty,
|
|
229
|
+
hasLibraryProperty,
|
|
230
|
+
};
|
|
231
|
+
this.schemaCache.set(databaseId, schema);
|
|
232
|
+
return schema;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Fetch a single page by its ID.
|
|
236
|
+
*
|
|
237
|
+
* Retrieves the page properties and block children, converts the blocks
|
|
238
|
+
* to markdown, and returns a normalized ExternalDocument.
|
|
239
|
+
*
|
|
240
|
+
* @param project - The Notion database ID
|
|
241
|
+
* @param externalId - The Notion page ID
|
|
242
|
+
* @returns The page as an ExternalDocument, or null if not found
|
|
243
|
+
*/
|
|
244
|
+
async getPage(project, externalId) {
|
|
245
|
+
try {
|
|
246
|
+
const [page, blocks] = await Promise.all([
|
|
247
|
+
this.api.getPage(externalId),
|
|
248
|
+
this.api.getBlocks(externalId),
|
|
249
|
+
]);
|
|
250
|
+
const markdown = notionBlocksToMarkdown(blocks);
|
|
251
|
+
return pageToExternalDocument(page, markdown, project);
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
// Return null for not-found errors (matching adapter contract)
|
|
255
|
+
if (isNotFoundError(error)) {
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
throw error;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* List pages in a database that have been edited since a given timestamp.
|
|
263
|
+
*
|
|
264
|
+
* Queries the database with a `last_edited_time > since` filter and
|
|
265
|
+
* returns all matching pages as ExternalDocuments. Block content is
|
|
266
|
+
* fetched for each page to build the full document.
|
|
267
|
+
*
|
|
268
|
+
* @param project - The Notion database ID
|
|
269
|
+
* @param since - ISO 8601 timestamp to filter by last_edited_time
|
|
270
|
+
* @returns Array of ExternalDocuments edited since the given time
|
|
271
|
+
*/
|
|
272
|
+
async listPagesSince(project, since) {
|
|
273
|
+
const filter = {
|
|
274
|
+
timestamp: 'last_edited_time',
|
|
275
|
+
last_edited_time: {
|
|
276
|
+
after: since,
|
|
277
|
+
},
|
|
278
|
+
};
|
|
279
|
+
const pages = await this.api.queryDatabaseAll(project, filter);
|
|
280
|
+
// Fetch blocks for each page and convert to ExternalDocument
|
|
281
|
+
const documents = await Promise.all(pages.map(async (page) => {
|
|
282
|
+
const blocks = await this.api.getBlocks(page.id);
|
|
283
|
+
const markdown = notionBlocksToMarkdown(blocks);
|
|
284
|
+
return pageToExternalDocument(page, markdown, project);
|
|
285
|
+
}));
|
|
286
|
+
return documents;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Create a new page in a Notion database.
|
|
290
|
+
*
|
|
291
|
+
* Discovers the database schema (if not cached), then converts the markdown
|
|
292
|
+
* content to Notion blocks and creates a page with the discovered title
|
|
293
|
+
* property name. Category (select) and Tags (multi_select) properties are
|
|
294
|
+
* only set if they exist in the database schema.
|
|
295
|
+
*
|
|
296
|
+
* Notion limits POST /pages to 100 children blocks. If the content exceeds
|
|
297
|
+
* this limit, the page is created with the first 100 blocks, and the
|
|
298
|
+
* remaining blocks are appended in batches of 100 via PATCH /blocks/{id}/children.
|
|
299
|
+
*
|
|
300
|
+
* @param project - The Notion database ID
|
|
301
|
+
* @param page - The document input with title and content
|
|
302
|
+
* @returns The created page as an ExternalDocument
|
|
303
|
+
*/
|
|
304
|
+
async createPage(project, page) {
|
|
305
|
+
// Discover the database schema to get the correct title property name
|
|
306
|
+
// and check which optional properties exist
|
|
307
|
+
const schema = await this.getDatabaseSchema(project);
|
|
308
|
+
// markdownToNotionBlocks returns NotionBlock[] which is structurally
|
|
309
|
+
// compatible with NotionBlockInput[] but needs a cast due to index signature
|
|
310
|
+
const blocks = markdownToNotionBlocks(page.content);
|
|
311
|
+
const properties = buildPageProperties(page.title, schema, page.category, page.tags, page.libraryPath);
|
|
312
|
+
// Notion limits POST /pages to 100 children blocks
|
|
313
|
+
const BLOCK_LIMIT = 100;
|
|
314
|
+
const firstBatch = blocks.slice(0, BLOCK_LIMIT);
|
|
315
|
+
const remaining = blocks.slice(BLOCK_LIMIT);
|
|
316
|
+
// Create page with up to 100 blocks
|
|
317
|
+
const createdPage = await this.api.createPage(project, properties, firstBatch);
|
|
318
|
+
// Append remaining blocks in batches of 100
|
|
319
|
+
if (remaining.length > 0) {
|
|
320
|
+
await this.api.appendBlocks(createdPage.id, remaining);
|
|
321
|
+
}
|
|
322
|
+
// Return the created page as an ExternalDocument
|
|
323
|
+
// The content is the original markdown (we just sent it as blocks)
|
|
324
|
+
return pageToExternalDocument(createdPage, page.content, project);
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Update an existing page's properties and/or content.
|
|
328
|
+
*
|
|
329
|
+
* If the updates include a title, the title property is updated using the
|
|
330
|
+
* discovered property name from the database schema.
|
|
331
|
+
* If the updates include content, all existing blocks are replaced
|
|
332
|
+
* with new blocks converted from the updated markdown.
|
|
333
|
+
*
|
|
334
|
+
* @param project - The Notion database ID
|
|
335
|
+
* @param externalId - The Notion page ID to update
|
|
336
|
+
* @param updates - Partial updates to apply
|
|
337
|
+
* @returns The updated page as an ExternalDocument
|
|
338
|
+
*/
|
|
339
|
+
async updatePage(project, externalId, updates) {
|
|
340
|
+
// Update properties if title, category, tags, or libraryPath changed
|
|
341
|
+
const hasPropertyUpdates = updates.title !== undefined ||
|
|
342
|
+
updates.category !== undefined ||
|
|
343
|
+
updates.tags !== undefined ||
|
|
344
|
+
updates.libraryPath !== undefined;
|
|
345
|
+
if (hasPropertyUpdates) {
|
|
346
|
+
const schema = await this.getDatabaseSchema(project);
|
|
347
|
+
// Build properties selectively — only include fields being updated
|
|
348
|
+
// to avoid overwriting unchanged properties (e.g., setting title to ''
|
|
349
|
+
// when only category changed)
|
|
350
|
+
const properties = {};
|
|
351
|
+
if (updates.title !== undefined) {
|
|
352
|
+
properties[schema.titlePropertyName] = {
|
|
353
|
+
title: [{ text: { content: updates.title } }],
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
if (updates.category !== undefined && schema.hasCategoryProperty) {
|
|
357
|
+
properties.Category = {
|
|
358
|
+
select: { name: updates.category },
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
if (updates.tags !== undefined && updates.tags.length > 0 && schema.hasTagsProperty) {
|
|
362
|
+
properties.Tags = {
|
|
363
|
+
multi_select: updates.tags.map((tag) => ({ name: tag })),
|
|
364
|
+
};
|
|
365
|
+
}
|
|
366
|
+
if (updates.libraryPath !== undefined && schema.hasLibraryProperty) {
|
|
367
|
+
properties.Library = {
|
|
368
|
+
select: { name: updates.libraryPath },
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
if (Object.keys(properties).length > 0) {
|
|
372
|
+
await this.api.updatePage(externalId, properties);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
// Update content blocks if content changed
|
|
376
|
+
if (updates.content !== undefined) {
|
|
377
|
+
const contentBlocks = markdownToNotionBlocks(updates.content);
|
|
378
|
+
await this.api.updatePageContent(externalId, contentBlocks);
|
|
379
|
+
}
|
|
380
|
+
// Fetch the updated page to return a complete ExternalDocument
|
|
381
|
+
const [updatedPage, blocks] = await Promise.all([
|
|
382
|
+
this.api.getPage(externalId),
|
|
383
|
+
this.api.getBlocks(externalId),
|
|
384
|
+
]);
|
|
385
|
+
const markdown = notionBlocksToMarkdown(blocks);
|
|
386
|
+
return pageToExternalDocument(updatedPage, markdown, project);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
// ============================================================================
|
|
390
|
+
// Error Helpers
|
|
391
|
+
// ============================================================================
|
|
392
|
+
/**
|
|
393
|
+
* Checks if an error represents a "not found" response from the Notion API.
|
|
394
|
+
*/
|
|
395
|
+
function isNotFoundError(error) {
|
|
396
|
+
if (error && typeof error === 'object' && 'isNotFound' in error) {
|
|
397
|
+
return error.isNotFound;
|
|
398
|
+
}
|
|
399
|
+
return false;
|
|
400
|
+
}
|
|
401
|
+
// ============================================================================
|
|
402
|
+
// Factory
|
|
403
|
+
// ============================================================================
|
|
404
|
+
/**
|
|
405
|
+
* Create a NotionDocumentAdapter from a NotionApiClient.
|
|
406
|
+
*
|
|
407
|
+
* @param api - A configured NotionApiClient
|
|
408
|
+
* @returns A DocumentSyncAdapter for Notion
|
|
409
|
+
*/
|
|
410
|
+
export function createNotionDocumentAdapter(api) {
|
|
411
|
+
return new NotionDocumentAdapter(api);
|
|
412
|
+
}
|
|
413
|
+
//# sourceMappingURL=notion-document-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notion-document-adapter.js","sourceRoot":"","sources":["../../../../src/external-sync/providers/notion/notion-document-adapter.ts"],"names":[],"mappings":"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"}
|