@texonom/nclient 1.5.9 → 1.5.10

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
@@ -2,29 +2,29 @@ var V = Object.defineProperty, ee = Object.defineProperties;
2
2
  var oe = Object.getOwnPropertyDescriptors;
3
3
  var Z = Object.getOwnPropertySymbols;
4
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) => {
5
+ var G = (_, t, o) => t in _ ? V(_, t, { enumerable: !0, configurable: !0, writable: !0, value: o }) : _[t] = o, n = (_, t) => {
6
6
  for (var o in t || (t = {}))
7
- te.call(t, o) && G(y, o, t[o]);
7
+ te.call(t, o) && G(_, o, t[o]);
8
8
  if (Z)
9
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) => {
10
+ re.call(t, o) && G(_, o, t[o]);
11
+ return _;
12
+ }, P = (_, t) => ee(_, oe(t));
13
+ var k = (_, t, o) => new Promise((e, s) => {
14
14
  var d = (i) => {
15
15
  try {
16
16
  c(o.next(i));
17
- } catch (g) {
18
- s(g);
17
+ } catch (y) {
18
+ s(y);
19
19
  }
20
20
  }, l = (i) => {
21
21
  try {
22
22
  c(o.throw(i));
23
- } catch (g) {
24
- s(g);
23
+ } catch (y) {
24
+ s(y);
25
25
  }
26
26
  }, c = (i) => i.done ? e(i.value) : Promise.resolve(i.value).then(d, l);
27
- c((o = o.apply(y, t)).next());
27
+ c((o = o.apply(_, t)).next());
28
28
  });
29
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";
@@ -37,7 +37,7 @@ class pe {
37
37
  } = {}) {
38
38
  this._apiBaseUrl = t, this._authToken = o, this._activeUser = e, this._userTimeZone = s;
39
39
  }
40
- getPage(g) {
40
+ getPage(y) {
41
41
  return k(this, arguments, function* (t, {
42
42
  concurrency: o = 3,
43
43
  fetchFullInfo: e = !0,
@@ -62,8 +62,8 @@ class pe {
62
62
  }));
63
63
  const I = E(r).filter((h) => !r.block[h]);
64
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) => {
65
+ const C = Object.values(r.block)[0].value, g = C.parent_table === "space" ? [C.parent_id] : [];
66
+ M.push(this.getSpaces(g, i).then((h) => {
67
67
  var R;
68
68
  return (R = h.recordMapWithRoles) == null ? void 0 : R.space;
69
69
  }));
@@ -74,7 +74,7 @@ class pe {
74
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(c, i, g) {
77
+ fetchCollections(c, i, y) {
78
78
  return k(this, arguments, function* (t, o, e, {
79
79
  concurrency: s,
80
80
  fetchOption: d,
@@ -107,19 +107,19 @@ class pe {
107
107
  var b, I, C;
108
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 _ = yield this.getCollectionData(u, p, M, {
110
+ const g = yield this.getCollectionData(u, p, M, {
111
111
  fetchOption: d
112
112
  });
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
113
+ if (g.recordMap && (o.block = n(n({}, o.block), g.recordMap.block), o.collection = n(n({}, o.collection), g.recordMap.collection), o.collection_view = n(n({}, o.collection_view), g.recordMap.collection_view), o.notion_user = n(n({}, o.notion_user), g.recordMap.notion_user), o.collection_query[u] = P(n({}, o.collection_query[u]), {
114
+ [p]: (I = g.result) == null ? void 0 : I.reducerResults
115
+ }), r.block = n(n({}, r.block), g.recordMap.block), r.collection = n(n({}, r.collection), g.recordMap.collection), r.collection_view = n(n({}, r.collection_view), g.recordMap.collection_view), r.notion_user = n(n({}, r.notion_user), g.recordMap.notion_user), r.collection_query[u] = P(n({}, r.collection_query[u]), {
116
+ [p]: (C = g.result) == null ? void 0 : C.reducerResults
117
117
  })), !M) {
118
118
  const f = yield this.getPageRaw(B, { fetchOption: d });
119
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 (_) {
122
- console.debug("NotionAPI collectionQuery error in page id ", e), console.error(_);
121
+ } catch (g) {
122
+ console.debug("NotionAPI collectionQuery error in page id ", e), console.error(g);
123
123
  }
124
124
  }),
125
125
  {
@@ -136,9 +136,9 @@ class pe {
136
136
  }) {
137
137
  t.signed_urls = {}, o || (o = E(t));
138
138
  const d = o.flatMap((l) => {
139
- var i, g, m, r, q, u;
139
+ var i, y, m, r, q, u;
140
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")) {
141
+ if (c && (c.type === "pdf" || c.type === "audio" || c.type === "image" && ((y = c.file_ids) != null && y.length) || c.type === "video" || c.type === "file" || c.type === "page")) {
142
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
143
  if (p)
144
144
  return !p.includes("secure.notion-static.com") && !p.includes("prod-files-secure") ? [] : {
@@ -156,8 +156,8 @@ class pe {
156
156
  const { signedUrls: l } = yield this.getSignedFileUrls(d, e);
157
157
  if (l.length === d.length)
158
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;
159
+ const i = d[c], y = l[c];
160
+ t.signed_urls[i.permissionRecord.id] = y;
161
161
  }
162
162
  } catch (l) {
163
163
  console.warn("NotionAPI getSignedfileUrls error", l);
@@ -186,7 +186,7 @@ class pe {
186
186
  });
187
187
  });
188
188
  }
189
- getCollectionData(g, m, r) {
189
+ getCollectionData(y, m, r) {
190
190
  return k(this, arguments, function* (t, o, e, {
191
191
  limit: s = 9999,
192
192
  searchQuery: d = "",
@@ -194,10 +194,10 @@ class pe {
194
194
  loadContentCover: c = !0,
195
195
  fetchOption: i
196
196
  } = {}) {
197
- var I, C, _, f, T, $, h, R, F, z, W, L;
197
+ var I, C, g, f, T, $, h, R, F, z, W, L;
198
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
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) => {
200
+ (g = e == null ? void 0 : e.format) != null && g.property_filters && (B = (f = e.format) == null ? void 0 : f.property_filters.map((U) => {
201
201
  var x, A;
202
202
  return {
203
203
  filter: (x = U == null ? void 0 : U.filter) == null ? void 0 : x.filter,
@@ -348,7 +348,7 @@ class pe {
348
348
  }
349
349
  search(t, o) {
350
350
  return k(this, null, function* () {
351
- var d, l, c, i, g;
351
+ var d, l, c, i, y;
352
352
  const e = {
353
353
  type: "BlocksInSpace",
354
354
  source: "quick_find_filters",
@@ -374,7 +374,7 @@ class pe {
374
374
  body: e,
375
375
  fetchOption: o
376
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;
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 = (y = s.recordMap.notion_user) != null ? y : {}), s;
378
378
  });
379
379
  }
380
380
  /**
@@ -416,18 +416,19 @@ class pe {
416
416
  headers: l
417
417
  }, e);
418
418
  if ((e == null ? void 0 : e.timeout) !== void 0) {
419
- const g = new AbortController();
420
- setTimeout(() => g.abort(), e.timeout), i.signal = g.signal;
419
+ const y = new AbortController();
420
+ setTimeout(() => y.abort(), e.timeout), i.signal = y.signal;
421
421
  }
422
- return fetch(c, i).then((g) => g.json());
422
+ return fetch(c, i).then((y) => y.json());
423
423
  });
424
424
  }
425
425
  }
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);
426
+ function a(_) {
427
+ var t;
428
+ if (_)
429
+ for (const o of Object.keys(_)) {
430
+ const e = _[o];
431
+ (e != null && e.spaceId && e.value || (t = e == null ? void 0 : e.value) != null && t.value && !e.role && !e.type) && (_[o] = e.value);
431
432
  }
432
433
  }
433
434
  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 // 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
+ {"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 wraps entries in two formats:\n // 1. {spaceId, value: {value?, role}} — unwrap to {value?, role}\n // 2. {value: {value: {...}}} — no spaceId, no role — unwrap to {value: {...}}\n if (entry?.spaceId && entry.value) map[id] = entry.value\n else if (entry?.value?.value && !entry.role && !entry.type) 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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@texonom/nclient",
3
- "version": "1.5.9",
3
+ "version": "1.5.10",
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.9",
22
- "@texonom/nutils": "^1.5.9"
21
+ "@texonom/nutils": "^1.5.10",
22
+ "@texonom/ntypes": "^1.5.10"
23
23
  },
24
24
  "standard-version": {
25
25
  "skip": {