@vibesdotdev/integrations-notion 0.0.0-stage → 1.0.0-rc.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 +126 -0
- package/README.md +142 -2
- package/dist/client/helper.d.ts +16 -0
- package/dist/client/helper.d.ts.map +1 -0
- package/dist/client/helper.js +17 -0
- package/dist/client/helper.js.map +1 -0
- package/dist/client/index.d.ts +3 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +3 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/runtime-client.d.ts +89 -0
- package/dist/client/runtime-client.d.ts.map +1 -0
- package/dist/client/runtime-client.js +130 -0
- package/dist/client/runtime-client.js.map +1 -0
- package/dist/docs/integrations-notion.docs.descriptor.d.ts +19 -0
- package/dist/docs/integrations-notion.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/integrations-notion.docs.descriptor.js +62 -0
- package/dist/docs/integrations-notion.docs.descriptor.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations-notion.plugin.d.ts +19 -0
- package/dist/integrations-notion.plugin.d.ts.map +1 -0
- package/dist/integrations-notion.plugin.js +37 -0
- package/dist/integrations-notion.plugin.js.map +1 -0
- package/dist/notion/index.d.ts +12 -0
- package/dist/notion/index.d.ts.map +1 -0
- package/dist/notion/index.js +13 -0
- package/dist/notion/index.js.map +1 -0
- package/dist/notion/notion-client.d.ts +119 -0
- package/dist/notion/notion-client.d.ts.map +1 -0
- package/dist/notion/notion-client.js +438 -0
- package/dist/notion/notion-client.js.map +1 -0
- package/dist/notion/notion-implementation.d.ts +72 -0
- package/dist/notion/notion-implementation.d.ts.map +1 -0
- package/dist/notion/notion-implementation.js +222 -0
- package/dist/notion/notion-implementation.js.map +1 -0
- package/dist/notion/notion-schemas.d.ts +2 -0
- package/dist/notion/notion-schemas.d.ts.map +1 -0
- package/dist/notion/notion-schemas.js +2 -0
- package/dist/notion/notion-schemas.js.map +1 -0
- package/dist/notion/system.integration.notion.descriptor.d.ts +69 -0
- package/dist/notion/system.integration.notion.descriptor.d.ts.map +1 -0
- package/dist/notion/system.integration.notion.descriptor.js +109 -0
- package/dist/notion/system.integration.notion.descriptor.js.map +1 -0
- package/dist/notion.catalog.plugin.d.ts +78 -0
- package/dist/notion.catalog.plugin.d.ts.map +1 -0
- package/dist/notion.catalog.plugin.js +21 -0
- package/dist/notion.catalog.plugin.js.map +1 -0
- package/dist/notion.client.plugin.d.ts +3 -0
- package/dist/notion.client.plugin.d.ts.map +1 -0
- package/dist/notion.client.plugin.js +49 -0
- package/dist/notion.client.plugin.js.map +1 -0
- package/dist/schemas/json.d.ts +6 -0
- package/dist/schemas/json.d.ts.map +1 -0
- package/dist/schemas/json.js +4 -0
- package/dist/schemas/json.js.map +1 -0
- package/dist/schemas/notion.d.ts +221 -0
- package/dist/schemas/notion.d.ts.map +1 -0
- package/dist/schemas/notion.js +130 -0
- package/dist/schemas/notion.js.map +1 -0
- package/dist/schemas/oauth.d.ts +63 -0
- package/dist/schemas/oauth.d.ts.map +1 -0
- package/dist/schemas/oauth.js +15 -0
- package/dist/schemas/oauth.js.map +1 -0
- package/dist/schemas/operations.d.ts +556 -0
- package/dist/schemas/operations.d.ts.map +1 -0
- package/dist/schemas/operations.js +39 -0
- package/dist/schemas/operations.js.map +1 -0
- package/dist/schemas/sync.d.ts +32 -0
- package/dist/schemas/sync.d.ts.map +1 -0
- package/dist/schemas/sync.js +12 -0
- package/dist/schemas/sync.js.map +1 -0
- package/dist/schemas/tools.d.ts +239 -0
- package/dist/schemas/tools.d.ts.map +1 -0
- package/dist/schemas/tools.js +93 -0
- package/dist/schemas/tools.js.map +1 -0
- package/dist/schemas/vendor.d.ts +150 -0
- package/dist/schemas/vendor.d.ts.map +1 -0
- package/dist/schemas/vendor.js +31 -0
- package/dist/schemas/vendor.js.map +1 -0
- package/dist/server/oauth.d.ts +17 -0
- package/dist/server/oauth.d.ts.map +1 -0
- package/dist/server/oauth.js +64 -0
- package/dist/server/oauth.js.map +1 -0
- package/dist/sync/knowledge.notion.sync-mapping.descriptor.d.ts +15 -0
- package/dist/sync/knowledge.notion.sync-mapping.descriptor.d.ts.map +1 -0
- package/dist/sync/knowledge.notion.sync-mapping.descriptor.js +15 -0
- package/dist/sync/knowledge.notion.sync-mapping.descriptor.js.map +1 -0
- package/dist/sync/knowledge.notion.sync-mapping.impl.d.ts +13 -0
- package/dist/sync/knowledge.notion.sync-mapping.impl.d.ts.map +1 -0
- package/dist/sync/knowledge.notion.sync-mapping.impl.js +27 -0
- package/dist/sync/knowledge.notion.sync-mapping.impl.js.map +1 -0
- package/dist/sync/notion-record-projection.d.ts +16 -0
- package/dist/sync/notion-record-projection.d.ts.map +1 -0
- package/dist/sync/notion-record-projection.js +50 -0
- package/dist/sync/notion-record-projection.js.map +1 -0
- package/dist/sync/notion.sync-endpoint.descriptor.d.ts +14 -0
- package/dist/sync/notion.sync-endpoint.descriptor.d.ts.map +1 -0
- package/dist/sync/notion.sync-endpoint.descriptor.js +10 -0
- package/dist/sync/notion.sync-endpoint.descriptor.js.map +1 -0
- package/dist/sync/notion.sync-endpoint.impl.d.ts +55 -0
- package/dist/sync/notion.sync-endpoint.impl.d.ts.map +1 -0
- package/dist/sync/notion.sync-endpoint.impl.js +557 -0
- package/dist/sync/notion.sync-endpoint.impl.js.map +1 -0
- package/dist/sync/projects.notion.sync-mapping.descriptor.d.ts +15 -0
- package/dist/sync/projects.notion.sync-mapping.descriptor.d.ts.map +1 -0
- package/dist/sync/projects.notion.sync-mapping.descriptor.js +15 -0
- package/dist/sync/projects.notion.sync-mapping.descriptor.js.map +1 -0
- package/dist/sync/projects.notion.sync-mapping.impl.d.ts +13 -0
- package/dist/sync/projects.notion.sync-mapping.impl.d.ts.map +1 -0
- package/dist/sync/projects.notion.sync-mapping.impl.js +26 -0
- package/dist/sync/projects.notion.sync-mapping.impl.js.map +1 -0
- package/dist/sync/work.notion.sync-mapping.descriptor.d.ts +15 -0
- package/dist/sync/work.notion.sync-mapping.descriptor.d.ts.map +1 -0
- package/dist/sync/work.notion.sync-mapping.descriptor.js +15 -0
- package/dist/sync/work.notion.sync-mapping.descriptor.js.map +1 -0
- package/dist/sync/work.notion.sync-mapping.impl.d.ts +13 -0
- package/dist/sync/work.notion.sync-mapping.impl.d.ts.map +1 -0
- package/dist/sync/work.notion.sync-mapping.impl.js +63 -0
- package/dist/sync/work.notion.sync-mapping.impl.js.map +1 -0
- package/dist/tools/descriptors.d.ts +781 -0
- package/dist/tools/descriptors.d.ts.map +1 -0
- package/dist/tools/descriptors.js +129 -0
- package/dist/tools/descriptors.js.map +1 -0
- package/dist/tools/impl.d.ts +12 -0
- package/dist/tools/impl.d.ts.map +1 -0
- package/dist/tools/impl.js +61 -0
- package/dist/tools/impl.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +3 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/schemas.d.ts +2 -0
- package/dist/tools/schemas.d.ts.map +1 -0
- package/dist/tools/schemas.js +2 -0
- package/dist/tools/schemas.js.map +1 -0
- package/package.json +105 -4
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
import { CaughtFailureSchema, settle, valueFreeFailure } from '@vibesdotdev/kernel';
|
|
2
|
+
import { CapabilityError } from '@vibesdotdev/kernel';
|
|
3
|
+
import * as z from 'zod/v4';
|
|
4
|
+
import { JsonObjectSchema } from "../schemas/json.js";
|
|
5
|
+
import { contract, SearchInputSchema, BlockChildrenInputSchema, AppendBlockChildrenInputSchema } from "../schemas/operations.js";
|
|
6
|
+
import { VendorUserSchema, VendorDatabaseSchema, VendorDataSourceSchema, VendorPropertySchema, VendorPageSchema, VendorBlockSchema, VendorListSchema, VendorObjectSchema } from "../schemas/vendor.js";
|
|
7
|
+
import { NotionUserSchema, NotionPageSchema, NotionDatabaseSchema, NotionDataSourceSchema, NotionBlockSchema, CreateNotionPageSchema, UpdateNotionPageSchema, QueryNotionDataSourceSchema } from "../schemas/notion.js";
|
|
8
|
+
import { fetchWithRetry } from '@vibesdotdev/integrations/http';
|
|
9
|
+
const NOTION_API_BASE = 'https://api.notion.com/v1';
|
|
10
|
+
export const NOTION_API_VERSION = '2026-03-11';
|
|
11
|
+
/**
|
|
12
|
+
* Notion API client.
|
|
13
|
+
*
|
|
14
|
+
* Provides methods for CRUD operations on pages, databases, and blocks.
|
|
15
|
+
* Uses the Notion REST API with authentication via integration token.
|
|
16
|
+
*/
|
|
17
|
+
export class NotionAPIClient {
|
|
18
|
+
apiToken;
|
|
19
|
+
fetchFn;
|
|
20
|
+
runtime;
|
|
21
|
+
constructor(config) {
|
|
22
|
+
if (!config.apiToken && !config.fetchFn) {
|
|
23
|
+
throw new NotionAPIError('Notion requires a token or an authenticated fetch implementation');
|
|
24
|
+
}
|
|
25
|
+
this.apiToken = config.apiToken;
|
|
26
|
+
this.runtime = config.runtime;
|
|
27
|
+
this.fetchFn = config.fetchFn ?? fetch;
|
|
28
|
+
}
|
|
29
|
+
// Users
|
|
30
|
+
/**
|
|
31
|
+
* Get the authenticated bot user's information.
|
|
32
|
+
*/
|
|
33
|
+
async getMe() {
|
|
34
|
+
const response = await this.doRequest('/users/me');
|
|
35
|
+
return this.normalizeUser(response);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* List all users in the workspace.
|
|
39
|
+
*/
|
|
40
|
+
async listUsers() {
|
|
41
|
+
const users = [];
|
|
42
|
+
let hasMore = true;
|
|
43
|
+
let startCursor;
|
|
44
|
+
while (hasMore) {
|
|
45
|
+
const params = startCursor ? `?start_cursor=${startCursor}` : '';
|
|
46
|
+
const response = await this.doRequest(`/users${params}`);
|
|
47
|
+
const list = contract(VendorListSchema).parse(response);
|
|
48
|
+
const results = list.results;
|
|
49
|
+
for (const user of results) {
|
|
50
|
+
users.push(this.normalizeUser(user));
|
|
51
|
+
}
|
|
52
|
+
hasMore = list.has_more;
|
|
53
|
+
startCursor = list.next_cursor ?? undefined;
|
|
54
|
+
}
|
|
55
|
+
return users;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get a single user by ID.
|
|
59
|
+
*/
|
|
60
|
+
async getUser(userId) {
|
|
61
|
+
try {
|
|
62
|
+
const response = await this.doRequest(`/users/${userId}`);
|
|
63
|
+
return this.normalizeUser(response);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
if (error instanceof Error && CapabilityError.isAbsenceOf(error, 'notion/object', `/users/${userId}`)) {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Databases
|
|
73
|
+
/**
|
|
74
|
+
* Get a database by ID.
|
|
75
|
+
*/
|
|
76
|
+
async getDatabase(databaseId) {
|
|
77
|
+
try {
|
|
78
|
+
const response = await this.doRequest(`/databases/${databaseId}`);
|
|
79
|
+
return this.normalizeDatabase(response);
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
if (error instanceof Error && CapabilityError.isAbsenceOf(error, 'notion/object', `/databases/${databaseId}`)) {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get a data source by ID.
|
|
90
|
+
*/
|
|
91
|
+
async getDataSource(dataSourceId) {
|
|
92
|
+
try {
|
|
93
|
+
const response = await this.doRequest(`/data_sources/${dataSourceId}`);
|
|
94
|
+
return this.normalizeDataSource(response);
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
if (error instanceof Error && CapabilityError.isAbsenceOf(error, 'notion/object', `/data_sources/${dataSourceId}`)) {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
throw error;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Query a data source to get pages/items.
|
|
105
|
+
*/
|
|
106
|
+
async queryDataSource(input) {
|
|
107
|
+
input = contract(QueryNotionDataSourceSchema).parse(input);
|
|
108
|
+
const body = {};
|
|
109
|
+
if (input.filter) {
|
|
110
|
+
body.filter = input.filter;
|
|
111
|
+
}
|
|
112
|
+
if (input.sorts) {
|
|
113
|
+
body.sorts = input.sorts;
|
|
114
|
+
}
|
|
115
|
+
if (input.pageSize) {
|
|
116
|
+
body.page_size = input.pageSize;
|
|
117
|
+
}
|
|
118
|
+
if (input.startCursor) {
|
|
119
|
+
body.start_cursor = input.startCursor;
|
|
120
|
+
}
|
|
121
|
+
// This client returns normalized pages. Wiki data sources can otherwise
|
|
122
|
+
// include child data-source objects in the same result list.
|
|
123
|
+
body.result_type = 'page';
|
|
124
|
+
const query = async (dataSourceId) => {
|
|
125
|
+
const response = await this.doRequest(`/data_sources/${dataSourceId}/query`, {
|
|
126
|
+
method: 'POST',
|
|
127
|
+
body: JSON.stringify(body)
|
|
128
|
+
});
|
|
129
|
+
const list = contract(VendorListSchema).parse(response);
|
|
130
|
+
return {
|
|
131
|
+
dataSourceId,
|
|
132
|
+
pages: list.results.map((page) => this.normalizePage(page)),
|
|
133
|
+
hasMore: list.has_more,
|
|
134
|
+
nextCursor: list.next_cursor ?? undefined
|
|
135
|
+
};
|
|
136
|
+
};
|
|
137
|
+
try {
|
|
138
|
+
return await query(input.dataSourceId);
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
// A database id answers this query with a confirmed absence; fall back to
|
|
142
|
+
// the database's single child data source.
|
|
143
|
+
if (error instanceof Error &&
|
|
144
|
+
CapabilityError.isAbsenceOf(error, 'notion/object', `/data_sources/${input.dataSourceId}/query`)) {
|
|
145
|
+
const database = await this.getDatabase(input.dataSourceId);
|
|
146
|
+
if (!database)
|
|
147
|
+
throw error;
|
|
148
|
+
if (database.dataSources.length !== 1) {
|
|
149
|
+
throw new CapabilityError('This database does not have exactly one child data source; choose one from getDatabase().', 'INVALID_INPUT', {
|
|
150
|
+
reason: 'notion-database-data-source-ambiguous',
|
|
151
|
+
retryable: false,
|
|
152
|
+
details: { childDataSourceCount: database.dataSources.length },
|
|
153
|
+
recoveryHint: 'Call getDatabase(), then pass the selected child data source id to queryDataSource.'
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
return query(database.dataSources[0].id);
|
|
157
|
+
}
|
|
158
|
+
throw error;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Search for data sources and pages.
|
|
163
|
+
*/
|
|
164
|
+
async search(query, options) {
|
|
165
|
+
const input = contract(SearchInputSchema).parse({ ...options, query });
|
|
166
|
+
const body = {};
|
|
167
|
+
if (input.query) {
|
|
168
|
+
body.query = input.query;
|
|
169
|
+
}
|
|
170
|
+
if (input.filter) {
|
|
171
|
+
body.filter = { value: input.filter, property: 'object' };
|
|
172
|
+
}
|
|
173
|
+
if (input.pageSize) {
|
|
174
|
+
body.page_size = input.pageSize;
|
|
175
|
+
}
|
|
176
|
+
if (input.startCursor) {
|
|
177
|
+
body.start_cursor = input.startCursor;
|
|
178
|
+
}
|
|
179
|
+
const response = await this.doRequest('/search', {
|
|
180
|
+
method: 'POST',
|
|
181
|
+
body: JSON.stringify(body)
|
|
182
|
+
});
|
|
183
|
+
const list = contract(VendorListSchema).parse(response);
|
|
184
|
+
const results = list.results;
|
|
185
|
+
const dataSources = [];
|
|
186
|
+
const pages = [];
|
|
187
|
+
for (const result of results) {
|
|
188
|
+
const typed = contract(VendorObjectSchema).parse(result);
|
|
189
|
+
if (typed.object === 'data_source') {
|
|
190
|
+
dataSources.push(this.normalizeDataSource(result));
|
|
191
|
+
}
|
|
192
|
+
else if (typed.object === 'page') {
|
|
193
|
+
pages.push(this.normalizePage(result));
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return {
|
|
197
|
+
dataSources,
|
|
198
|
+
pages,
|
|
199
|
+
hasMore: list.has_more,
|
|
200
|
+
nextCursor: list.next_cursor ?? undefined
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
// Pages
|
|
204
|
+
/**
|
|
205
|
+
* Get a page by ID.
|
|
206
|
+
*/
|
|
207
|
+
async getPage(pageId) {
|
|
208
|
+
try {
|
|
209
|
+
const response = await this.doRequest(`/pages/${pageId}`);
|
|
210
|
+
return this.normalizePage(response);
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
if (error instanceof Error && CapabilityError.isAbsenceOf(error, 'notion/object', `/pages/${pageId}`)) {
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
throw error;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Create a new page.
|
|
221
|
+
*/
|
|
222
|
+
async createPage(input) {
|
|
223
|
+
input = contract(CreateNotionPageSchema).parse(input);
|
|
224
|
+
const parent = {};
|
|
225
|
+
const dataSourceId = input.parentDataSourceId ?? input.parentDatabaseId;
|
|
226
|
+
if (dataSourceId) {
|
|
227
|
+
parent.data_source_id = dataSourceId;
|
|
228
|
+
parent.type = 'data_source_id';
|
|
229
|
+
}
|
|
230
|
+
else if (input.parentPageId) {
|
|
231
|
+
parent.page_id = input.parentPageId;
|
|
232
|
+
parent.type = 'page_id';
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
throw new NotionAPIError('Either parentDataSourceId or parentPageId is required');
|
|
236
|
+
}
|
|
237
|
+
const body = {
|
|
238
|
+
parent,
|
|
239
|
+
properties: input.properties
|
|
240
|
+
};
|
|
241
|
+
if (input.icon) {
|
|
242
|
+
body.icon = { emoji: input.icon };
|
|
243
|
+
}
|
|
244
|
+
if (input.children) {
|
|
245
|
+
body.children = input.children;
|
|
246
|
+
}
|
|
247
|
+
const response = await this.doRequest('/pages', {
|
|
248
|
+
method: 'POST',
|
|
249
|
+
body: JSON.stringify(body)
|
|
250
|
+
});
|
|
251
|
+
return this.normalizePage(response);
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Update an existing page.
|
|
255
|
+
*/
|
|
256
|
+
async updatePage(pageId, input) {
|
|
257
|
+
input = contract(UpdateNotionPageSchema).parse(input);
|
|
258
|
+
const body = {};
|
|
259
|
+
if (input.properties) {
|
|
260
|
+
body.properties = input.properties;
|
|
261
|
+
}
|
|
262
|
+
if (input.icon !== undefined) {
|
|
263
|
+
body.icon = input.icon ? { emoji: input.icon } : null;
|
|
264
|
+
}
|
|
265
|
+
if (input.cover !== undefined) {
|
|
266
|
+
body.cover = input.cover ? { external: { url: input.cover } } : null;
|
|
267
|
+
}
|
|
268
|
+
const inTrash = input.inTrash ?? input.archived;
|
|
269
|
+
if (inTrash !== undefined) {
|
|
270
|
+
body.in_trash = inTrash;
|
|
271
|
+
}
|
|
272
|
+
const response = await this.doRequest(`/pages/${pageId}`, {
|
|
273
|
+
method: 'PATCH',
|
|
274
|
+
body: JSON.stringify(body)
|
|
275
|
+
});
|
|
276
|
+
return this.normalizePage(response);
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Move a page to the trash.
|
|
280
|
+
*/
|
|
281
|
+
async archivePage(pageId) {
|
|
282
|
+
await this.doRequest(`/pages/${pageId}`, {
|
|
283
|
+
method: 'PATCH',
|
|
284
|
+
body: JSON.stringify({ in_trash: true })
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Restore a trashed page.
|
|
289
|
+
*/
|
|
290
|
+
async restorePage(pageId) {
|
|
291
|
+
await this.doRequest(`/pages/${pageId}`, {
|
|
292
|
+
method: 'PATCH',
|
|
293
|
+
body: JSON.stringify({ in_trash: false })
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Permanently delete a page (move to trash).
|
|
298
|
+
* Note: Notion API doesn't support hard delete, this moves to trash.
|
|
299
|
+
*/
|
|
300
|
+
async deletePage(pageId) {
|
|
301
|
+
await this.archivePage(pageId);
|
|
302
|
+
}
|
|
303
|
+
// Blocks (Page Content)
|
|
304
|
+
/**
|
|
305
|
+
* Get block children (content of a page or block).
|
|
306
|
+
*/
|
|
307
|
+
async getBlockChildren(blockId, options) {
|
|
308
|
+
const input = contract(BlockChildrenInputSchema).parse({ ...options, blockId });
|
|
309
|
+
const params = new URLSearchParams();
|
|
310
|
+
if (input.pageSize) {
|
|
311
|
+
params.append('page_size', input.pageSize.toString());
|
|
312
|
+
}
|
|
313
|
+
if (input.startCursor) {
|
|
314
|
+
params.append('start_cursor', input.startCursor);
|
|
315
|
+
}
|
|
316
|
+
const response = await this.doRequest(`/blocks/${input.blockId}/children?${params.toString()}`);
|
|
317
|
+
const list = contract(VendorListSchema).parse(response);
|
|
318
|
+
const results = list.results;
|
|
319
|
+
const blocks = results.map((block) => this.normalizeBlock(block));
|
|
320
|
+
return {
|
|
321
|
+
blocks,
|
|
322
|
+
hasMore: list.has_more,
|
|
323
|
+
nextCursor: list.next_cursor ?? undefined
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Append block children to a page or block.
|
|
328
|
+
*/
|
|
329
|
+
async appendBlockChildren(blockId, children) {
|
|
330
|
+
const input = contract(AppendBlockChildrenInputSchema).parse({ blockId, children });
|
|
331
|
+
const response = await this.doRequest(`/blocks/${input.blockId}/children`, {
|
|
332
|
+
method: 'PATCH',
|
|
333
|
+
body: JSON.stringify({ children: input.children })
|
|
334
|
+
});
|
|
335
|
+
const list = contract(VendorListSchema).parse(response);
|
|
336
|
+
const results = list.results;
|
|
337
|
+
return results.map((block) => this.normalizeBlock(block));
|
|
338
|
+
}
|
|
339
|
+
// Private Helpers
|
|
340
|
+
async doRequest(path, options = {}) {
|
|
341
|
+
let response;
|
|
342
|
+
try {
|
|
343
|
+
const headers = new Headers({
|
|
344
|
+
'Notion-Version': NOTION_API_VERSION,
|
|
345
|
+
'Content-Type': 'application/json',
|
|
346
|
+
...options.headers
|
|
347
|
+
});
|
|
348
|
+
if (this.apiToken !== undefined)
|
|
349
|
+
headers.set('Authorization', `Bearer ${this.apiToken}`);
|
|
350
|
+
response = await fetchWithRetry(this.runtime, this.fetchFn, `${NOTION_API_BASE}${path}`, {
|
|
351
|
+
...options,
|
|
352
|
+
headers
|
|
353
|
+
}, { maxAttempts: options.method === undefined || options.method === 'GET' || path.endsWith('/query') || path === '/search' ? 4 : 1 });
|
|
354
|
+
}
|
|
355
|
+
catch (cause) {
|
|
356
|
+
if (cause instanceof CapabilityError)
|
|
357
|
+
throw cause;
|
|
358
|
+
throw new CapabilityError('Notion transport failed.', 'INTERNAL', { reason: 'notion-transport-unknown', cause: valueFreeFailure(CaughtFailureSchema.parse(cause)) });
|
|
359
|
+
}
|
|
360
|
+
if (!response.ok) {
|
|
361
|
+
const released = await settle(() => response.body?.cancel());
|
|
362
|
+
if (!released.ok) {
|
|
363
|
+
throw new CapabilityError('Notion response could not be released.', 'INTERNAL', {
|
|
364
|
+
reason: 'notion-response-release-failed',
|
|
365
|
+
details: { status: response.status },
|
|
366
|
+
cause: released.cause instanceof CapabilityError ? released.cause : valueFreeFailure(released.cause)
|
|
367
|
+
});
|
|
368
|
+
}
|
|
369
|
+
throw new NotionAPIError('Notion request failed.', response.status, undefined, path);
|
|
370
|
+
}
|
|
371
|
+
let data;
|
|
372
|
+
try {
|
|
373
|
+
data = await response.json();
|
|
374
|
+
}
|
|
375
|
+
catch (cause) {
|
|
376
|
+
if (cause instanceof CapabilityError)
|
|
377
|
+
throw cause;
|
|
378
|
+
throw new CapabilityError('Notion response is malformed.', 'INTERNAL', { reason: 'notion-response-invalid', cause: valueFreeFailure(CaughtFailureSchema.parse(cause)) });
|
|
379
|
+
}
|
|
380
|
+
return contract(JsonObjectSchema).parse(data);
|
|
381
|
+
}
|
|
382
|
+
normalizeUser(data) {
|
|
383
|
+
const raw = contract(VendorUserSchema).parse(data);
|
|
384
|
+
return contract(NotionUserSchema).parse({ id: raw.id, name: raw.name ?? '', email: raw.person?.email, avatarUrl: raw.avatar_url ?? undefined, type: raw.type ?? 'person' });
|
|
385
|
+
}
|
|
386
|
+
normalizeDatabase(data) {
|
|
387
|
+
const raw = contract(VendorDatabaseSchema).parse(data);
|
|
388
|
+
return contract(NotionDatabaseSchema).parse({
|
|
389
|
+
id: raw.id, name: raw.title, url: raw.url, dataSources: raw.data_sources, properties: [],
|
|
390
|
+
createdAt: raw.created_time ?? '', updatedAt: raw.last_edited_time ?? '',
|
|
391
|
+
parentPageId: raw.parent.page_id, workspaceId: raw.workspace_id, inTrash: raw.in_trash
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
normalizeDataSource(data) {
|
|
395
|
+
const raw = contract(VendorDataSourceSchema).parse(data);
|
|
396
|
+
const properties = Object.entries(raw.properties).map(([name, value]) => ({
|
|
397
|
+
...contract(VendorPropertySchema).parse(value), name, config: value
|
|
398
|
+
}));
|
|
399
|
+
return contract(NotionDataSourceSchema).parse({
|
|
400
|
+
id: raw.id, name: raw.title || raw.name || '', url: raw.url, properties,
|
|
401
|
+
createdAt: raw.created_time ?? '', updatedAt: raw.last_edited_time ?? '',
|
|
402
|
+
parentDatabaseId: raw.parent.database_id, inTrash: raw.in_trash
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
normalizePage(data) {
|
|
406
|
+
const raw = contract(VendorPageSchema).parse(data);
|
|
407
|
+
const properties = Object.fromEntries(Object.entries(raw.properties).map(([name, value]) => {
|
|
408
|
+
const property = contract(z.object({ id: z.string(), type: z.string() })).parse(value);
|
|
409
|
+
return [name, { ...property, value }];
|
|
410
|
+
}));
|
|
411
|
+
return contract(NotionPageSchema).parse({
|
|
412
|
+
id: raw.id, url: raw.url, properties,
|
|
413
|
+
icon: raw.icon?.emoji ?? raw.icon?.external?.url, cover: raw.cover?.external?.url,
|
|
414
|
+
createdAt: raw.created_time ?? '', updatedAt: raw.last_edited_time ?? '',
|
|
415
|
+
createdBy: raw.created_by ? this.normalizeUser(raw.created_by) : undefined,
|
|
416
|
+
lastEditedBy: raw.last_edited_by ? this.normalizeUser(raw.last_edited_by) : undefined,
|
|
417
|
+
parentDataSourceId: raw.parent.data_source_id, parentDatabaseId: raw.parent.database_id,
|
|
418
|
+
parentPageId: raw.parent.page_id, inTrash: raw.in_trash, archived: raw.in_trash || raw.archived === true
|
|
419
|
+
});
|
|
420
|
+
}
|
|
421
|
+
normalizeBlock(data) {
|
|
422
|
+
const raw = contract(VendorBlockSchema).parse(data);
|
|
423
|
+
return contract(NotionBlockSchema).parse({ id: raw.id, type: raw.type, content: raw[raw.type], hasChildren: raw.has_children });
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
/** Compatibility constructor; failure codes and reasons belong to CapabilityError. */
|
|
427
|
+
export class NotionAPIError extends CapabilityError {
|
|
428
|
+
status;
|
|
429
|
+
constructor(_message, status, _vendorCode, subject) {
|
|
430
|
+
super('Notion request failed.', status === 404 ? 'NOT_FOUND' : status === 401 || status === 403 ? 'PERMISSION_DENIED' : 'INTERNAL', {
|
|
431
|
+
reason: status === 404 ? 'record-absent' : 'notion-request-failed',
|
|
432
|
+
details: { status: status ?? 0, kind: 'notion/object', id: subject ?? '' }
|
|
433
|
+
});
|
|
434
|
+
this.status = status;
|
|
435
|
+
this.name = 'NotionAPIError';
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
//# sourceMappingURL=notion-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notion-client.js","sourceRoot":"","sources":["../../src/notion/notion-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { NotionOperationInput } from '../schemas/operations.ts';
|
|
2
|
+
import { type JsonObject } from '../schemas/json.ts';
|
|
3
|
+
import type { IntegrationOAuthAuthorization, IntegrationOAuthCompletion, IntegrationOAuthStart, IntegrationConnectionSelector, IntegrationOperationResult } from '@vibesdotdev/integrations/schemas/integration-descriptor';
|
|
4
|
+
import { BaseIntegrationProvider } from '@vibesdotdev/integrations/kinds/integration';
|
|
5
|
+
import { NotionAPIClient } from './notion-client.ts';
|
|
6
|
+
import { type NotionDataSource, type NotionDatabase, type NotionPage, type NotionPullOptions, type NotionPullResult } from './notion-schemas.ts';
|
|
7
|
+
/**
|
|
8
|
+
* Notion integration implementation.
|
|
9
|
+
*
|
|
10
|
+
* Provides authenticated access to the Notion API with bounded pull transport.
|
|
11
|
+
* Credential and config resolution is inherited from
|
|
12
|
+
* `BaseIntegrationProvider` (consume-don't-reimplement): the base resolver
|
|
13
|
+
* reads the live request orgId on every call (the provider instance is
|
|
14
|
+
* value-cached by the runtime, so a constructor-snapshot orgId would bleed
|
|
15
|
+
* org A's credentials into org B's requests) and delivers credential
|
|
16
|
+
* references for the Secrets request owner. NOTION_API_TOKEN is a declared
|
|
17
|
+
* secret reference, never a feature-owned host environment read.
|
|
18
|
+
*/
|
|
19
|
+
export declare class NotionIntegration extends BaseIntegrationProvider {
|
|
20
|
+
startAuthorization(_input: IntegrationOAuthStart): Promise<IntegrationOAuthAuthorization>;
|
|
21
|
+
completeAuthorization(_input: IntegrationOAuthCompletion): Promise<void>;
|
|
22
|
+
invokeOperation<T = unknown>(opId: string, args?: NotionOperationInput): Promise<IntegrationOperationResult<T>>;
|
|
23
|
+
invokeOperationForConnection<T = unknown>(selector: Readonly<IntegrationConnectionSelector>, opId: string, args?: NotionOperationInput): Promise<IntegrationOperationResult<T>>;
|
|
24
|
+
private dispatch;
|
|
25
|
+
private dispatchClientOp;
|
|
26
|
+
/**
|
|
27
|
+
* Create a reference-bound client for the current connection. Secrets resolves
|
|
28
|
+
* credential values at each HTTP use, including after credential rotation.
|
|
29
|
+
*/
|
|
30
|
+
getClient(selector?: Readonly<IntegrationConnectionSelector>): Promise<NotionAPIClient>;
|
|
31
|
+
private createClient;
|
|
32
|
+
/**
|
|
33
|
+
* Pull one cursor page from a Notion data source. If no data source id is
|
|
34
|
+
* passed, the provider resolves the canonical `dataSourceId` config.
|
|
35
|
+
* With neither configured, it performs the workspace-page-search fallback
|
|
36
|
+
* without exposing the credential to the caller.
|
|
37
|
+
*
|
|
38
|
+
* This is provider transport, not a claim that records were synchronized.
|
|
39
|
+
* Callers persist the cursor and feed the returned pages into a domain-owned
|
|
40
|
+
* sync endpoint and projection binding.
|
|
41
|
+
*/
|
|
42
|
+
pullDataSource(options?: NotionPullOptions, selector?: Readonly<IntegrationConnectionSelector>): Promise<NotionPullResult>;
|
|
43
|
+
/**
|
|
44
|
+
* Import a single page from Notion by ID.
|
|
45
|
+
*/
|
|
46
|
+
importPage(pageId: string): Promise<NotionPage | null>;
|
|
47
|
+
/**
|
|
48
|
+
* Import a database schema from Notion by ID.
|
|
49
|
+
*/
|
|
50
|
+
importDatabase(databaseId: string): Promise<NotionDatabase | null>;
|
|
51
|
+
/** Import a data source schema from Notion by ID. */
|
|
52
|
+
importDataSource(dataSourceId: string): Promise<NotionDataSource | null>;
|
|
53
|
+
/**
|
|
54
|
+
* Export a local item to Notion as a page.
|
|
55
|
+
*/
|
|
56
|
+
exportPage(item: {
|
|
57
|
+
title: string;
|
|
58
|
+
description?: string;
|
|
59
|
+
dataSourceId?: string;
|
|
60
|
+
/** @deprecated Use dataSourceId. */
|
|
61
|
+
databaseId?: string;
|
|
62
|
+
parentPageId?: string;
|
|
63
|
+
properties?: JsonObject;
|
|
64
|
+
}): Promise<NotionPage>;
|
|
65
|
+
/**
|
|
66
|
+
* Search for pages and data sources in the workspace.
|
|
67
|
+
*/
|
|
68
|
+
search(query?: string, options?: {
|
|
69
|
+
filter?: 'data_source' | 'page';
|
|
70
|
+
}): ReturnType<NotionAPIClient['search']>;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=notion-implementation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notion-implementation.d.ts","sourceRoot":"","sources":["../../src/notion/notion-implementation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAIrE,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,KAAK,EACX,6BAA6B,EAC7B,0BAA0B,EAC1B,qBAAqB,EACrB,6BAA6B,EAC7B,0BAA0B,EAE1B,MAAM,0DAA0D,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAEN,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,MAAM,qBAAqB,CAAC;AAE7B;;;;;;;;;;;GAWG;AACH,qBAAa,iBAAkB,SAAQ,uBAAuB;IAC9C,kBAAkB,CAChC,MAAM,EAAE,qBAAqB,GAC3B,OAAO,CAAC,6BAA6B,CAAC;IAM1B,qBAAqB,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxE,eAAe,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;IAK9H,4BAA4B,CAAC,CAAC,GAAG,OAAO,EACvC,QAAQ,EAAE,QAAQ,CAAC,6BAA6B,CAAC,EACjD,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,oBAAoB,GACzB,OAAO,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;YAS3B,QAAQ;YASR,gBAAgB;IA0B9B;;;OAGG;IACG,SAAS,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,6BAA6B,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAI7F,OAAO,CAAC,YAAY;IAkCpB;;;;;;;;;OASG;IACG,cAAc,CAAC,OAAO,GAAE,iBAAsB,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,6BAA6B,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoDpI;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAK5D;;OAEG;IACG,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAKxE,qDAAqD;IAC/C,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAK9E;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,oCAAoC;QACpC,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,UAAU,CAAC;KACxB,GAAG,OAAO,CAAC,UAAU,CAAC;IAgCvB;;OAEG;IACG,MAAM,CACX,KAAK,CAAC,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,aAAa,GAAG,MAAM,CAAA;KAAE,GAC3C,UAAU,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;CAIxC"}
|