@texonom/nclient 1.5.7 → 1.5.9

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 CHANGED
@@ -1,96 +1,96 @@
1
1
  var V = Object.defineProperty, ee = Object.defineProperties;
2
- var te = Object.getOwnPropertyDescriptors;
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
- for (var t in s || (s = {}))
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) => {
2
+ var oe = Object.getOwnPropertyDescriptors;
3
+ var Z = Object.getOwnPropertySymbols;
4
+ var te = Object.prototype.hasOwnProperty, re = Object.prototype.propertyIsEnumerable;
5
+ var G = (y, t, o) => t in y ? V(y, t, { enumerable: !0, configurable: !0, writable: !0, value: o }) : y[t] = o, n = (y, t) => {
6
+ for (var o in t || (t = {}))
7
+ te.call(t, o) && G(y, o, t[o]);
8
+ if (Z)
9
+ for (var o of Z(t))
10
+ re.call(t, o) && G(y, o, t[o]);
11
+ return y;
12
+ }, P = (y, t) => ee(y, oe(t));
13
+ var k = (y, t, o) => new Promise((e, s) => {
14
+ var d = (i) => {
15
15
  try {
16
- n(t.next(c));
17
- } catch (k) {
18
- l(k);
16
+ c(o.next(i));
17
+ } catch (g) {
18
+ s(g);
19
19
  }
20
- }, a = (c) => {
20
+ }, l = (i) => {
21
21
  try {
22
- n(t.throw(c));
23
- } catch (k) {
24
- l(k);
22
+ c(o.throw(i));
23
+ } catch (g) {
24
+ s(g);
25
25
  }
26
- }, n = (c) => c.done ? e(c.value) : Promise.resolve(c.value).then(_, a);
27
- n((t = t.apply(p, s)).next());
26
+ }, c = (i) => i.done ? e(i.value) : Promise.resolve(i.value).then(d, l);
27
+ c((o = o.apply(y, t)).next());
28
28
  });
29
- import { uuidToId as oe, getPageContentUserIds as ne, getPageContentBlockIds as F, getBlockCollectionId as ce, findAncestors as ie, parsePageId as T } from "@texonom/nutils";
29
+ import { uuidToId as se, getPageContentUserIds as ne, getPageContentBlockIds as E, getBlockCollectionId as ce, findAncestors as ie, parsePageId as w } from "@texonom/nutils";
30
30
  import ae from "p-map";
31
31
  class pe {
32
32
  constructor({
33
- apiBaseUrl: s = "https://www.notion.so/api/v3",
34
- authToken: t,
33
+ apiBaseUrl: t = "https://www.notion.so/api/v3",
34
+ authToken: o,
35
35
  activeUser: e,
36
- userTimeZone: l = "America/New_York"
36
+ userTimeZone: s = "America/New_York"
37
37
  } = {}) {
38
- this._apiBaseUrl = s, this._authToken = t, this._activeUser = e, this._userTimeZone = l;
38
+ this._apiBaseUrl = t, this._authToken = o, this._activeUser = e, this._userTimeZone = s;
39
39
  }
40
- getPage(k) {
41
- return y(this, arguments, function* (s, {
42
- concurrency: t = 3,
40
+ getPage(g) {
41
+ return k(this, arguments, function* (t, {
42
+ concurrency: o = 3,
43
43
  fetchFullInfo: e = !0,
44
- fetchCollections: l = !0,
45
- signFileUrls: _ = !0,
46
- chunkLimit: a = 100,
47
- chunkNumber: n = 0,
48
- fetchOption: c
44
+ fetchCollections: s = !0,
45
+ signFileUrls: d = !0,
46
+ chunkLimit: l = 100,
47
+ chunkNumber: c = 0,
48
+ fetchOption: i
49
49
  } = {}) {
50
- var i, u, m;
51
- const B = yield this.getPageRaw(s, {
52
- chunkLimit: a,
53
- chunkNumber: n,
54
- fetchOption: c
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) => {
50
+ var u, p, B;
51
+ const m = yield this.getPageRaw(t, {
52
+ chunkLimit: l,
53
+ chunkNumber: c,
54
+ fetchOption: i
55
+ }), r = m == null ? void 0 : m.recordMap;
56
+ if (!(r != null && r.block)) throw new Error(`Notion page not found "${se(t)}"`);
57
+ if (a(r.block), a(r.collection), a(r.collection_view), a(r.notion_user), r.collection = (u = r.collection) != null ? u : {}, r.collection_view = (p = r.collection_view) != null ? p : {}, r.notion_user = (B = r.notion_user) != null ? B : {}, r.collection_query = {}, r.signed_urls = {}, e) {
58
+ const M = [], b = ne(r).filter((h) => !r.notion_user[h]);
59
+ M.push(this.getUsers(b, i).then((h) => {
60
60
  var R;
61
- return (R = f == null ? void 0 : f.recordMapWithRoles) == null ? void 0 : R.notion_user;
61
+ return (R = h == null ? void 0 : h.recordMapWithRoles) == null ? void 0 : R.notion_user;
62
62
  }));
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) => {
63
+ const I = E(r).filter((h) => !r.block[h]);
64
+ M.push(this.getBlocks(I, i).then((h) => h.recordMap.block));
65
+ const C = Object.values(r.block)[0].value, _ = C.parent_table === "space" ? [C.parent_id] : [];
66
+ M.push(this.getSpaces(_, i).then((h) => {
67
67
  var R;
68
- return (R = f.recordMapWithRoles) == null ? void 0 : R.space;
68
+ return (R = h.recordMapWithRoles) == null ? void 0 : R.space;
69
69
  }));
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);
70
+ const [f, T, $] = yield Promise.all(M);
71
+ r.notion_user = n(n({}, r.notion_user), f), r.block = n(n({}, r.block), T), r.space = n(n({}, r.space), $), a(r.block), a(r.collection), a(r.notion_user);
72
72
  }
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;
73
+ const q = E(r);
74
+ return s && (yield this.fetchCollections(q, r, t, { concurrency: o, fetchOption: i })), d && (yield this.addSignedUrls({ recordMap: r, contentBlockIds: q, fetchOption: i })), r;
75
75
  });
76
76
  }
77
- fetchCollections(n, c, k) {
78
- return y(this, arguments, function* (s, t, e, {
79
- concurrency: l,
80
- fetchOption: _,
81
- collectionConcurrency: a
77
+ fetchCollections(c, i, g) {
78
+ return k(this, arguments, function* (t, o, e, {
79
+ concurrency: s,
80
+ fetchOption: d,
81
+ collectionConcurrency: l
82
82
  } = { concurrency: 36, fetchOption: { timeout: 2e4 }, collectionConcurrency: 300 }) {
83
- const B = s.flatMap((v) => {
84
- var m, b;
85
- const i = (m = t.block[v]) == null ? void 0 : m.value;
86
- if (!i) return [];
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)) ? (b = i.view_ids) == null ? void 0 : b.flatMap((g) => {
83
+ const m = t.flatMap((q) => {
84
+ var B, M;
85
+ const u = (B = o.block[q]) == null ? void 0 : B.value;
86
+ if (!u) return [];
87
+ const p = u && (u.type === "collection_view" || u.type === "collection_view_page") && ce(u, o);
88
+ return p && (!e || ie(o, u).includes(e)) ? (M = u.view_ids) == null ? void 0 : M.flatMap((b) => {
89
89
  var I;
90
- return (I = t.collection_query[u]) != null && I[g] ? [] : {
91
- collectionId: u,
92
- collectionViewId: g,
93
- collectionViewBlockId: i.id
90
+ return (I = o.collection_query[p]) != null && I[b] ? [] : {
91
+ collectionId: p,
92
+ collectionViewId: b,
93
+ collectionViewBlockId: u.id
94
94
  };
95
95
  }) : [];
96
96
  }), r = {
@@ -102,128 +102,128 @@ class pe {
102
102
  signed_urls: {}
103
103
  };
104
104
  return yield ae(
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;
105
+ m.slice(m.length - l, m.length),
106
+ (q) => k(this, null, function* () {
107
+ var b, I, C;
108
+ const { collectionId: u, collectionViewId: p, collectionViewBlockId: B } = q, M = (b = o.collection_view[p]) == null ? void 0 : b.value;
109
109
  try {
110
- const d = yield this.getCollectionData(i, u, b, {
111
- fetchOption: _
110
+ const _ = yield this.getCollectionData(u, p, M, {
111
+ fetchOption: d
112
112
  });
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
- [u]: (C = d.result) == null ? void 0 : C.reducerResults
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));
113
+ if (_.recordMap && (o.block = n(n({}, o.block), _.recordMap.block), o.collection = n(n({}, o.collection), _.recordMap.collection), o.collection_view = n(n({}, o.collection_view), _.recordMap.collection_view), o.notion_user = n(n({}, o.notion_user), _.recordMap.notion_user), o.collection_query[u] = P(n({}, o.collection_query[u]), {
114
+ [p]: (I = _.result) == null ? void 0 : I.reducerResults
115
+ }), r.block = n(n({}, r.block), _.recordMap.block), r.collection = n(n({}, r.collection), _.recordMap.collection), r.collection_view = n(n({}, r.collection_view), _.recordMap.collection_view), r.notion_user = n(n({}, r.notion_user), _.recordMap.notion_user), r.collection_query[u] = P(n({}, r.collection_query[u]), {
116
+ [p]: (C = _.result) == null ? void 0 : C.reducerResults
117
+ })), !M) {
118
+ const f = yield this.getPageRaw(B, { fetchOption: d });
119
+ f.recordMap && (a(f.recordMap.block), a(f.recordMap.collection), a(f.recordMap.collection_view), o.collection_view = n(n({}, o.collection_view), f.recordMap.collection_view), r.collection_view = n(n({}, r.collection_view), f.recordMap.collection_view), o.collection = n(n({}, o.collection), f.recordMap.collection), r.collection = n(n({}, r.collection), f.recordMap.collection), o.block = n(n({}, o.block), f.recordMap.block), r.block = n(n({}, r.block), f.recordMap.block));
120
120
  }
121
- } catch (d) {
122
- console.debug("NotionAPI collectionQuery error in page id ", e), console.error(d);
121
+ } catch (_) {
122
+ console.debug("NotionAPI collectionQuery error in page id ", e), console.error(_);
123
123
  }
124
124
  }),
125
125
  {
126
- concurrency: l
126
+ concurrency: s
127
127
  }
128
128
  ), r;
129
129
  });
130
130
  }
131
- addSignedUrls(l) {
132
- return y(this, arguments, function* ({
133
- recordMap: s,
134
- contentBlockIds: t,
131
+ addSignedUrls(s) {
132
+ return k(this, arguments, function* ({
133
+ recordMap: t,
134
+ contentBlockIds: o,
135
135
  fetchOption: e = {}
136
136
  }) {
137
- s.signed_urls = {}, t || (t = F(s));
138
- const _ = t.flatMap((a) => {
139
- var c, k, B, r, v, i;
140
- const n = (c = s.block[a]) == null ? void 0 : c.value;
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
- if (u)
144
- return !u.includes("secure.notion-static.com") && !u.includes("prod-files-secure") ? [] : {
137
+ t.signed_urls = {}, o || (o = E(t));
138
+ const d = o.flatMap((l) => {
139
+ var i, g, m, r, q, u;
140
+ const c = (i = t.block[l]) == null ? void 0 : i.value;
141
+ if (c && (c.type === "pdf" || c.type === "audio" || c.type === "image" && ((g = c.file_ids) != null && g.length) || c.type === "video" || c.type === "file" || c.type === "page")) {
142
+ const p = c.type === "page" ? (m = c.format) == null ? void 0 : m.page_cover : (u = (q = (r = c.properties) == null ? void 0 : r.source) == null ? void 0 : q[0]) == null ? void 0 : u[0];
143
+ if (p)
144
+ return !p.includes("secure.notion-static.com") && !p.includes("prod-files-secure") ? [] : {
145
145
  permissionRecord: {
146
146
  table: "block",
147
- id: n.id
147
+ id: c.id
148
148
  },
149
- url: u
149
+ url: p
150
150
  };
151
151
  }
152
152
  return [];
153
153
  });
154
- if (_.length > 0)
154
+ if (d.length > 0)
155
155
  try {
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;
156
+ const { signedUrls: l } = yield this.getSignedFileUrls(d, e);
157
+ if (l.length === d.length)
158
+ for (let c = 0; c < d.length; ++c) {
159
+ const i = d[c], g = l[c];
160
+ t.signed_urls[i.permissionRecord.id] = g;
161
161
  }
162
- } catch (a) {
163
- console.warn("NotionAPI getSignedfileUrls error", a);
162
+ } catch (l) {
163
+ console.warn("NotionAPI getSignedfileUrls error", l);
164
164
  }
165
165
  });
166
166
  }
167
- getPageRaw(_) {
168
- return y(this, arguments, function* (s, {
169
- fetchOption: t,
167
+ getPageRaw(d) {
168
+ return k(this, arguments, function* (t, {
169
+ fetchOption: o,
170
170
  chunkLimit: e = 100,
171
- chunkNumber: l = 0
171
+ chunkNumber: s = 0
172
172
  } = {}) {
173
- const a = T(s);
174
- if (!a) throw new Error(`invalid notion pageId "${s}"`);
175
- const n = {
176
- pageId: a,
173
+ const l = w(t);
174
+ if (!l) throw new Error(`invalid notion pageId "${t}"`);
175
+ const c = {
176
+ pageId: l,
177
177
  limit: e,
178
- chunkNumber: l,
178
+ chunkNumber: s,
179
179
  cursor: { stack: [] },
180
180
  verticalColumns: !1
181
181
  };
182
182
  return this.fetch({
183
183
  endpoint: "loadPageChunk",
184
- body: n,
185
- fetchOption: t
184
+ body: c,
185
+ fetchOption: o
186
186
  });
187
187
  });
188
188
  }
189
- getCollectionData(k, B, r) {
190
- return y(this, arguments, function* (s, t, e, {
191
- limit: l = 9999,
192
- searchQuery: _ = "",
193
- userTimeZone: a = this._userTimeZone,
194
- loadContentCover: n = !0,
195
- fetchOption: c
189
+ getCollectionData(g, m, r) {
190
+ return k(this, arguments, function* (t, o, e, {
191
+ limit: s = 9999,
192
+ searchQuery: d = "",
193
+ userTimeZone: l = this._userTimeZone,
194
+ loadContentCover: c = !0,
195
+ fetchOption: i
196
196
  } = {}) {
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;
197
+ var I, C, _, f, T, $, h, R, F, z, W, L;
198
+ const q = e == null ? void 0 : e.type, u = q === "board", p = u ? (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 B = [];
200
+ (_ = e == null ? void 0 : e.format) != null && _.property_filters && (B = (f = e.format) == null ? void 0 : f.property_filters.map((U) => {
201
+ var x, A;
202
202
  return {
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
203
+ filter: (x = U == null ? void 0 : U.filter) == null ? void 0 : x.filter,
204
+ property: (A = U == null ? void 0 : U.filter) == null ? void 0 : A.property
205
205
  };
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({
206
+ })), ($ = (T = e == null ? void 0 : e.query2) == null ? void 0 : T.filter) != null && $.filters && B.push(...e.query2.filter.filters);
207
+ let M = P(n({
208
208
  type: "reducer",
209
209
  reducers: {
210
210
  collection_group_results: {
211
211
  type: "results",
212
- limit: l,
213
- loadContentCover: n
212
+ limit: s,
213
+ loadContentCover: c
214
214
  }
215
215
  },
216
216
  sort: []
217
217
  }, e == null ? void 0 : e.query2), {
218
218
  filter: {
219
- filters: m,
219
+ filters: B,
220
220
  operator: "and"
221
221
  },
222
- searchQuery: _,
223
- userTimeZone: a
222
+ searchQuery: d,
223
+ userTimeZone: l
224
224
  });
225
- if (u) {
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 = {
225
+ if (p) {
226
+ const U = ((h = e == null ? void 0 : e.format) == null ? void 0 : h.board_columns) || ((R = e == null ? void 0 : e.format) == null ? void 0 : R.collection_groups) || [], x = [u ? "board" : "group_aggregation", "results"], A = {
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
- }, Q = {};
234
+ }, J = {};
235
235
  for (const S of U) {
236
236
  const {
237
- property: X,
238
- value: { value: h, type: Y }
237
+ property: K,
238
+ value: { value: v, type: Q }
239
239
  } = S;
240
- for (const E of A) {
241
- const w = E === "results" ? {
242
- type: E,
243
- limit: l
240
+ for (const N of x) {
241
+ const X = N === "results" ? {
242
+ type: N,
243
+ limit: s
244
244
  } : {
245
245
  type: "aggregation",
246
246
  aggregation: {
247
247
  aggregator: "count"
248
248
  }
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), {
249
+ }, D = typeof v == "undefined", Y = v == null ? void 0 : v.range, j = D ? "uncategorized" : Y ? ((F = v.range) == null ? void 0 : F.start_date) || ((z = v.range) == null ? void 0 : z.end_date) : (v == null ? void 0 : v.value) || v, O = !D && (Y || (v == null ? void 0 : v.value) || v);
250
+ J[`${N}:${Q}:${j}`] = P(n({}, X), {
251
251
  filter: {
252
252
  operator: "and",
253
253
  filters: [
254
254
  {
255
- property: X,
256
- filter: o({
257
- operator: M ? "is_empty" : D[Y]
258
- }, !M && {
255
+ property: K,
256
+ filter: n({
257
+ operator: D ? "is_empty" : A[Q]
258
+ }, !D && {
259
259
  value: {
260
260
  type: "exact",
261
261
  value: O
@@ -267,94 +267,96 @@ class pe {
267
267
  });
268
268
  }
269
269
  }
270
- const K = i ? "board_columns" : `${v}_groups`;
271
- b = P(o({
270
+ const H = u ? "board_columns" : `${q}_groups`;
271
+ M = P(n({
272
272
  type: "reducer",
273
- reducers: o({
274
- [K]: P(o({
273
+ reducers: n({
274
+ [H]: P(n({
275
275
  type: "groups",
276
- groupBy: u
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
276
+ groupBy: p
277
+ }, ((W = e == null ? void 0 : e.query2) == null ? void 0 : W.filter) && {
278
+ filter: (L = e == null ? void 0 : e.query2) == null ? void 0 : L.filter
279
279
  }), {
280
280
  groupSortPreference: U.map((S) => S == null ? void 0 : S.value),
281
- limit: l
281
+ limit: s
282
282
  })
283
- }, Q)
283
+ }, J)
284
284
  }, e == null ? void 0 : e.query2), {
285
- searchQuery: _,
286
- userTimeZone: a,
287
- filter: { filters: m, operator: "and" }
285
+ searchQuery: d,
286
+ userTimeZone: l,
287
+ filter: { filters: B, operator: "and" }
288
288
  });
289
289
  }
290
- const g = yield this.fetch({
290
+ const b = yield this.fetch({
291
291
  endpoint: "queryCollection",
292
292
  body: {
293
- collection: { id: s },
294
- collectionView: { id: t },
295
- loader: b
293
+ collection: { id: t },
294
+ collectionView: { id: o },
295
+ loader: M
296
296
  },
297
- fetchOption: c
297
+ fetchOption: i
298
298
  });
299
- return g.recordMap && (N(g.recordMap.block), N(g.recordMap.collection), N(g.recordMap.collection_view), N(g.recordMap.notion_user)), g;
299
+ return b.recordMap && (a(b.recordMap.block), a(b.recordMap.collection), a(b.recordMap.collection_view), a(b.recordMap.notion_user)), b;
300
300
  });
301
301
  }
302
- getUsers(s, t) {
303
- return y(this, null, function* () {
302
+ getUsers(t, o) {
303
+ return k(this, null, function* () {
304
304
  return this.fetch({
305
305
  endpoint: "getRecordValues",
306
- body: { requests: s.map((e) => ({ id: e, table: "notion_user" })) },
307
- fetchOption: t
306
+ body: { requests: t.map((e) => ({ id: e, table: "notion_user" })) },
307
+ fetchOption: o
308
308
  });
309
309
  });
310
310
  }
311
- getSpaces(s, t) {
312
- return y(this, null, function* () {
311
+ getSpaces(t, o) {
312
+ return k(this, null, function* () {
313
313
  return this.fetch({
314
314
  endpoint: "getRecordValues",
315
- body: { requests: s.map((e) => ({ id: e, table: "space" })) },
316
- fetchOption: t
315
+ body: { requests: t.map((e) => ({ id: e, table: "space" })) },
316
+ fetchOption: o
317
317
  });
318
318
  });
319
319
  }
320
- getBlocks(s, t) {
321
- return y(this, null, function* () {
322
- return this.fetch({
320
+ getBlocks(t, o) {
321
+ return k(this, null, function* () {
322
+ const e = yield this.fetch({
323
323
  endpoint: "syncRecordValues",
324
- body: { requests: s.map((e) => ({ table: "block", id: e, version: -1 })) },
325
- fetchOption: t
324
+ body: { requests: t.map((s) => ({ table: "block", id: s, version: -1 })) },
325
+ fetchOption: o
326
326
  });
327
+ return e.recordMap && (a(e.recordMap.block), a(e.recordMap.collection), a(e.recordMap.collection_view), a(e.recordMap.notion_user)), e;
327
328
  });
328
329
  }
329
- syncRecords(s, t) {
330
- return y(this, null, function* () {
331
- return this.fetch({
330
+ syncRecords(t, o) {
331
+ return k(this, null, function* () {
332
+ const e = yield this.fetch({
332
333
  endpoint: "syncRecordValues",
333
- body: { requests: s.map(({ id: e, table: l }) => ({ table: l, id: e, version: -1 })) },
334
- fetchOption: t
334
+ body: { requests: t.map(({ id: s, table: d }) => ({ table: d, id: s, version: -1 })) },
335
+ fetchOption: o
335
336
  });
337
+ return e.recordMap && (a(e.recordMap.block), a(e.recordMap.collection), a(e.recordMap.collection_view), a(e.recordMap.notion_user)), e;
336
338
  });
337
339
  }
338
- getSignedFileUrls(s, t) {
339
- return y(this, null, function* () {
340
+ getSignedFileUrls(t, o) {
341
+ return k(this, null, function* () {
340
342
  return this.fetch({
341
343
  endpoint: "getSignedFileUrls",
342
- body: { urls: s },
343
- fetchOption: t
344
+ body: { urls: t },
345
+ fetchOption: o
344
346
  });
345
347
  });
346
348
  }
347
- search(s, t) {
348
- return y(this, null, function* () {
349
- var l;
349
+ search(t, o) {
350
+ return k(this, null, function* () {
351
+ var d, l, c, i, g;
350
352
  const e = {
351
353
  type: "BlocksInSpace",
352
354
  source: "quick_find_filters",
353
- spaceId: T(s.spaceId),
355
+ spaceId: w(t.spaceId),
354
356
  sort: { field: "relevance" },
355
- limit: s.limit || 20,
356
- query: s.query,
357
- filters: P(o({
357
+ limit: t.limit || 20,
358
+ query: t.query,
359
+ filters: P(n({
358
360
  isDeletedOnly: !1,
359
361
  navigableBlockContentOnly: !1,
360
362
  excludeTemplates: !0,
@@ -364,15 +366,15 @@ class pe {
364
366
  editedBy: [],
365
367
  lastEditedTime: {},
366
368
  createdTime: {}
367
- }, s.filters), {
368
- ancestors: (l = s.filters) != null && l.ancestors ? s.filters.ancestors.map((_) => T(_)) : []
369
+ }, t.filters), {
370
+ ancestors: (d = t.filters) != null && d.ancestors ? t.filters.ancestors.map((m) => w(m)) : []
369
371
  })
370
- };
371
- return this.fetch({
372
+ }, s = yield this.fetch({
372
373
  endpoint: "search",
373
374
  body: e,
374
- fetchOption: t
375
+ fetchOption: o
375
376
  });
377
+ return s.recordMap && (a(s.recordMap.block), a(s.recordMap.collection), a(s.recordMap.collection_view), a(s.recordMap.notion_user), s.recordMap.block = (l = s.recordMap.block) != null ? l : {}, s.recordMap.collection = (c = s.recordMap.collection) != null ? c : {}, s.recordMap.collection_view = (i = s.recordMap.collection_view) != null ? i : {}, s.recordMap.notion_user = (g = s.recordMap.notion_user) != null ? g : {}), s;
376
378
  });
377
379
  }
378
380
  /**
@@ -381,51 +383,51 @@ class pe {
381
383
  * @param fetchOption Fetch options
382
384
  * @returns backlink list with recordmap
383
385
  */
384
- getBacklinks(s, t) {
385
- return y(this, null, function* () {
386
+ getBacklinks(t, o) {
387
+ return k(this, null, function* () {
388
+ var d, l, c, i;
386
389
  const e = {
387
390
  block: {
388
- id: T(s.block.id),
389
- spaceId: T(s.block.spaceId)
391
+ id: w(t.block.id),
392
+ spaceId: w(t.block.spaceId)
390
393
  }
391
- };
392
- return this.fetch({
394
+ }, s = yield this.fetch({
393
395
  endpoint: "getBacklinksForBlockInitial",
394
396
  body: e,
395
- fetchOption: t
397
+ fetchOption: o
396
398
  });
399
+ return s.recordMap && (a(s.recordMap.block), a(s.recordMap.collection), a(s.recordMap.collection_view), a(s.recordMap.notion_user), s.recordMap.block = (d = s.recordMap.block) != null ? d : {}, s.recordMap.collection = (l = s.recordMap.collection) != null ? l : {}, s.recordMap.collection_view = (c = s.recordMap.collection_view) != null ? c : {}, s.recordMap.notion_user = (i = s.recordMap.notion_user) != null ? i : {}), s;
397
400
  });
398
401
  }
399
- fetch(_) {
400
- return y(this, arguments, function* ({
401
- endpoint: s,
402
- body: t,
402
+ fetch(d) {
403
+ return k(this, arguments, function* ({
404
+ endpoint: t,
405
+ body: o,
403
406
  fetchOption: e,
404
- headers: l
407
+ headers: s
405
408
  }) {
406
- const a = P(o(o({}, l), e == null ? void 0 : e.headers), {
409
+ const l = P(n(n({}, s), e == null ? void 0 : e.headers), {
407
410
  "Content-Type": "application/json"
408
411
  });
409
- this._authToken && (a.cookie = `token_v2=${this._authToken}`), this._activeUser && (a["x-notion-active-user-header"] = this._activeUser);
410
- const n = `${this._apiBaseUrl}/${s}`, c = o({
412
+ this._authToken && (l.cookie = `token_v2=${this._authToken}`), this._activeUser && (l["x-notion-active-user-header"] = this._activeUser);
413
+ const c = `${this._apiBaseUrl}/${t}`, i = n({
411
414
  method: "post",
412
- body: JSON.stringify(t),
413
- headers: a
415
+ body: JSON.stringify(o),
416
+ headers: l
414
417
  }, e);
415
418
  if ((e == null ? void 0 : e.timeout) !== void 0) {
416
- const k = new AbortController();
417
- setTimeout(() => k.abort(), e.timeout), c.signal = k.signal;
419
+ const g = new AbortController();
420
+ setTimeout(() => g.abort(), e.timeout), i.signal = g.signal;
418
421
  }
419
- return fetch(n, c).then((k) => k.json());
422
+ return fetch(c, i).then((g) => g.json());
420
423
  });
421
424
  }
422
425
  }
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);
426
+ function a(y) {
427
+ if (y)
428
+ for (const t of Object.keys(y)) {
429
+ const o = y[t];
430
+ o != null && o.spaceId && o.value && (y[t] = o.value);
429
431
  }
430
432
  }
431
433
  export {
@@ -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 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
+ {"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 // Normalize nested API format from loadPageChunk\n normalizeMap(recordMap.block)\n normalizeMap(recordMap.collection)\n normalizeMap(recordMap.collection_view)\n normalizeMap(recordMap.notion_user)\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 // Normalize after merging syncRecordValues/getRecordValues data\n normalizeMap(recordMap.block)\n normalizeMap(recordMap.collection)\n normalizeMap(recordMap.notion_user)\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 normalizeMap(viewBlockData.recordMap.block)\n normalizeMap(viewBlockData.recordMap.collection)\n normalizeMap(viewBlockData.recordMap.collection_view)\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 const response = await this.fetch<PageChunk>({\n endpoint: 'syncRecordValues',\n body: { requests: blockIds.map(blockId => ({ table: 'block', id: blockId, version: -1 })) },\n fetchOption\n })\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 return response\n }\n\n public async syncRecords(records: { id: string; table: string }[], fetchOption?: FetchOption) {\n const response = await this.fetch<PageChunk>({\n endpoint: 'syncRecordValues',\n body: { requests: records.map(({ id, table }) => ({ table, id, version: -1 })) },\n fetchOption\n })\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 return response\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 const response = await this.fetch<SearchResults>({\n endpoint: 'search',\n body,\n fetchOption\n })\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 // Ensure consistent shape — Notion API may omit these keys\n response.recordMap.block = response.recordMap.block ?? {}\n response.recordMap.collection = response.recordMap.collection ?? {}\n response.recordMap.collection_view = response.recordMap.collection_view ?? {}\n response.recordMap.notion_user = response.recordMap.notion_user ?? {}\n }\n return response\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 const response = await this.fetch<BacklinkResults>({\n endpoint: 'getBacklinksForBlockInitial',\n body,\n fetchOption\n })\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 response.recordMap.block = response.recordMap.block ?? {}\n response.recordMap.collection = response.recordMap.collection ?? {}\n response.recordMap.collection_view = response.recordMap.collection_view ?? {}\n response.recordMap.notion_user = response.recordMap.notion_user ?? {}\n }\n return response\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 // Notion API now wraps entries as {spaceId, value: {value?, role}} — unwrap\n if (entry?.spaceId && entry.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","normalizeMap","_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","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":"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"}
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.7",
3
+ "version": "1.5.9",
4
4
  "type": "module",
5
5
  "description": "Robust TypeScript client for the unofficial Notion API.",
6
6
  "repository": "texonom/notion-node",
@@ -14,12 +14,12 @@
14
14
  "build"
15
15
  ],
16
16
  "engines": {
17
- "node": ">=22.22.0"
17
+ "node": ">=22.22.2"
18
18
  },
19
19
  "dependencies": {
20
20
  "p-map": "^5.5.0",
21
- "@texonom/ntypes": "^1.5.7",
22
- "@texonom/nutils": "^1.5.7"
21
+ "@texonom/ntypes": "^1.5.9",
22
+ "@texonom/nutils": "^1.5.9"
23
23
  },
24
24
  "standard-version": {
25
25
  "skip": {