@texonom/nclient 1.5.5 → 1.5.6
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/build/index.js +144 -145
- package/build/index.js.map +1 -1
- package/build/notion-api.d.ts.map +1 -1
- package/package.json +3 -3
package/build/index.js
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
1
|
var V = Object.defineProperty, ee = Object.defineProperties;
|
|
2
2
|
var te = Object.getOwnPropertyDescriptors;
|
|
3
|
-
var
|
|
4
|
-
var se = Object.prototype.hasOwnProperty,
|
|
5
|
-
var
|
|
3
|
+
var G = Object.getOwnPropertySymbols;
|
|
4
|
+
var se = Object.prototype.hasOwnProperty, re = Object.prototype.propertyIsEnumerable;
|
|
5
|
+
var H = (p, s, t) => s in p ? V(p, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : p[s] = t, o = (p, s) => {
|
|
6
6
|
for (var t in s || (s = {}))
|
|
7
|
-
se.call(s, t) &&
|
|
8
|
-
if (
|
|
9
|
-
for (var t of
|
|
10
|
-
|
|
11
|
-
return
|
|
12
|
-
}, P = (
|
|
13
|
-
var
|
|
14
|
-
var
|
|
7
|
+
se.call(s, t) && H(p, t, s[t]);
|
|
8
|
+
if (G)
|
|
9
|
+
for (var t of G(s))
|
|
10
|
+
re.call(s, t) && H(p, t, s[t]);
|
|
11
|
+
return p;
|
|
12
|
+
}, P = (p, s) => ee(p, te(s));
|
|
13
|
+
var y = (p, s, t) => new Promise((e, l) => {
|
|
14
|
+
var _ = (c) => {
|
|
15
15
|
try {
|
|
16
16
|
n(t.next(c));
|
|
17
|
-
} catch (
|
|
18
|
-
l(
|
|
17
|
+
} catch (k) {
|
|
18
|
+
l(k);
|
|
19
19
|
}
|
|
20
20
|
}, a = (c) => {
|
|
21
21
|
try {
|
|
22
22
|
n(t.throw(c));
|
|
23
|
-
} catch (
|
|
24
|
-
l(
|
|
23
|
+
} catch (k) {
|
|
24
|
+
l(k);
|
|
25
25
|
}
|
|
26
|
-
}, n = (c) => c.done ? e(c.value) : Promise.resolve(c.value).then(
|
|
27
|
-
n((t = t.apply(
|
|
26
|
+
}, n = (c) => c.done ? e(c.value) : Promise.resolve(c.value).then(_, a);
|
|
27
|
+
n((t = t.apply(p, s)).next());
|
|
28
28
|
});
|
|
29
|
-
import { uuidToId as
|
|
29
|
+
import { uuidToId as oe, getPageContentUserIds as ne, getPageContentBlockIds as F, getBlockCollectionId as ce, findAncestors as ie, parsePageId as T } from "@texonom/nutils";
|
|
30
30
|
import ae from "p-map";
|
|
31
31
|
class pe {
|
|
32
32
|
constructor({
|
|
@@ -37,63 +37,63 @@ class pe {
|
|
|
37
37
|
} = {}) {
|
|
38
38
|
this._apiBaseUrl = s, this._authToken = t, this._activeUser = e, this._userTimeZone = l;
|
|
39
39
|
}
|
|
40
|
-
getPage(
|
|
41
|
-
return
|
|
40
|
+
getPage(k) {
|
|
41
|
+
return y(this, arguments, function* (s, {
|
|
42
42
|
concurrency: t = 3,
|
|
43
43
|
fetchFullInfo: e = !0,
|
|
44
44
|
fetchCollections: l = !0,
|
|
45
|
-
signFileUrls:
|
|
45
|
+
signFileUrls: _ = !0,
|
|
46
46
|
chunkLimit: a = 100,
|
|
47
47
|
chunkNumber: n = 0,
|
|
48
48
|
fetchOption: c
|
|
49
49
|
} = {}) {
|
|
50
|
-
var i, u,
|
|
51
|
-
const
|
|
50
|
+
var i, u, m;
|
|
51
|
+
const B = yield this.getPageRaw(s, {
|
|
52
52
|
chunkLimit: a,
|
|
53
53
|
chunkNumber: n,
|
|
54
54
|
fetchOption: c
|
|
55
|
-
}),
|
|
56
|
-
if (!(
|
|
57
|
-
if (
|
|
58
|
-
const
|
|
59
|
-
|
|
55
|
+
}), r = B == null ? void 0 : B.recordMap;
|
|
56
|
+
if (!(r != null && r.block)) throw new Error(`Notion page not found "${oe(s)}"`);
|
|
57
|
+
if (r.collection = (i = r.collection) != null ? i : {}, r.collection_view = (u = r.collection_view) != null ? u : {}, r.notion_user = (m = r.notion_user) != null ? m : {}, r.collection_query = {}, r.signed_urls = {}, e) {
|
|
58
|
+
const b = [], g = ne(r).filter((f) => !r.notion_user[f]);
|
|
59
|
+
b.push(this.getUsers(g, c).then((f) => {
|
|
60
60
|
var R;
|
|
61
|
-
return (R =
|
|
61
|
+
return (R = f == null ? void 0 : f.recordMapWithRoles) == null ? void 0 : R.notion_user;
|
|
62
62
|
}));
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
const C = Object.values(
|
|
66
|
-
|
|
63
|
+
const I = F(r).filter((f) => !r.block[f]);
|
|
64
|
+
b.push(this.getBlocks(I, c).then((f) => f.recordMap.block));
|
|
65
|
+
const C = Object.values(r.block)[0].value, d = C.parent_table === "space" ? [C.parent_id] : [];
|
|
66
|
+
b.push(this.getSpaces(d, c).then((f) => {
|
|
67
67
|
var R;
|
|
68
|
-
return (R =
|
|
68
|
+
return (R = f.recordMapWithRoles) == null ? void 0 : R.space;
|
|
69
69
|
}));
|
|
70
|
-
const [
|
|
71
|
-
|
|
70
|
+
const [q, $, x] = yield Promise.all(b);
|
|
71
|
+
r.notion_user = o(o({}, r.notion_user), q), r.block = o(o({}, r.block), $), r.space = o(o({}, r.space), x);
|
|
72
72
|
}
|
|
73
|
-
const
|
|
74
|
-
return l && (yield this.fetchCollections(
|
|
73
|
+
const v = F(r);
|
|
74
|
+
return l && (yield this.fetchCollections(v, r, s, { concurrency: t, fetchOption: c })), _ && (yield this.addSignedUrls({ recordMap: r, contentBlockIds: v, fetchOption: c })), r;
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
|
-
fetchCollections(n, c,
|
|
78
|
-
return
|
|
77
|
+
fetchCollections(n, c, k) {
|
|
78
|
+
return y(this, arguments, function* (s, t, e, {
|
|
79
79
|
concurrency: l,
|
|
80
|
-
fetchOption:
|
|
80
|
+
fetchOption: _,
|
|
81
81
|
collectionConcurrency: a
|
|
82
82
|
} = { concurrency: 36, fetchOption: { timeout: 2e4 }, collectionConcurrency: 300 }) {
|
|
83
|
-
const
|
|
84
|
-
var
|
|
85
|
-
const i = (
|
|
83
|
+
const B = s.flatMap((v) => {
|
|
84
|
+
var m, b;
|
|
85
|
+
const i = (m = t.block[v]) == null ? void 0 : m.value;
|
|
86
86
|
if (!i) return [];
|
|
87
87
|
const u = i && (i.type === "collection_view" || i.type === "collection_view_page") && ce(i, t);
|
|
88
|
-
return u && (!e || ie(t, i).includes(e)) ? (
|
|
89
|
-
var
|
|
90
|
-
return (
|
|
88
|
+
return u && (!e || ie(t, i).includes(e)) ? (b = i.view_ids) == null ? void 0 : b.flatMap((g) => {
|
|
89
|
+
var I;
|
|
90
|
+
return (I = t.collection_query[u]) != null && I[g] ? [] : {
|
|
91
91
|
collectionId: u,
|
|
92
|
-
collectionViewId:
|
|
92
|
+
collectionViewId: g,
|
|
93
93
|
collectionViewBlockId: i.id
|
|
94
94
|
};
|
|
95
95
|
}) : [];
|
|
96
|
-
}),
|
|
96
|
+
}), r = {
|
|
97
97
|
block: {},
|
|
98
98
|
collection: {},
|
|
99
99
|
collection_view: {},
|
|
@@ -102,21 +102,21 @@ class pe {
|
|
|
102
102
|
signed_urls: {}
|
|
103
103
|
};
|
|
104
104
|
return yield ae(
|
|
105
|
-
|
|
106
|
-
(
|
|
107
|
-
var
|
|
108
|
-
const { collectionId: i, collectionViewId: u, collectionViewBlockId:
|
|
105
|
+
B.slice(B.length - a, B.length),
|
|
106
|
+
(v) => y(this, null, function* () {
|
|
107
|
+
var g, I, C;
|
|
108
|
+
const { collectionId: i, collectionViewId: u, collectionViewBlockId: m } = v, b = (g = t.collection_view[u]) == null ? void 0 : g.value;
|
|
109
109
|
try {
|
|
110
|
-
const d = yield this.getCollectionData(i, u,
|
|
111
|
-
fetchOption:
|
|
110
|
+
const d = yield this.getCollectionData(i, u, b, {
|
|
111
|
+
fetchOption: _
|
|
112
112
|
});
|
|
113
|
-
if (d.recordMap && (t.block =
|
|
114
|
-
[u]: (
|
|
115
|
-
}),
|
|
113
|
+
if (d.recordMap && (t.block = o(o({}, t.block), d.recordMap.block), t.collection = o(o({}, t.collection), d.recordMap.collection), t.collection_view = o(o({}, t.collection_view), d.recordMap.collection_view), t.notion_user = o(o({}, t.notion_user), d.recordMap.notion_user), t.collection_query[i] = P(o({}, t.collection_query[i]), {
|
|
114
|
+
[u]: (I = d.result) == null ? void 0 : I.reducerResults
|
|
115
|
+
}), r.block = o(o({}, r.block), d.recordMap.block), r.collection = o(o({}, r.collection), d.recordMap.collection), r.collection_view = o(o({}, r.collection_view), d.recordMap.collection_view), r.notion_user = o(o({}, r.notion_user), d.recordMap.notion_user), r.collection_query[i] = P(o({}, r.collection_query[i]), {
|
|
116
116
|
[u]: (C = d.result) == null ? void 0 : C.reducerResults
|
|
117
|
-
})), !
|
|
118
|
-
const
|
|
119
|
-
|
|
117
|
+
})), !b) {
|
|
118
|
+
const q = yield this.getPageRaw(m, { fetchOption: _ });
|
|
119
|
+
q.recordMap && (t.collection_view = o(o({}, t.collection_view), q.recordMap.collection_view), r.collection_view = o(o({}, r.collection_view), q.recordMap.collection_view), t.collection = o(o({}, t.collection), q.recordMap.collection), r.collection = o(o({}, r.collection), q.recordMap.collection), t.block = o(o({}, t.block), q.recordMap.block), r.block = o(o({}, r.block), q.recordMap.block));
|
|
120
120
|
}
|
|
121
121
|
} catch (d) {
|
|
122
122
|
console.debug("NotionAPI collectionQuery error in page id ", e), console.error(d);
|
|
@@ -125,21 +125,21 @@ class pe {
|
|
|
125
125
|
{
|
|
126
126
|
concurrency: l
|
|
127
127
|
}
|
|
128
|
-
),
|
|
128
|
+
), r;
|
|
129
129
|
});
|
|
130
130
|
}
|
|
131
131
|
addSignedUrls(l) {
|
|
132
|
-
return
|
|
132
|
+
return y(this, arguments, function* ({
|
|
133
133
|
recordMap: s,
|
|
134
134
|
contentBlockIds: t,
|
|
135
135
|
fetchOption: e = {}
|
|
136
136
|
}) {
|
|
137
|
-
s.signed_urls = {}, t || (t =
|
|
138
|
-
const
|
|
139
|
-
var c,
|
|
137
|
+
s.signed_urls = {}, t || (t = F(s));
|
|
138
|
+
const _ = t.flatMap((a) => {
|
|
139
|
+
var c, k, B, r, v, i;
|
|
140
140
|
const n = (c = s.block[a]) == null ? void 0 : c.value;
|
|
141
|
-
if (n && (n.type === "pdf" || n.type === "audio" || n.type === "image" && ((
|
|
142
|
-
const u = n.type === "page" ? (
|
|
141
|
+
if (n && (n.type === "pdf" || n.type === "audio" || n.type === "image" && ((k = n.file_ids) != null && k.length) || n.type === "video" || n.type === "file" || n.type === "page")) {
|
|
142
|
+
const u = n.type === "page" ? (B = n.format) == null ? void 0 : B.page_cover : (i = (v = (r = n.properties) == null ? void 0 : r.source) == null ? void 0 : v[0]) == null ? void 0 : i[0];
|
|
143
143
|
if (u)
|
|
144
144
|
return !u.includes("secure.notion-static.com") && !u.includes("prod-files-secure") ? [] : {
|
|
145
145
|
permissionRecord: {
|
|
@@ -151,26 +151,26 @@ class pe {
|
|
|
151
151
|
}
|
|
152
152
|
return [];
|
|
153
153
|
});
|
|
154
|
-
if (
|
|
154
|
+
if (_.length > 0)
|
|
155
155
|
try {
|
|
156
|
-
const { signedUrls: a } = yield this.getSignedFileUrls(
|
|
157
|
-
if (a.length ===
|
|
158
|
-
for (let n = 0; n <
|
|
159
|
-
const c =
|
|
160
|
-
s.signed_urls[c.permissionRecord.id] =
|
|
156
|
+
const { signedUrls: a } = yield this.getSignedFileUrls(_, e);
|
|
157
|
+
if (a.length === _.length)
|
|
158
|
+
for (let n = 0; n < _.length; ++n) {
|
|
159
|
+
const c = _[n], k = a[n];
|
|
160
|
+
s.signed_urls[c.permissionRecord.id] = k;
|
|
161
161
|
}
|
|
162
162
|
} catch (a) {
|
|
163
163
|
console.warn("NotionAPI getSignedfileUrls error", a);
|
|
164
164
|
}
|
|
165
165
|
});
|
|
166
166
|
}
|
|
167
|
-
getPageRaw(
|
|
168
|
-
return
|
|
167
|
+
getPageRaw(_) {
|
|
168
|
+
return y(this, arguments, function* (s, {
|
|
169
169
|
fetchOption: t,
|
|
170
170
|
chunkLimit: e = 100,
|
|
171
171
|
chunkNumber: l = 0
|
|
172
172
|
} = {}) {
|
|
173
|
-
const a =
|
|
173
|
+
const a = T(s);
|
|
174
174
|
if (!a) throw new Error(`invalid notion pageId "${s}"`);
|
|
175
175
|
const n = {
|
|
176
176
|
pageId: a,
|
|
@@ -186,25 +186,25 @@ class pe {
|
|
|
186
186
|
});
|
|
187
187
|
});
|
|
188
188
|
}
|
|
189
|
-
getCollectionData(
|
|
190
|
-
return
|
|
189
|
+
getCollectionData(k, B, r) {
|
|
190
|
+
return y(this, arguments, function* (s, t, e, {
|
|
191
191
|
limit: l = 9999,
|
|
192
|
-
searchQuery:
|
|
192
|
+
searchQuery: _ = "",
|
|
193
193
|
userTimeZone: a = this._userTimeZone,
|
|
194
194
|
loadContentCover: n = !0,
|
|
195
195
|
fetchOption: c
|
|
196
196
|
} = {}) {
|
|
197
|
-
var
|
|
198
|
-
const
|
|
199
|
-
let
|
|
200
|
-
(d = e == null ? void 0 : e.format) != null && d.property_filters && (
|
|
201
|
-
var
|
|
197
|
+
var I, C, d, q, $, x, f, R, z, W, L, J;
|
|
198
|
+
const v = e == null ? void 0 : e.type, i = v === "board", u = i ? (I = e == null ? void 0 : e.format) == null ? void 0 : I.board_columns_by : (C = e == null ? void 0 : e.format) == null ? void 0 : C.collection_group_by;
|
|
199
|
+
let m = [];
|
|
200
|
+
(d = e == null ? void 0 : e.format) != null && d.property_filters && (m = (q = e.format) == null ? void 0 : q.property_filters.map((U) => {
|
|
201
|
+
var A, D;
|
|
202
202
|
return {
|
|
203
|
-
filter: (
|
|
204
|
-
property: (
|
|
203
|
+
filter: (A = U == null ? void 0 : U.filter) == null ? void 0 : A.filter,
|
|
204
|
+
property: (D = U == null ? void 0 : U.filter) == null ? void 0 : D.property
|
|
205
205
|
};
|
|
206
|
-
})), (
|
|
207
|
-
let
|
|
206
|
+
})), (x = ($ = e == null ? void 0 : e.query2) == null ? void 0 : $.filter) != null && x.filters && m.push(...e.query2.filter.filters);
|
|
207
|
+
let b = P(o({
|
|
208
208
|
type: "reducer",
|
|
209
209
|
reducers: {
|
|
210
210
|
collection_group_results: {
|
|
@@ -216,14 +216,14 @@ class pe {
|
|
|
216
216
|
sort: []
|
|
217
217
|
}, e == null ? void 0 : e.query2), {
|
|
218
218
|
filter: {
|
|
219
|
-
filters:
|
|
219
|
+
filters: m,
|
|
220
220
|
operator: "and"
|
|
221
221
|
},
|
|
222
|
-
searchQuery:
|
|
222
|
+
searchQuery: _,
|
|
223
223
|
userTimeZone: a
|
|
224
224
|
});
|
|
225
225
|
if (u) {
|
|
226
|
-
const
|
|
226
|
+
const U = ((f = e == null ? void 0 : e.format) == null ? void 0 : f.board_columns) || ((R = e == null ? void 0 : e.format) == null ? void 0 : R.collection_groups) || [], A = [i ? "board" : "group_aggregation", "results"], D = {
|
|
227
227
|
checkbox: "checkbox_is",
|
|
228
228
|
url: "string_starts_with",
|
|
229
229
|
text: "string_starts_with",
|
|
@@ -231,31 +231,31 @@ class pe {
|
|
|
231
231
|
multi_select: "enum_contains",
|
|
232
232
|
created_time: "date_is_within",
|
|
233
233
|
undefined: "is_empty"
|
|
234
|
-
},
|
|
235
|
-
for (const
|
|
234
|
+
}, Q = {};
|
|
235
|
+
for (const S of U) {
|
|
236
236
|
const {
|
|
237
237
|
property: X,
|
|
238
|
-
value: { value:
|
|
239
|
-
} =
|
|
240
|
-
for (const
|
|
241
|
-
const w =
|
|
242
|
-
type:
|
|
238
|
+
value: { value: h, type: Y }
|
|
239
|
+
} = S;
|
|
240
|
+
for (const E of A) {
|
|
241
|
+
const w = E === "results" ? {
|
|
242
|
+
type: E,
|
|
243
243
|
limit: l
|
|
244
244
|
} : {
|
|
245
245
|
type: "aggregation",
|
|
246
246
|
aggregation: {
|
|
247
247
|
aggregator: "count"
|
|
248
248
|
}
|
|
249
|
-
},
|
|
250
|
-
|
|
249
|
+
}, M = typeof h == "undefined", Z = h == null ? void 0 : h.range, j = M ? "uncategorized" : Z ? ((z = h.range) == null ? void 0 : z.start_date) || ((W = h.range) == null ? void 0 : W.end_date) : (h == null ? void 0 : h.value) || h, O = !M && (Z || (h == null ? void 0 : h.value) || h);
|
|
250
|
+
Q[`${E}:${Y}:${j}`] = P(o({}, w), {
|
|
251
251
|
filter: {
|
|
252
252
|
operator: "and",
|
|
253
253
|
filters: [
|
|
254
254
|
{
|
|
255
255
|
property: X,
|
|
256
|
-
filter:
|
|
257
|
-
operator:
|
|
258
|
-
}, !
|
|
256
|
+
filter: o({
|
|
257
|
+
operator: M ? "is_empty" : D[Y]
|
|
258
|
+
}, !M && {
|
|
259
259
|
value: {
|
|
260
260
|
type: "exact",
|
|
261
261
|
value: O
|
|
@@ -267,49 +267,40 @@ class pe {
|
|
|
267
267
|
});
|
|
268
268
|
}
|
|
269
269
|
}
|
|
270
|
-
const
|
|
271
|
-
|
|
270
|
+
const K = i ? "board_columns" : `${v}_groups`;
|
|
271
|
+
b = P(o({
|
|
272
272
|
type: "reducer",
|
|
273
|
-
reducers:
|
|
274
|
-
[
|
|
273
|
+
reducers: o({
|
|
274
|
+
[K]: P(o({
|
|
275
275
|
type: "groups",
|
|
276
276
|
groupBy: u
|
|
277
|
-
}, ((
|
|
278
|
-
filter: (
|
|
277
|
+
}, ((L = e == null ? void 0 : e.query2) == null ? void 0 : L.filter) && {
|
|
278
|
+
filter: (J = e == null ? void 0 : e.query2) == null ? void 0 : J.filter
|
|
279
279
|
}), {
|
|
280
|
-
groupSortPreference:
|
|
280
|
+
groupSortPreference: U.map((S) => S == null ? void 0 : S.value),
|
|
281
281
|
limit: l
|
|
282
282
|
})
|
|
283
|
-
},
|
|
283
|
+
}, Q)
|
|
284
284
|
}, e == null ? void 0 : e.query2), {
|
|
285
|
-
searchQuery:
|
|
285
|
+
searchQuery: _,
|
|
286
286
|
userTimeZone: a,
|
|
287
|
-
filter: { filters:
|
|
287
|
+
filter: { filters: m, operator: "and" }
|
|
288
288
|
});
|
|
289
289
|
}
|
|
290
|
-
const
|
|
290
|
+
const g = yield this.fetch({
|
|
291
291
|
endpoint: "queryCollection",
|
|
292
292
|
body: {
|
|
293
293
|
collection: { id: s },
|
|
294
294
|
collectionView: { id: t },
|
|
295
|
-
loader:
|
|
295
|
+
loader: b
|
|
296
296
|
},
|
|
297
297
|
fetchOption: c
|
|
298
298
|
});
|
|
299
|
-
|
|
300
|
-
for (const B of ["block", "collection", "collection_view", "notion_user"]) {
|
|
301
|
-
const S = q.recordMap[B];
|
|
302
|
-
if (S)
|
|
303
|
-
for (const [T, E] of Object.entries(S)) {
|
|
304
|
-
const $ = E;
|
|
305
|
-
$.spaceId && ((Y = $.value) != null && Y.value) && (S[T] = $.value);
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
return q;
|
|
299
|
+
return g.recordMap && (N(g.recordMap.block), N(g.recordMap.collection), N(g.recordMap.collection_view), N(g.recordMap.notion_user)), g;
|
|
309
300
|
});
|
|
310
301
|
}
|
|
311
302
|
getUsers(s, t) {
|
|
312
|
-
return
|
|
303
|
+
return y(this, null, function* () {
|
|
313
304
|
return this.fetch({
|
|
314
305
|
endpoint: "getRecordValues",
|
|
315
306
|
body: { requests: s.map((e) => ({ id: e, table: "notion_user" })) },
|
|
@@ -318,7 +309,7 @@ class pe {
|
|
|
318
309
|
});
|
|
319
310
|
}
|
|
320
311
|
getSpaces(s, t) {
|
|
321
|
-
return
|
|
312
|
+
return y(this, null, function* () {
|
|
322
313
|
return this.fetch({
|
|
323
314
|
endpoint: "getRecordValues",
|
|
324
315
|
body: { requests: s.map((e) => ({ id: e, table: "space" })) },
|
|
@@ -327,7 +318,7 @@ class pe {
|
|
|
327
318
|
});
|
|
328
319
|
}
|
|
329
320
|
getBlocks(s, t) {
|
|
330
|
-
return
|
|
321
|
+
return y(this, null, function* () {
|
|
331
322
|
return this.fetch({
|
|
332
323
|
endpoint: "syncRecordValues",
|
|
333
324
|
body: { requests: s.map((e) => ({ table: "block", id: e, version: -1 })) },
|
|
@@ -336,7 +327,7 @@ class pe {
|
|
|
336
327
|
});
|
|
337
328
|
}
|
|
338
329
|
syncRecords(s, t) {
|
|
339
|
-
return
|
|
330
|
+
return y(this, null, function* () {
|
|
340
331
|
return this.fetch({
|
|
341
332
|
endpoint: "syncRecordValues",
|
|
342
333
|
body: { requests: s.map(({ id: e, table: l }) => ({ table: l, id: e, version: -1 })) },
|
|
@@ -345,7 +336,7 @@ class pe {
|
|
|
345
336
|
});
|
|
346
337
|
}
|
|
347
338
|
getSignedFileUrls(s, t) {
|
|
348
|
-
return
|
|
339
|
+
return y(this, null, function* () {
|
|
349
340
|
return this.fetch({
|
|
350
341
|
endpoint: "getSignedFileUrls",
|
|
351
342
|
body: { urls: s },
|
|
@@ -354,16 +345,16 @@ class pe {
|
|
|
354
345
|
});
|
|
355
346
|
}
|
|
356
347
|
search(s, t) {
|
|
357
|
-
return
|
|
348
|
+
return y(this, null, function* () {
|
|
358
349
|
var l;
|
|
359
350
|
const e = {
|
|
360
351
|
type: "BlocksInSpace",
|
|
361
352
|
source: "quick_find_filters",
|
|
362
|
-
spaceId:
|
|
353
|
+
spaceId: T(s.spaceId),
|
|
363
354
|
sort: { field: "relevance" },
|
|
364
355
|
limit: s.limit || 20,
|
|
365
356
|
query: s.query,
|
|
366
|
-
filters: P(
|
|
357
|
+
filters: P(o({
|
|
367
358
|
isDeletedOnly: !1,
|
|
368
359
|
navigableBlockContentOnly: !1,
|
|
369
360
|
excludeTemplates: !0,
|
|
@@ -374,7 +365,7 @@ class pe {
|
|
|
374
365
|
lastEditedTime: {},
|
|
375
366
|
createdTime: {}
|
|
376
367
|
}, s.filters), {
|
|
377
|
-
ancestors: (l = s.filters) != null && l.ancestors ? s.filters.ancestors.map((
|
|
368
|
+
ancestors: (l = s.filters) != null && l.ancestors ? s.filters.ancestors.map((_) => T(_)) : []
|
|
378
369
|
})
|
|
379
370
|
};
|
|
380
371
|
return this.fetch({
|
|
@@ -391,11 +382,11 @@ class pe {
|
|
|
391
382
|
* @returns backlink list with recordmap
|
|
392
383
|
*/
|
|
393
384
|
getBacklinks(s, t) {
|
|
394
|
-
return
|
|
385
|
+
return y(this, null, function* () {
|
|
395
386
|
const e = {
|
|
396
387
|
block: {
|
|
397
|
-
id:
|
|
398
|
-
spaceId:
|
|
388
|
+
id: T(s.block.id),
|
|
389
|
+
spaceId: T(s.block.spaceId)
|
|
399
390
|
}
|
|
400
391
|
};
|
|
401
392
|
return this.fetch({
|
|
@@ -405,30 +396,38 @@ class pe {
|
|
|
405
396
|
});
|
|
406
397
|
});
|
|
407
398
|
}
|
|
408
|
-
fetch(
|
|
409
|
-
return
|
|
399
|
+
fetch(_) {
|
|
400
|
+
return y(this, arguments, function* ({
|
|
410
401
|
endpoint: s,
|
|
411
402
|
body: t,
|
|
412
403
|
fetchOption: e,
|
|
413
404
|
headers: l
|
|
414
405
|
}) {
|
|
415
|
-
const a = P(
|
|
406
|
+
const a = P(o(o({}, l), e == null ? void 0 : e.headers), {
|
|
416
407
|
"Content-Type": "application/json"
|
|
417
408
|
});
|
|
418
409
|
this._authToken && (a.cookie = `token_v2=${this._authToken}`), this._activeUser && (a["x-notion-active-user-header"] = this._activeUser);
|
|
419
|
-
const n = `${this._apiBaseUrl}/${s}`, c =
|
|
410
|
+
const n = `${this._apiBaseUrl}/${s}`, c = o({
|
|
420
411
|
method: "post",
|
|
421
412
|
body: JSON.stringify(t),
|
|
422
413
|
headers: a
|
|
423
414
|
}, e);
|
|
424
415
|
if ((e == null ? void 0 : e.timeout) !== void 0) {
|
|
425
|
-
const
|
|
426
|
-
setTimeout(() =>
|
|
416
|
+
const k = new AbortController();
|
|
417
|
+
setTimeout(() => k.abort(), e.timeout), c.signal = k.signal;
|
|
427
418
|
}
|
|
428
|
-
return fetch(n, c).then((
|
|
419
|
+
return fetch(n, c).then((k) => k.json());
|
|
429
420
|
});
|
|
430
421
|
}
|
|
431
422
|
}
|
|
423
|
+
function N(p) {
|
|
424
|
+
var s;
|
|
425
|
+
if (p)
|
|
426
|
+
for (const t of Object.keys(p)) {
|
|
427
|
+
const e = p[t];
|
|
428
|
+
e != null && e.spaceId && ((s = e.value) != null && s.value) && (p[t] = e.value);
|
|
429
|
+
}
|
|
430
|
+
}
|
|
432
431
|
export {
|
|
433
432
|
pe as NotionAPI
|
|
434
433
|
};
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/notion-api.ts"],"sourcesContent":["import {\n getBlockCollectionId,\n getPageContentBlockIds,\n getPageContentUserIds,\n parsePageId,\n uuidToId,\n findAncestors\n} from '@texonom/nutils'\nimport pMap from 'p-map'\n\nimport type {\n ExtendedRecordMap,\n PageChunk,\n BaseCollectionView,\n CollectionViewType,\n ReducerResponse,\n CollectionQueryResult,\n RecordValues,\n User,\n Space,\n SearchParams,\n SearchResults,\n BacklinkParams,\n BacklinkResults\n} from '@texonom/ntypes'\n\nimport type { SignedUrlRequest, FetchOption, SignedUrlResponse } from './types'\n\n/**\n * Main Notion API client.\n */\nexport class NotionAPI {\n private readonly _apiBaseUrl: string\n private readonly _authToken?: string\n private readonly _activeUser?: string\n private readonly _userTimeZone: string\n\n constructor({\n apiBaseUrl = 'https://www.notion.so/api/v3',\n authToken,\n activeUser,\n userTimeZone = 'America/New_York'\n }: {\n apiBaseUrl?: string\n authToken?: string\n userLocale?: string\n userTimeZone?: string\n activeUser?: string\n } = {}) {\n this._apiBaseUrl = apiBaseUrl\n this._authToken = authToken\n this._activeUser = activeUser\n this._userTimeZone = userTimeZone\n }\n\n public async getPage(\n pageId: string,\n {\n concurrency = 3,\n fetchFullInfo = true,\n fetchCollections = true,\n signFileUrls = true,\n chunkLimit = 100,\n chunkNumber = 0,\n fetchOption\n }: {\n concurrency?: number\n fetchFullInfo?: boolean\n fetchCollections?: boolean\n signFileUrls?: boolean\n chunkLimit?: number\n chunkNumber?: number\n fetchOption?: FetchOption\n } = {}\n ): Promise<ExtendedRecordMap> {\n const page = await this.getPageRaw(pageId, {\n chunkLimit,\n chunkNumber,\n fetchOption\n })\n const recordMap = page?.recordMap as ExtendedRecordMap\n if (!recordMap?.block) throw new Error(`Notion page not found \"${uuidToId(pageId)}\"`)\n\n // ensure that all top-level maps exist\n recordMap.collection = recordMap.collection ?? {}\n recordMap.collection_view = recordMap.collection_view ?? {}\n recordMap.notion_user = recordMap.notion_user ?? {}\n\n // additional mappings added for convenience\n // note: these are not native notion objects\n recordMap.collection_query = {}\n recordMap.signed_urls = {}\n\n // Fetch Users\n if (fetchFullInfo) {\n const promises = []\n // Fetch any missing users\n const pendingUserIDs = getPageContentUserIds(recordMap).filter(id => !recordMap.notion_user[id])\n promises.push(this.getUsers(pendingUserIDs, fetchOption).then(res => res?.recordMapWithRoles?.notion_user))\n\n // Fetch any missing content blocks\n const pendingBlocks = getPageContentBlockIds(recordMap).filter(id => !recordMap.block[id])\n promises.push(this.getBlocks(pendingBlocks, fetchOption).then(res => res.recordMap.block))\n\n // Fetch any missing content blocks\n const rootBlock = Object.values(recordMap.block)[0].value\n const pendingSpaces = rootBlock.parent_table === 'space' ? [rootBlock.parent_id] : []\n promises.push(this.getSpaces(pendingSpaces, fetchOption).then(res => res.recordMapWithRoles?.space))\n\n // Append them\n const [newUsers, newBlocks, newSpaces] = await Promise.all(promises)\n recordMap.notion_user = { ...recordMap.notion_user, ...newUsers }\n recordMap.block = { ...recordMap.block, ...newBlocks }\n recordMap.space = { ...recordMap.space, ...newSpaces }\n }\n\n // Optionally fetch all data for embedded collections and their associated views.\n // NOTE: We're eagerly fetching *all* data for each collection and all of its views.\n // This is really convenient in order to ensure that all data needed for a given\n // Notion page is readily available for use cases involving server-side rendering\n // and edge caching.\n\n const contentBlockIds = getPageContentBlockIds(recordMap)\n if (fetchCollections) await this.fetchCollections(contentBlockIds, recordMap, pageId, { concurrency, fetchOption })\n\n // Optionally fetch signed URLs for any embedded files.\n // NOTE: Similar to collection data, we default to eagerly fetching signed URL info\n // because it is preferable for many use cases as opposed to making these API calls\n // lazily from the client-side.\n if (signFileUrls) await this.addSignedUrls({ recordMap, contentBlockIds, fetchOption })\n\n return recordMap\n }\n\n public async fetchCollections(\n contentBlockIds: string[],\n recordMap: ExtendedRecordMap,\n pageId?: string,\n {\n concurrency,\n fetchOption,\n collectionConcurrency\n }: {\n concurrency: number\n collectionConcurrency?: number\n fetchOption?: FetchOption\n } = { concurrency: 36, fetchOption: { timeout: 20000 }, collectionConcurrency: 300 }\n ): Promise<ExtendedRecordMap> {\n const allCollectionInstances: Array<{\n collectionId: string\n collectionViewId: string\n collectionViewBlockId: string\n }> = contentBlockIds.flatMap(blockId => {\n const block = recordMap.block[blockId]?.value\n if (!block) return []\n const collectionId =\n block &&\n (block.type === 'collection_view' || block.type === 'collection_view_page') &&\n getBlockCollectionId(block, recordMap)\n\n if (collectionId)\n if (pageId ? findAncestors(recordMap, block).includes(pageId) : true)\n return block.view_ids?.flatMap(collectionViewId => {\n if (recordMap.collection_query[collectionId]?.[collectionViewId]) return []\n else\n return {\n collectionId,\n collectionViewId,\n collectionViewBlockId: block.id\n }\n })\n return []\n })\n\n // fetch data for all collection view instances\n const resultMap: ExtendedRecordMap = {\n block: {},\n collection: {},\n collection_view: {},\n notion_user: {},\n collection_query: {},\n signed_urls: {}\n }\n await pMap(\n allCollectionInstances.slice(allCollectionInstances.length - collectionConcurrency, allCollectionInstances.length),\n async collectionInstance => {\n const { collectionId, collectionViewId, collectionViewBlockId } = collectionInstance\n const collectionView = recordMap.collection_view[collectionViewId]?.value\n\n try {\n const collectionData = await this.getCollectionData(collectionId, collectionViewId, collectionView, {\n fetchOption\n })\n\n if (collectionData.recordMap) {\n recordMap.block = { ...recordMap.block, ...collectionData.recordMap.block }\n recordMap.collection = { ...recordMap.collection, ...collectionData.recordMap.collection }\n recordMap.collection_view = { ...recordMap.collection_view, ...collectionData.recordMap.collection_view }\n recordMap.notion_user = { ...recordMap.notion_user, ...collectionData.recordMap.notion_user }\n recordMap.collection_query![collectionId] = {\n ...recordMap.collection_query![collectionId],\n [collectionViewId]: collectionData.result?.reducerResults\n }\n resultMap.block = { ...resultMap.block, ...collectionData.recordMap.block }\n resultMap.collection = { ...resultMap.collection, ...collectionData.recordMap.collection }\n resultMap.collection_view = { ...resultMap.collection_view, ...collectionData.recordMap.collection_view }\n resultMap.notion_user = { ...resultMap.notion_user, ...collectionData.recordMap.notion_user }\n resultMap.collection_query![collectionId] = {\n ...resultMap.collection_query![collectionId],\n [collectionViewId]: collectionData.result?.reducerResults\n }\n }\n\n if (!collectionView) {\n const viewBlockData = await this.getPageRaw(collectionViewBlockId, { fetchOption })\n if (viewBlockData.recordMap) {\n recordMap.collection_view = { ...recordMap.collection_view, ...viewBlockData.recordMap.collection_view }\n resultMap.collection_view = { ...resultMap.collection_view, ...viewBlockData.recordMap.collection_view }\n recordMap.collection = { ...recordMap.collection, ...viewBlockData.recordMap.collection }\n resultMap.collection = { ...resultMap.collection, ...viewBlockData.recordMap.collection }\n recordMap.block = { ...recordMap.block, ...viewBlockData.recordMap.block }\n resultMap.block = { ...resultMap.block, ...viewBlockData.recordMap.block }\n }\n }\n } catch (err) {\n // It's possible for public pages to link to private collections, in which case\n // Notion returns a 400 error\n console.debug('NotionAPI collectionQuery error in page id ', pageId)\n console.error(err)\n }\n },\n {\n concurrency\n }\n )\n return resultMap\n }\n\n public async addSignedUrls({\n recordMap,\n contentBlockIds,\n fetchOption = {}\n }: {\n recordMap: ExtendedRecordMap\n contentBlockIds?: string[]\n fetchOption?: FetchOption\n }) {\n recordMap.signed_urls = {}\n\n if (!contentBlockIds) contentBlockIds = getPageContentBlockIds(recordMap)\n\n const allFileInstances = contentBlockIds.flatMap(blockId => {\n const block = recordMap.block[blockId]?.value\n\n if (\n block &&\n (block.type === 'pdf' ||\n block.type === 'audio' ||\n (block.type === 'image' && block.file_ids?.length) ||\n block.type === 'video' ||\n block.type === 'file' ||\n block.type === 'page')\n ) {\n const source = block.type === 'page' ? block.format?.page_cover : block.properties?.source?.[0]?.[0]\n\n if (source) {\n if (!source.includes('secure.notion-static.com') && !source.includes('prod-files-secure')) return []\n\n return {\n permissionRecord: {\n table: 'block',\n id: block.id\n },\n url: source\n }\n }\n }\n\n return []\n })\n\n if (allFileInstances.length > 0)\n try {\n const { signedUrls } = await this.getSignedFileUrls(allFileInstances, fetchOption)\n\n if (signedUrls.length === allFileInstances.length)\n for (let i = 0; i < allFileInstances.length; ++i) {\n const file = allFileInstances[i]\n const signedUrl = signedUrls[i]\n\n recordMap.signed_urls[file.permissionRecord.id] = signedUrl\n }\n } catch (err) {\n console.warn('NotionAPI getSignedfileUrls error', err)\n }\n }\n\n public async getPageRaw(\n pageId: string,\n {\n fetchOption,\n chunkLimit = 100,\n chunkNumber = 0\n }: {\n chunkLimit?: number\n chunkNumber?: number\n fetchOption?: FetchOption\n } = {}\n ) {\n const parsedPageId = parsePageId(pageId)\n\n if (!parsedPageId) throw new Error(`invalid notion pageId \"${pageId}\"`)\n\n const body = {\n pageId: parsedPageId,\n limit: chunkLimit,\n chunkNumber: chunkNumber,\n cursor: { stack: [] },\n verticalColumns: false\n }\n\n return this.fetch<PageChunk>({\n endpoint: 'loadPageChunk',\n body,\n fetchOption\n })\n }\n\n public async getCollectionData(\n collectionId: string,\n collectionViewId: string,\n collectionView: BaseCollectionView,\n {\n limit = 9999,\n searchQuery = '',\n userTimeZone = this._userTimeZone,\n loadContentCover = true,\n fetchOption\n }: {\n type?: CollectionViewType\n limit?: number\n searchQuery?: string\n userTimeZone?: string\n userLocale?: string\n loadContentCover?: boolean\n fetchOption?: FetchOption\n } = {}\n ) {\n const type = collectionView?.type\n const isBoardType = type === 'board'\n const groupBy = isBoardType ? collectionView?.format?.board_columns_by : collectionView?.format?.collection_group_by\n\n let filters = []\n if (collectionView?.format?.property_filters)\n filters = collectionView.format?.property_filters.map(filterObj => {\n //get the inner filter\n return {\n filter: filterObj?.filter?.filter,\n property: filterObj?.filter?.property\n }\n })\n\n //Fixes formula filters from not working\n if (collectionView?.query2?.filter?.filters) filters.push(...collectionView.query2.filter.filters)\n\n let loader: unknown = {\n type: 'reducer',\n reducers: {\n collection_group_results: {\n type: 'results',\n limit,\n loadContentCover\n }\n },\n sort: [],\n ...collectionView?.query2,\n filter: {\n filters: filters,\n operator: 'and'\n },\n searchQuery,\n userTimeZone\n }\n\n if (groupBy) {\n const groups = collectionView?.format?.board_columns || collectionView?.format?.collection_groups || []\n const iterators = [isBoardType ? 'board' : 'group_aggregation', 'results']\n const operators = {\n checkbox: 'checkbox_is',\n url: 'string_starts_with',\n text: 'string_starts_with',\n select: 'enum_is',\n multi_select: 'enum_contains',\n created_time: 'date_is_within',\n ['undefined']: 'is_empty'\n }\n\n const reducersQuery = {}\n for (const group of groups) {\n const {\n property,\n value: { value, type }\n } = group\n\n for (const iterator of iterators) {\n const iteratorProps =\n iterator === 'results'\n ? {\n type: iterator,\n limit\n }\n : {\n type: 'aggregation',\n aggregation: {\n aggregator: 'count'\n }\n }\n\n const isUncategorizedValue = typeof value === 'undefined'\n const isDateValue = value?.range\n // TODO: review dates reducers\n const queryLabel = isUncategorizedValue\n ? 'uncategorized'\n : isDateValue\n ? value.range?.start_date || value.range?.end_date\n : value?.value || value\n\n const queryValue = !isUncategorizedValue && (isDateValue || value?.value || value)\n\n reducersQuery[`${iterator}:${type}:${queryLabel}`] = {\n ...iteratorProps,\n filter: {\n operator: 'and',\n filters: [\n {\n property,\n filter: {\n operator: !isUncategorizedValue ? operators[type] : 'is_empty',\n ...(!isUncategorizedValue && {\n value: {\n type: 'exact',\n value: queryValue\n }\n })\n }\n }\n ]\n }\n }\n }\n }\n\n const reducerLabel = isBoardType ? 'board_columns' : `${type}_groups`\n loader = {\n type: 'reducer',\n reducers: {\n [reducerLabel]: {\n type: 'groups',\n groupBy,\n ...(collectionView?.query2?.filter && {\n filter: collectionView?.query2?.filter\n }),\n groupSortPreference: groups.map(group => group?.value),\n limit\n },\n ...reducersQuery\n },\n ...collectionView?.query2,\n searchQuery,\n userTimeZone,\n filter: { filters, operator: 'and' }\n }\n }\n\n const response = await this.fetch<ReducerResponse<CollectionQueryResult>>({\n endpoint: 'queryCollection',\n body: {\n collection: { id: collectionId },\n collectionView: { id: collectionViewId },\n loader\n },\n fetchOption\n })\n\n // Normalize queryCollection recordMap — Notion API now wraps entries with\n // {spaceId, value: {value, role}} instead of {value, role}. Unwrap so\n // downstream code can use entry.value.* consistently with loadPageChunk.\n if (response.recordMap)\n for (const table of ['block', 'collection', 'collection_view', 'notion_user']) {\n const map = (response.recordMap as unknown as Record<string, Record<string, unknown>>)[table] as\n | Record<string, unknown>\n | undefined\n if (!map) continue\n for (const [id, entry] of Object.entries(map)) {\n const e = entry as { spaceId?: string; value?: { value?: unknown; role?: string } }\n if (e.spaceId && e.value?.value) map[id] = e.value\n }\n }\n\n return response\n }\n\n public async getUsers(userIds: string[], fetchOption?: FetchOption) {\n return this.fetch<RecordValues<User>>({\n endpoint: 'getRecordValues',\n body: { requests: userIds.map(id => ({ id, table: 'notion_user' })) },\n fetchOption\n })\n }\n\n public async getSpaces(spaceIds: string[], fetchOption?: FetchOption) {\n return this.fetch<RecordValues<Space>>({\n endpoint: 'getRecordValues',\n body: { requests: spaceIds.map(id => ({ id, table: 'space' })) },\n fetchOption\n })\n }\n\n public async getBlocks(blockIds: string[], fetchOption?: FetchOption) {\n return this.fetch<PageChunk>({\n endpoint: 'syncRecordValues',\n body: { requests: blockIds.map(blockId => ({ table: 'block', id: blockId, version: -1 })) },\n fetchOption\n })\n }\n\n public async syncRecords(records: { id: string; table: string }[], fetchOption?: FetchOption) {\n return this.fetch<PageChunk>({\n endpoint: 'syncRecordValues',\n body: { requests: records.map(({ id, table }) => ({ table, id, version: -1 })) },\n fetchOption\n })\n }\n\n public async getSignedFileUrls(urls: SignedUrlRequest[], fetchOption?: FetchOption) {\n return this.fetch<SignedUrlResponse>({\n endpoint: 'getSignedFileUrls',\n body: { urls },\n fetchOption\n })\n }\n\n public async search(params: SearchParams, fetchOption?: FetchOption) {\n const body: SearchParams = {\n type: 'BlocksInSpace',\n source: 'quick_find_filters',\n spaceId: parsePageId(params.spaceId),\n sort: { field: 'relevance' },\n limit: params.limit || 20,\n query: params.query,\n filters: {\n isDeletedOnly: false,\n navigableBlockContentOnly: false,\n excludeTemplates: true,\n requireEditPermissions: false,\n includePublicPagesWithoutExplicitAccess: true,\n createdBy: [],\n editedBy: [],\n lastEditedTime: {},\n createdTime: {},\n ...params.filters,\n ancestors: params.filters?.ancestors ? params.filters.ancestors.map(id => parsePageId(id)) : []\n }\n }\n return this.fetch<SearchResults>({\n endpoint: 'search',\n body,\n fetchOption\n })\n }\n\n /**\n * Backlink function which requires an authToken for NotionAPI client.\n * @param params object to pass black and space id\n * @param fetchOption Fetch options\n * @returns backlink list with recordmap\n */\n public async getBacklinks(params: BacklinkParams, fetchOption?: FetchOption) {\n const body: BacklinkParams = {\n block: {\n id: parsePageId(params.block.id),\n spaceId: parsePageId(params.block.spaceId)\n }\n }\n\n return this.fetch<BacklinkResults>({\n endpoint: 'getBacklinksForBlockInitial',\n body,\n fetchOption\n })\n }\n\n public async fetch<T>({\n endpoint,\n body,\n fetchOption,\n headers: clientHeaders\n }: {\n endpoint: string\n body: object\n fetchOption?: FetchOption\n headers?: HeadersInit\n }): Promise<T> {\n const headers: HeadersInit = {\n ...clientHeaders,\n ...fetchOption?.headers,\n 'Content-Type': 'application/json'\n }\n\n if (this._authToken) headers['cookie'] = `token_v2=${this._authToken}`\n if (this._activeUser) headers['x-notion-active-user-header'] = this._activeUser\n\n const url = `${this._apiBaseUrl}/${endpoint}`\n const requestInit = {\n method: 'post',\n body: JSON.stringify(body),\n headers,\n ...fetchOption\n }\n if (fetchOption?.timeout !== undefined) {\n const ctrl = new AbortController()\n setTimeout(() => ctrl.abort(), fetchOption.timeout)\n requestInit.signal = ctrl.signal\n }\n\n return fetch(url, requestInit).then(res => res.json())\n }\n}\n"],"names":["NotionAPI","apiBaseUrl","authToken","activeUser","userTimeZone","_0","__async","pageId","concurrency","fetchFullInfo","fetchCollections","signFileUrls","chunkLimit","chunkNumber","fetchOption","page","recordMap","uuidToId","_a","_b","_c","promises","pendingUserIDs","getPageContentUserIds","id","res","pendingBlocks","getPageContentBlockIds","rootBlock","pendingSpaces","newUsers","newBlocks","newSpaces","__spreadValues","contentBlockIds","_1","_2","collectionConcurrency","allCollectionInstances","blockId","block","collectionId","getBlockCollectionId","findAncestors","collectionViewId","resultMap","pMap","collectionInstance","collectionViewBlockId","collectionView","collectionData","__spreadProps","viewBlockData","err","allFileInstances","source","_f","_e","_d","signedUrls","i","file","signedUrl","parsedPageId","parsePageId","body","limit","searchQuery","loadContentCover","type","isBoardType","groupBy","filters","filterObj","loader","groups","_g","_h","iterators","operators","reducersQuery","group","property","value","iterator","iteratorProps","isUncategorizedValue","isDateValue","queryLabel","_i","_j","queryValue","reducerLabel","_k","_l","response","table","map","entry","e","_m","userIds","spaceIds","blockIds","records","urls","params","endpoint","clientHeaders","headers","url","requestInit","ctrl"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/notion-api.ts"],"sourcesContent":["import {\n getBlockCollectionId,\n getPageContentBlockIds,\n getPageContentUserIds,\n parsePageId,\n uuidToId,\n findAncestors\n} from '@texonom/nutils'\nimport pMap from 'p-map'\n\nimport type {\n ExtendedRecordMap,\n NotionMap,\n PageChunk,\n BaseCollectionView,\n CollectionViewType,\n ReducerResponse,\n CollectionQueryResult,\n RecordValues,\n User,\n Space,\n SearchParams,\n SearchResults,\n BacklinkParams,\n BacklinkResults\n} from '@texonom/ntypes'\n\nimport type { SignedUrlRequest, FetchOption, SignedUrlResponse } from './types'\n\n/**\n * Main Notion API client.\n */\nexport class NotionAPI {\n private readonly _apiBaseUrl: string\n private readonly _authToken?: string\n private readonly _activeUser?: string\n private readonly _userTimeZone: string\n\n constructor({\n apiBaseUrl = 'https://www.notion.so/api/v3',\n authToken,\n activeUser,\n userTimeZone = 'America/New_York'\n }: {\n apiBaseUrl?: string\n authToken?: string\n userLocale?: string\n userTimeZone?: string\n activeUser?: string\n } = {}) {\n this._apiBaseUrl = apiBaseUrl\n this._authToken = authToken\n this._activeUser = activeUser\n this._userTimeZone = userTimeZone\n }\n\n public async getPage(\n pageId: string,\n {\n concurrency = 3,\n fetchFullInfo = true,\n fetchCollections = true,\n signFileUrls = true,\n chunkLimit = 100,\n chunkNumber = 0,\n fetchOption\n }: {\n concurrency?: number\n fetchFullInfo?: boolean\n fetchCollections?: boolean\n signFileUrls?: boolean\n chunkLimit?: number\n chunkNumber?: number\n fetchOption?: FetchOption\n } = {}\n ): Promise<ExtendedRecordMap> {\n const page = await this.getPageRaw(pageId, {\n chunkLimit,\n chunkNumber,\n fetchOption\n })\n const recordMap = page?.recordMap as ExtendedRecordMap\n if (!recordMap?.block) throw new Error(`Notion page not found \"${uuidToId(pageId)}\"`)\n\n // ensure that all top-level maps exist\n recordMap.collection = recordMap.collection ?? {}\n recordMap.collection_view = recordMap.collection_view ?? {}\n recordMap.notion_user = recordMap.notion_user ?? {}\n\n // additional mappings added for convenience\n // note: these are not native notion objects\n recordMap.collection_query = {}\n recordMap.signed_urls = {}\n\n // Fetch Users\n if (fetchFullInfo) {\n const promises = []\n // Fetch any missing users\n const pendingUserIDs = getPageContentUserIds(recordMap).filter(id => !recordMap.notion_user[id])\n promises.push(this.getUsers(pendingUserIDs, fetchOption).then(res => res?.recordMapWithRoles?.notion_user))\n\n // Fetch any missing content blocks\n const pendingBlocks = getPageContentBlockIds(recordMap).filter(id => !recordMap.block[id])\n promises.push(this.getBlocks(pendingBlocks, fetchOption).then(res => res.recordMap.block))\n\n // Fetch any missing content blocks\n const rootBlock = Object.values(recordMap.block)[0].value\n const pendingSpaces = rootBlock.parent_table === 'space' ? [rootBlock.parent_id] : []\n promises.push(this.getSpaces(pendingSpaces, fetchOption).then(res => res.recordMapWithRoles?.space))\n\n // Append them\n const [newUsers, newBlocks, newSpaces] = await Promise.all(promises)\n recordMap.notion_user = { ...recordMap.notion_user, ...newUsers }\n recordMap.block = { ...recordMap.block, ...newBlocks }\n recordMap.space = { ...recordMap.space, ...newSpaces }\n }\n\n // Optionally fetch all data for embedded collections and their associated views.\n // NOTE: We're eagerly fetching *all* data for each collection and all of its views.\n // This is really convenient in order to ensure that all data needed for a given\n // Notion page is readily available for use cases involving server-side rendering\n // and edge caching.\n\n const contentBlockIds = getPageContentBlockIds(recordMap)\n if (fetchCollections) await this.fetchCollections(contentBlockIds, recordMap, pageId, { concurrency, fetchOption })\n\n // Optionally fetch signed URLs for any embedded files.\n // NOTE: Similar to collection data, we default to eagerly fetching signed URL info\n // because it is preferable for many use cases as opposed to making these API calls\n // lazily from the client-side.\n if (signFileUrls) await this.addSignedUrls({ recordMap, contentBlockIds, fetchOption })\n\n return recordMap\n }\n\n public async fetchCollections(\n contentBlockIds: string[],\n recordMap: ExtendedRecordMap,\n pageId?: string,\n {\n concurrency,\n fetchOption,\n collectionConcurrency\n }: {\n concurrency: number\n collectionConcurrency?: number\n fetchOption?: FetchOption\n } = { concurrency: 36, fetchOption: { timeout: 20000 }, collectionConcurrency: 300 }\n ): Promise<ExtendedRecordMap> {\n const allCollectionInstances: Array<{\n collectionId: string\n collectionViewId: string\n collectionViewBlockId: string\n }> = contentBlockIds.flatMap(blockId => {\n const block = recordMap.block[blockId]?.value\n if (!block) return []\n const collectionId =\n block &&\n (block.type === 'collection_view' || block.type === 'collection_view_page') &&\n getBlockCollectionId(block, recordMap)\n\n if (collectionId)\n if (pageId ? findAncestors(recordMap, block).includes(pageId) : true)\n return block.view_ids?.flatMap(collectionViewId => {\n if (recordMap.collection_query[collectionId]?.[collectionViewId]) return []\n else\n return {\n collectionId,\n collectionViewId,\n collectionViewBlockId: block.id\n }\n })\n return []\n })\n\n // fetch data for all collection view instances\n const resultMap: ExtendedRecordMap = {\n block: {},\n collection: {},\n collection_view: {},\n notion_user: {},\n collection_query: {},\n signed_urls: {}\n }\n await pMap(\n allCollectionInstances.slice(allCollectionInstances.length - collectionConcurrency, allCollectionInstances.length),\n async collectionInstance => {\n const { collectionId, collectionViewId, collectionViewBlockId } = collectionInstance\n const collectionView = recordMap.collection_view[collectionViewId]?.value\n\n try {\n const collectionData = await this.getCollectionData(collectionId, collectionViewId, collectionView, {\n fetchOption\n })\n\n if (collectionData.recordMap) {\n recordMap.block = { ...recordMap.block, ...collectionData.recordMap.block }\n recordMap.collection = { ...recordMap.collection, ...collectionData.recordMap.collection }\n recordMap.collection_view = { ...recordMap.collection_view, ...collectionData.recordMap.collection_view }\n recordMap.notion_user = { ...recordMap.notion_user, ...collectionData.recordMap.notion_user }\n recordMap.collection_query![collectionId] = {\n ...recordMap.collection_query![collectionId],\n [collectionViewId]: collectionData.result?.reducerResults\n }\n resultMap.block = { ...resultMap.block, ...collectionData.recordMap.block }\n resultMap.collection = { ...resultMap.collection, ...collectionData.recordMap.collection }\n resultMap.collection_view = { ...resultMap.collection_view, ...collectionData.recordMap.collection_view }\n resultMap.notion_user = { ...resultMap.notion_user, ...collectionData.recordMap.notion_user }\n resultMap.collection_query![collectionId] = {\n ...resultMap.collection_query![collectionId],\n [collectionViewId]: collectionData.result?.reducerResults\n }\n }\n\n if (!collectionView) {\n const viewBlockData = await this.getPageRaw(collectionViewBlockId, { fetchOption })\n if (viewBlockData.recordMap) {\n recordMap.collection_view = { ...recordMap.collection_view, ...viewBlockData.recordMap.collection_view }\n resultMap.collection_view = { ...resultMap.collection_view, ...viewBlockData.recordMap.collection_view }\n recordMap.collection = { ...recordMap.collection, ...viewBlockData.recordMap.collection }\n resultMap.collection = { ...resultMap.collection, ...viewBlockData.recordMap.collection }\n recordMap.block = { ...recordMap.block, ...viewBlockData.recordMap.block }\n resultMap.block = { ...resultMap.block, ...viewBlockData.recordMap.block }\n }\n }\n } catch (err) {\n // It's possible for public pages to link to private collections, in which case\n // Notion returns a 400 error\n console.debug('NotionAPI collectionQuery error in page id ', pageId)\n console.error(err)\n }\n },\n {\n concurrency\n }\n )\n return resultMap\n }\n\n public async addSignedUrls({\n recordMap,\n contentBlockIds,\n fetchOption = {}\n }: {\n recordMap: ExtendedRecordMap\n contentBlockIds?: string[]\n fetchOption?: FetchOption\n }) {\n recordMap.signed_urls = {}\n\n if (!contentBlockIds) contentBlockIds = getPageContentBlockIds(recordMap)\n\n const allFileInstances = contentBlockIds.flatMap(blockId => {\n const block = recordMap.block[blockId]?.value\n\n if (\n block &&\n (block.type === 'pdf' ||\n block.type === 'audio' ||\n (block.type === 'image' && block.file_ids?.length) ||\n block.type === 'video' ||\n block.type === 'file' ||\n block.type === 'page')\n ) {\n const source = block.type === 'page' ? block.format?.page_cover : block.properties?.source?.[0]?.[0]\n\n if (source) {\n if (!source.includes('secure.notion-static.com') && !source.includes('prod-files-secure')) return []\n\n return {\n permissionRecord: {\n table: 'block',\n id: block.id\n },\n url: source\n }\n }\n }\n\n return []\n })\n\n if (allFileInstances.length > 0)\n try {\n const { signedUrls } = await this.getSignedFileUrls(allFileInstances, fetchOption)\n\n if (signedUrls.length === allFileInstances.length)\n for (let i = 0; i < allFileInstances.length; ++i) {\n const file = allFileInstances[i]\n const signedUrl = signedUrls[i]\n\n recordMap.signed_urls[file.permissionRecord.id] = signedUrl\n }\n } catch (err) {\n console.warn('NotionAPI getSignedfileUrls error', err)\n }\n }\n\n public async getPageRaw(\n pageId: string,\n {\n fetchOption,\n chunkLimit = 100,\n chunkNumber = 0\n }: {\n chunkLimit?: number\n chunkNumber?: number\n fetchOption?: FetchOption\n } = {}\n ) {\n const parsedPageId = parsePageId(pageId)\n\n if (!parsedPageId) throw new Error(`invalid notion pageId \"${pageId}\"`)\n\n const body = {\n pageId: parsedPageId,\n limit: chunkLimit,\n chunkNumber: chunkNumber,\n cursor: { stack: [] },\n verticalColumns: false\n }\n\n return this.fetch<PageChunk>({\n endpoint: 'loadPageChunk',\n body,\n fetchOption\n })\n }\n\n public async getCollectionData(\n collectionId: string,\n collectionViewId: string,\n collectionView: BaseCollectionView,\n {\n limit = 9999,\n searchQuery = '',\n userTimeZone = this._userTimeZone,\n loadContentCover = true,\n fetchOption\n }: {\n type?: CollectionViewType\n limit?: number\n searchQuery?: string\n userTimeZone?: string\n userLocale?: string\n loadContentCover?: boolean\n fetchOption?: FetchOption\n } = {}\n ) {\n const type = collectionView?.type\n const isBoardType = type === 'board'\n const groupBy = isBoardType ? collectionView?.format?.board_columns_by : collectionView?.format?.collection_group_by\n\n let filters = []\n if (collectionView?.format?.property_filters)\n filters = collectionView.format?.property_filters.map(filterObj => {\n //get the inner filter\n return {\n filter: filterObj?.filter?.filter,\n property: filterObj?.filter?.property\n }\n })\n\n //Fixes formula filters from not working\n if (collectionView?.query2?.filter?.filters) filters.push(...collectionView.query2.filter.filters)\n\n let loader: unknown = {\n type: 'reducer',\n reducers: {\n collection_group_results: {\n type: 'results',\n limit,\n loadContentCover\n }\n },\n sort: [],\n ...collectionView?.query2,\n filter: {\n filters: filters,\n operator: 'and'\n },\n searchQuery,\n userTimeZone\n }\n\n if (groupBy) {\n const groups = collectionView?.format?.board_columns || collectionView?.format?.collection_groups || []\n const iterators = [isBoardType ? 'board' : 'group_aggregation', 'results']\n const operators = {\n checkbox: 'checkbox_is',\n url: 'string_starts_with',\n text: 'string_starts_with',\n select: 'enum_is',\n multi_select: 'enum_contains',\n created_time: 'date_is_within',\n ['undefined']: 'is_empty'\n }\n\n const reducersQuery = {}\n for (const group of groups) {\n const {\n property,\n value: { value, type }\n } = group\n\n for (const iterator of iterators) {\n const iteratorProps =\n iterator === 'results'\n ? {\n type: iterator,\n limit\n }\n : {\n type: 'aggregation',\n aggregation: {\n aggregator: 'count'\n }\n }\n\n const isUncategorizedValue = typeof value === 'undefined'\n const isDateValue = value?.range\n // TODO: review dates reducers\n const queryLabel = isUncategorizedValue\n ? 'uncategorized'\n : isDateValue\n ? value.range?.start_date || value.range?.end_date\n : value?.value || value\n\n const queryValue = !isUncategorizedValue && (isDateValue || value?.value || value)\n\n reducersQuery[`${iterator}:${type}:${queryLabel}`] = {\n ...iteratorProps,\n filter: {\n operator: 'and',\n filters: [\n {\n property,\n filter: {\n operator: !isUncategorizedValue ? operators[type] : 'is_empty',\n ...(!isUncategorizedValue && {\n value: {\n type: 'exact',\n value: queryValue\n }\n })\n }\n }\n ]\n }\n }\n }\n }\n\n const reducerLabel = isBoardType ? 'board_columns' : `${type}_groups`\n loader = {\n type: 'reducer',\n reducers: {\n [reducerLabel]: {\n type: 'groups',\n groupBy,\n ...(collectionView?.query2?.filter && {\n filter: collectionView?.query2?.filter\n }),\n groupSortPreference: groups.map(group => group?.value),\n limit\n },\n ...reducersQuery\n },\n ...collectionView?.query2,\n searchQuery,\n userTimeZone,\n filter: { filters, operator: 'and' }\n }\n }\n\n const response = await this.fetch<ReducerResponse<CollectionQueryResult>>({\n endpoint: 'queryCollection',\n body: {\n collection: { id: collectionId },\n collectionView: { id: collectionViewId },\n loader\n },\n fetchOption\n })\n\n // Normalize queryCollection recordMap — Notion API now wraps entries with\n // {spaceId, value: {value, role}} instead of {value, role}. Unwrap so\n // downstream code can use entry.value.* consistently with loadPageChunk.\n if (response.recordMap) {\n normalizeMap(response.recordMap.block)\n normalizeMap(response.recordMap.collection)\n normalizeMap(response.recordMap.collection_view)\n normalizeMap(response.recordMap.notion_user)\n }\n\n return response\n }\n\n public async getUsers(userIds: string[], fetchOption?: FetchOption) {\n return this.fetch<RecordValues<User>>({\n endpoint: 'getRecordValues',\n body: { requests: userIds.map(id => ({ id, table: 'notion_user' })) },\n fetchOption\n })\n }\n\n public async getSpaces(spaceIds: string[], fetchOption?: FetchOption) {\n return this.fetch<RecordValues<Space>>({\n endpoint: 'getRecordValues',\n body: { requests: spaceIds.map(id => ({ id, table: 'space' })) },\n fetchOption\n })\n }\n\n public async getBlocks(blockIds: string[], fetchOption?: FetchOption) {\n return this.fetch<PageChunk>({\n endpoint: 'syncRecordValues',\n body: { requests: blockIds.map(blockId => ({ table: 'block', id: blockId, version: -1 })) },\n fetchOption\n })\n }\n\n public async syncRecords(records: { id: string; table: string }[], fetchOption?: FetchOption) {\n return this.fetch<PageChunk>({\n endpoint: 'syncRecordValues',\n body: { requests: records.map(({ id, table }) => ({ table, id, version: -1 })) },\n fetchOption\n })\n }\n\n public async getSignedFileUrls(urls: SignedUrlRequest[], fetchOption?: FetchOption) {\n return this.fetch<SignedUrlResponse>({\n endpoint: 'getSignedFileUrls',\n body: { urls },\n fetchOption\n })\n }\n\n public async search(params: SearchParams, fetchOption?: FetchOption) {\n const body: SearchParams = {\n type: 'BlocksInSpace',\n source: 'quick_find_filters',\n spaceId: parsePageId(params.spaceId),\n sort: { field: 'relevance' },\n limit: params.limit || 20,\n query: params.query,\n filters: {\n isDeletedOnly: false,\n navigableBlockContentOnly: false,\n excludeTemplates: true,\n requireEditPermissions: false,\n includePublicPagesWithoutExplicitAccess: true,\n createdBy: [],\n editedBy: [],\n lastEditedTime: {},\n createdTime: {},\n ...params.filters,\n ancestors: params.filters?.ancestors ? params.filters.ancestors.map(id => parsePageId(id)) : []\n }\n }\n return this.fetch<SearchResults>({\n endpoint: 'search',\n body,\n fetchOption\n })\n }\n\n /**\n * Backlink function which requires an authToken for NotionAPI client.\n * @param params object to pass black and space id\n * @param fetchOption Fetch options\n * @returns backlink list with recordmap\n */\n public async getBacklinks(params: BacklinkParams, fetchOption?: FetchOption) {\n const body: BacklinkParams = {\n block: {\n id: parsePageId(params.block.id),\n spaceId: parsePageId(params.block.spaceId)\n }\n }\n\n return this.fetch<BacklinkResults>({\n endpoint: 'getBacklinksForBlockInitial',\n body,\n fetchOption\n })\n }\n\n public async fetch<T>({\n endpoint,\n body,\n fetchOption,\n headers: clientHeaders\n }: {\n endpoint: string\n body: object\n fetchOption?: FetchOption\n headers?: HeadersInit\n }): Promise<T> {\n const headers: HeadersInit = {\n ...clientHeaders,\n ...fetchOption?.headers,\n 'Content-Type': 'application/json'\n }\n\n if (this._authToken) headers['cookie'] = `token_v2=${this._authToken}`\n if (this._activeUser) headers['x-notion-active-user-header'] = this._activeUser\n\n const url = `${this._apiBaseUrl}/${endpoint}`\n const requestInit = {\n method: 'post',\n body: JSON.stringify(body),\n headers,\n ...fetchOption\n }\n if (fetchOption?.timeout !== undefined) {\n const ctrl = new AbortController()\n setTimeout(() => ctrl.abort(), fetchOption.timeout)\n requestInit.signal = ctrl.signal\n }\n\n return fetch(url, requestInit).then(res => res.json())\n }\n}\n\n// Notion's queryCollection API wraps entries as {spaceId, value: {value, role}}\n// instead of {value, role}. Unwrap in-place to match loadPageChunk format.\nfunction normalizeMap<T>(map: NotionMap<T> | undefined) {\n if (!map) return\n for (const id of Object.keys(map)) {\n const entry: any = map[id]\n if (entry?.spaceId && entry.value?.value) map[id] = entry.value\n }\n}\n"],"names":["NotionAPI","apiBaseUrl","authToken","activeUser","userTimeZone","_0","__async","pageId","concurrency","fetchFullInfo","fetchCollections","signFileUrls","chunkLimit","chunkNumber","fetchOption","page","recordMap","uuidToId","_a","_b","_c","promises","pendingUserIDs","getPageContentUserIds","id","res","pendingBlocks","getPageContentBlockIds","rootBlock","pendingSpaces","newUsers","newBlocks","newSpaces","__spreadValues","contentBlockIds","_1","_2","collectionConcurrency","allCollectionInstances","blockId","block","collectionId","getBlockCollectionId","findAncestors","collectionViewId","resultMap","pMap","collectionInstance","collectionViewBlockId","collectionView","collectionData","__spreadProps","viewBlockData","err","allFileInstances","source","_f","_e","_d","signedUrls","i","file","signedUrl","parsedPageId","parsePageId","body","limit","searchQuery","loadContentCover","type","isBoardType","groupBy","filters","filterObj","loader","groups","_g","_h","iterators","operators","reducersQuery","group","property","value","iterator","iteratorProps","isUncategorizedValue","isDateValue","queryLabel","_i","_j","queryValue","reducerLabel","_k","_l","response","normalizeMap","userIds","spaceIds","blockIds","records","table","urls","params","endpoint","clientHeaders","headers","url","requestInit","ctrl","map","entry"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notion-api.d.ts","sourceRoot":"","sources":["../src/notion-api.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,iBAAiB,
|
|
1
|
+
{"version":3,"file":"notion-api.d.ts","sourceRoot":"","sources":["../src/notion-api.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@texonom/nclient",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Robust TypeScript client for the unofficial Notion API.",
|
|
6
6
|
"repository": "texonom/notion-node",
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"p-map": "^5.5.0",
|
|
21
|
-
"@texonom/ntypes": "^1.5.
|
|
22
|
-
"@texonom/nutils": "^1.5.
|
|
21
|
+
"@texonom/ntypes": "^1.5.6",
|
|
22
|
+
"@texonom/nutils": "^1.5.6"
|
|
23
23
|
},
|
|
24
24
|
"standard-version": {
|
|
25
25
|
"skip": {
|