@notionhq/custom-blocks 0.1.43 → 0.1.44

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.
Files changed (39) hide show
  1. package/README.md +2 -2
  2. package/dist/bridge/SandboxBridge.d.ts +9 -2
  3. package/dist/bridge/SandboxBridge.d.ts.map +1 -1
  4. package/dist/bridge/SandboxBridge.js +23 -8
  5. package/dist/bridge/dataSources/subscribe.d.ts +3 -0
  6. package/dist/bridge/dataSources/subscribe.d.ts.map +1 -0
  7. package/dist/bridge/dataSources/subscribe.js +63 -0
  8. package/dist/bridge/notifyListener.d.ts +3 -0
  9. package/dist/bridge/notifyListener.d.ts.map +1 -0
  10. package/dist/bridge/notifyListener.js +16 -0
  11. package/dist/bridge/sandboxClient.d.ts +3 -3
  12. package/dist/bridge/sandboxClient.d.ts.map +1 -1
  13. package/dist/bridge/sandboxClient.js +3 -3
  14. package/dist/customBlock.d.ts +6 -0
  15. package/dist/customBlock.d.ts.map +1 -1
  16. package/dist/customBlock.js +6 -0
  17. package/dist/protocol/index.d.ts +1 -0
  18. package/dist/protocol/index.js +1 -0
  19. package/dist/protocol/messages/sandboxToHost.d.ts +3 -0
  20. package/dist/protocol/messages/sandboxToHost.js +2 -0
  21. package/dist/protocol/messages/unsubscribeDataSourceQuery.d.ts +10 -0
  22. package/dist/protocol/messages/unsubscribeDataSourceQuery.js +9 -0
  23. package/dist/react/useDataSource.d.ts.map +1 -1
  24. package/dist/react/useDataSource.js +26 -29
  25. package/dist/types.d.ts +15 -15
  26. package/dist/types.d.ts.map +1 -1
  27. package/dist/version.js +1 -1
  28. package/docs/data-sources.md +212 -72
  29. package/docs/lifecycle.md +1 -11
  30. package/docs/pages.md +0 -2
  31. package/docs/users.md +0 -1
  32. package/package.json +1 -1
  33. package/src/bridge/SandboxBridge.ts +41 -13
  34. package/src/bridge/dataSources/subscribe.ts +97 -0
  35. package/src/bridge/notifyListener.ts +14 -0
  36. package/src/bridge/sandboxClient.ts +7 -8
  37. package/src/customBlock.ts +7 -0
  38. package/src/react/useDataSource.ts +32 -39
  39. package/src/types.ts +18 -15
package/README.md CHANGED
@@ -124,9 +124,9 @@ Each page covers one API category. Import framework-neutral APIs from
124
124
  `@notionhq/custom-blocks`. Import React hooks and components from
125
125
  `@notionhq/custom-blocks/react`.
126
126
 
127
- - [`docs/lifecycle.md`](./docs/lifecycle.md) — `<NotionCustomBlock>`, `useCustomBlockInit`, `initCustomBlock`, `NotInIframeError`, `useCustomBlockAutoResize`. The handshake, the React wrapper, sizing.
127
+ - [`docs/lifecycle.md`](./docs/lifecycle.md) — `<NotionCustomBlock>`, `useCustomBlockInit`, `initCustomBlock`, `NotInIframeError`. The handshake, the React wrapper, sizing.
128
128
  - [`docs/block-location.md`](./docs/block-location.md) — `useBlockId`, `useParent`, `usePage`, `useTheme`, `useContrastMode`, `NotionTokenScope`, and `NotionTokenScopeProps`. Where the block sits and how to read the host's appearance.
129
- - [`docs/data-sources.md`](./docs/data-sources.md) — `useDataSource`, `useManifest`, `customBlock.getManifest`, the row, property, and date-value types, plus a worked example.
129
+ - [`docs/data-sources.md`](./docs/data-sources.md) — `customBlock.subscribeToDataSource`, `useDataSource`, `useManifest`, `customBlock.getManifest`, the row, property, and date-value types, plus a worked example.
130
130
  - [`docs/pages.md`](./docs/pages.md) — `pages.create / get / update / archive / unarchive`, parent variants (including the recommended `data_source_key`), property input shapes.
131
131
  - [`docs/users.md`](./docs/users.md) — `users.list / get`, the `NotionUser` shape, paging.
132
132
  - [`docs/errors.md`](./docs/errors.md) — request results, error format, error codes, retries, and initialization failures.
@@ -1,7 +1,7 @@
1
1
  import type { NotionDataSource } from "../protocol/dataSources/dataSource.js";
2
2
  import type { NotionPageId } from "../protocol/ids.js";
3
3
  import { type InitMessage } from "../protocol/messages/init.js";
4
- import type { CreatePageArgs, CreatePageResult, GetPageResult, GetUserResult, ListUsersArgs, ListUsersResult, NotionDataSourcePageUpdateArgs, NotionUserId, UpdatePageArgs, UpdatePageResult, UseDataSourceOptions } from "../types.js";
4
+ import type { CreatePageArgs, CreatePageResult, DataSourceQueryOptions, GetPageResult, GetUserResult, ListUsersArgs, ListUsersResult, NotionDataSourcePageUpdateArgs, NotionUserId, UpdatePageArgs, UpdatePageResult } from "../types.js";
5
5
  import { type CustomBlockHostState } from "./hostState.js";
6
6
  import type { ManifestLoadResult } from "./loadManifest.js";
7
7
  /**
@@ -13,6 +13,13 @@ export type MessageLogEntry = {
13
13
  direction: "sent" | "received";
14
14
  data: unknown;
15
15
  };
16
+ export type QueryDataSourceArgs = {
17
+ subscriptionId: string;
18
+ key: string;
19
+ options?: DataSourceQueryOptions;
20
+ /** Send the query even if an identical query is already loading. */
21
+ forceRequery?: boolean;
22
+ };
16
23
  export declare class SandboxBridge {
17
24
  private hostState;
18
25
  private listeners;
@@ -67,7 +74,7 @@ export declare class SandboxBridge {
67
74
  */
68
75
  private scheduleInitResult;
69
76
  createDataSourceSubscriptionId(): string;
70
- queryDataSource(subscriptionId: string, key: string, options?: UseDataSourceOptions): void;
77
+ queryDataSource({ subscriptionId, key, options, forceRequery, }: QueryDataSourceArgs): void;
71
78
  private setDataSourceQueryError;
72
79
  releaseDataSourceSubscription(subscriptionId: string): void;
73
80
  postResize(height: number): void;
@@ -1 +1 @@
1
- {"version":3,"file":"SandboxBridge.d.ts","sourceRoot":"","sources":["../../src/bridge/SandboxBridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SandboxBridge.d.ts","sourceRoot":"","sources":["../../src/bridge/SandboxBridge.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ import { resolveDataSourceQuery } from "./dataSources/query.js";
12
12
  import { resolveDataSources } from "./dataSources/resolve.js";
13
13
  import { resolvePropertyWriteMapForDataSource } from "./dataSources/resolveProperty.js";
14
14
  import { createEmptyDataSourceQueryState, } from "./hostState.js";
15
+ import { notifyListener } from "./notifyListener.js";
15
16
  import { PendingRequests } from "./pendingRequests.js";
16
17
  const RESPONSE_TYPE_BY_REQUEST = new Map([
17
18
  ["getPage", "getPageResult"],
@@ -181,7 +182,7 @@ export class SandboxBridge {
181
182
  }
182
183
  notify = () => {
183
184
  for (const listener of this.listeners) {
184
- listener();
185
+ notifyListener(listener);
185
186
  }
186
187
  };
187
188
  handleMessage = (event) => {
@@ -312,13 +313,21 @@ export class SandboxBridge {
312
313
  nextBindings,
313
314
  });
314
315
  this.latestDataSourceBindings = nextBindings;
315
- // Drop cached query state for subscriptions whose key no longer exists.
316
- const nextKeys = new Set(dataSources.map(s => s.key));
316
+ // Preserve rows only while the key still refers to the same backing data source.
317
+ const previousSourcesByKey = new Map(hostState.dataSources.map(source => [source.key, source]));
318
+ const nextSourcesByKey = new Map(dataSources.map(source => [source.key, source]));
317
319
  const prunedState = {};
318
320
  for (const [subscriptionId, state] of Object.entries(hostState.dataSourceState)) {
319
- if (nextKeys.has(state.dataSourceKey)) {
320
- prunedState[subscriptionId] = state;
321
+ const nextSource = nextSourcesByKey.get(state.dataSourceKey);
322
+ if (nextSource === undefined) {
323
+ continue;
321
324
  }
325
+ const previousSource = previousSourcesByKey.get(state.dataSourceKey);
326
+ prunedState[subscriptionId] =
327
+ previousSource?.collectionPointer?.id ===
328
+ nextSource.collectionPointer?.id
329
+ ? state
330
+ : createEmptyDataSourceQueryState(state.dataSourceKey);
322
331
  }
323
332
  this.hostState = {
324
333
  ...hostState,
@@ -552,7 +561,7 @@ export class SandboxBridge {
552
561
  createDataSourceSubscriptionId() {
553
562
  return `data-source:${globalThis.crypto.randomUUID()}`;
554
563
  }
555
- queryDataSource(subscriptionId, key, options = {}) {
564
+ queryDataSource({ subscriptionId, key, options = {}, forceRequery = false, }) {
556
565
  if (this.hostState.status !== "initialized") {
557
566
  return;
558
567
  }
@@ -591,7 +600,8 @@ export class SandboxBridge {
591
600
  return;
592
601
  }
593
602
  const query = resolvedQuery.query;
594
- if (currentState.isLoading &&
603
+ if (!forceRequery &&
604
+ currentState.isLoading &&
595
605
  currentState.latestQueryIdentity === query.identity) {
596
606
  return;
597
607
  }
@@ -609,7 +619,6 @@ export class SandboxBridge {
609
619
  },
610
620
  },
611
621
  };
612
- this.notify();
613
622
  const outbound = {
614
623
  type: "queryDataSource",
615
624
  subscriptionId,
@@ -619,6 +628,7 @@ export class SandboxBridge {
619
628
  ...(query.sorts !== undefined ? { sorts: query.sorts } : {}),
620
629
  };
621
630
  this.postToHost(outbound);
631
+ this.notify();
622
632
  }
623
633
  setDataSourceQueryError(subscriptionId, currentState, error) {
624
634
  if (this.hostState.status !== "initialized") {
@@ -649,6 +659,11 @@ export class SandboxBridge {
649
659
  ...this.hostState,
650
660
  dataSourceState,
651
661
  };
662
+ const outbound = {
663
+ type: "unsubscribeDataSourceQuery",
664
+ subscriptionId,
665
+ };
666
+ this.postToHost(outbound);
652
667
  }
653
668
  postResize(height) {
654
669
  if (typeof window === "undefined") {
@@ -0,0 +1,3 @@
1
+ import type { SubscribeToDataSourceArgs } from "../../types.js";
2
+ export declare function subscribeToDataSource({ key, onSnapshot, options: providedOptions, }: SubscribeToDataSourceArgs): () => void;
3
+ //# sourceMappingURL=subscribe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscribe.d.ts","sourceRoot":"","sources":["../../../src/bridge/dataSources/subscribe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAA;AAQ/D,wBAAgB,qBAAqB,CAAC,EACrC,GAAG,EACH,UAAU,EACV,OAAO,EAAE,eAAoB,GAC7B,EAAE,yBAAyB,GAAG,MAAM,IAAI,CAoFxC"}
@@ -0,0 +1,63 @@
1
+ import { notifyListener } from "../notifyListener.js";
2
+ import { customBlockDataSources, customBlockHost } from "../sandboxClient.js";
3
+ export function subscribeToDataSource({ key, onSnapshot, options: providedOptions = {}, }) {
4
+ const options = structuredClone(providedOptions);
5
+ const subscriptionId = customBlockDataSources.createSubscriptionId();
6
+ let active = true;
7
+ let lastSnapshotInputs;
8
+ let lastMatchingSignature;
9
+ const deliverSnapshotIfChanged = (hostState, dataSource, queryState) => {
10
+ if (lastSnapshotInputs !== undefined &&
11
+ lastSnapshotInputs.status === hostState.status &&
12
+ lastSnapshotInputs.dataSource === dataSource &&
13
+ lastSnapshotInputs.queryState === queryState) {
14
+ return;
15
+ }
16
+ const snapshot = customBlockDataSources.getView(hostState, key, subscriptionId);
17
+ // Record inputs before calling consumer code, which can trigger another notification.
18
+ lastSnapshotInputs = { status: hostState.status, dataSource, queryState };
19
+ notifyListener(() => onSnapshot(snapshot));
20
+ };
21
+ const handleHostChange = () => {
22
+ if (!active) {
23
+ return;
24
+ }
25
+ const hostState = customBlockHost.getState();
26
+ if (hostState.status !== "initialized") {
27
+ deliverSnapshotIfChanged(hostState, undefined, undefined);
28
+ return;
29
+ }
30
+ const dataSource = hostState.dataSources.find(source => source.key === key);
31
+ const signature = dataSource === undefined ? null : JSON.stringify(dataSource);
32
+ if (signature !== lastMatchingSignature) {
33
+ const forceRequery = lastMatchingSignature !== undefined;
34
+ lastMatchingSignature = signature;
35
+ // Querying updates SDK state and calls this listener again.
36
+ customBlockDataSources.query({
37
+ subscriptionId,
38
+ key,
39
+ options,
40
+ forceRequery,
41
+ });
42
+ return;
43
+ }
44
+ deliverSnapshotIfChanged(hostState, dataSource, hostState.dataSourceState[subscriptionId]);
45
+ };
46
+ const unsubscribeHost = customBlockHost.subscribe(handleHostChange);
47
+ try {
48
+ handleHostChange();
49
+ }
50
+ catch (error) {
51
+ unsubscribeHost();
52
+ customBlockDataSources.release(subscriptionId);
53
+ throw error;
54
+ }
55
+ return () => {
56
+ if (!active) {
57
+ return;
58
+ }
59
+ active = false;
60
+ unsubscribeHost();
61
+ customBlockDataSources.release(subscriptionId);
62
+ };
63
+ }
@@ -0,0 +1,3 @@
1
+ /** Report consumer errors without interrupting bridge operations or other listeners. */
2
+ export declare function notifyListener(listener: () => void): void;
3
+ //# sourceMappingURL=notifyListener.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notifyListener.d.ts","sourceRoot":"","sources":["../../src/bridge/notifyListener.ts"],"names":[],"mappings":"AAAA,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAYzD"}
@@ -0,0 +1,16 @@
1
+ /** Report consumer errors without interrupting bridge operations or other listeners. */
2
+ export function notifyListener(listener) {
3
+ try {
4
+ listener();
5
+ }
6
+ catch (error) {
7
+ if (typeof globalThis.reportError === "function") {
8
+ globalThis.reportError(error);
9
+ }
10
+ else {
11
+ setTimeout(() => {
12
+ throw error;
13
+ }, 0);
14
+ }
15
+ }
16
+ }
@@ -1,9 +1,9 @@
1
1
  import type { NotionPageId } from "../protocol/ids.js";
2
2
  import type { InitMessage } from "../protocol/messages/init.js";
3
- import type { CreatePageArgs, CreatePageResult, GetPageResult, GetUserResult, ListUsersArgs, ListUsersResult, NotionUserId, UpdatePageArgs, UpdatePageResult, UseDataSourceOptions } from "../types.js";
3
+ import type { CreatePageArgs, CreatePageResult, GetPageResult, GetUserResult, ListUsersArgs, ListUsersResult, NotionUserId, UpdatePageArgs, UpdatePageResult } from "../types.js";
4
4
  import { type CustomBlockHostState, type DataSourceQueryView } from "./hostState.js";
5
5
  import type { ManifestLoadResult } from "./loadManifest.js";
6
- import { type MessageLogEntry } from "./SandboxBridge.js";
6
+ import { type MessageLogEntry, type QueryDataSourceArgs } from "./SandboxBridge.js";
7
7
  export declare const customBlockHost: {
8
8
  start: () => void;
9
9
  sendConnect: (manifestResult: ManifestLoadResult) => void;
@@ -20,7 +20,7 @@ export declare const customBlockHost: {
20
20
  };
21
21
  export declare const customBlockDataSources: {
22
22
  createSubscriptionId: () => string;
23
- query: (subscriptionId: string, key: string, options?: UseDataSourceOptions) => void;
23
+ query: (args: QueryDataSourceArgs) => void;
24
24
  release: (subscriptionId: string) => void;
25
25
  getView: (hostState: CustomBlockHostState, key: string, subscriptionId: string) => DataSourceQueryView;
26
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"sandboxClient.d.ts","sourceRoot":"","sources":["../../src/bridge/sandboxClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAA;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mDAAmD,CAAA;AACpF,OAAO,KAAK,EACX,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,EACf,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,MAAM,aAAa,CAAA;AACpB,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EAExB,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,oBAAoB,CAAA;AAYxE,eAAO,MAAM,eAAe;IAC3B,KAAK;IAIL,WAAW,mBAAmB,kBAAkB;IAIhD,SAAS,YAAY,WAAW,KAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,SAAS,aAAa,MAAM,IAAI;IAIhC,QAAQ,QAAM,oBAAoB;IAIlC;;;OAGG;IACH,YAAY,YAAY,WAAW;IAInC,sBAAsB;IAItB,UAAU,WAAW,MAAM;CAG3B,CAAA;AAED,eAAO,MAAM,sBAAsB;IAClC,oBAAoB;IAIpB,KAAK,mBACY,MAAM,OACjB,MAAM,YACD,oBAAoB;IAK/B,OAAO,mBAAmB,MAAM;IAIhC,OAAO,cACK,oBAAoB,OAC1B,MAAM,kBACK,MAAM,KACpB,mBAAmB;CAQtB,CAAA;AAED,eAAO,MAAM,UAAU;IACtB,WAAW,QAAM,SAAS,eAAe,EAAE;IAI3C,SAAS,aAAa,MAAM,IAAI;CAGhC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,KAAK;IACjB;;OAEG;IACH,MAAM,UAAU,cAAc,KAAG,OAAO,CAAC,gBAAgB,CAAC;IAI1D;;OAEG;IACH,GAAG,WAAW,YAAY,KAAG,OAAO,CAAC,aAAa,CAAC;IAInD;;OAEG;IACH,MAAM,UAAU,cAAc,KAAG,OAAO,CAAC,gBAAgB,CAAC;IAI1D;;OAEG;IACH,OAAO,WAAW,YAAY,KAAG,OAAO,CAAC,gBAAgB,CAAC;IAI1D;;OAEG;IACH,SAAS,WAAW,YAAY,KAAG,OAAO,CAAC,gBAAgB,CAAC;IAI5D;;;OAGG;IACH,MAAM,WAAW,YAAY,KAAG,OAAO,CAAC,gBAAgB,CAAC;CASzD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,KAAK;IACjB;;OAEG;IACH,IAAI,WAAW,aAAa,KAAG,OAAO,CAAC,eAAe,CAAC;IAIvD;;OAEG;IACH,GAAG,WAAW,YAAY,KAAG,OAAO,CAAC,aAAa,CAAC;CAGnD,CAAA"}
1
+ {"version":3,"file":"sandboxClient.d.ts","sourceRoot":"","sources":["../../src/bridge/sandboxClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAA;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mDAAmD,CAAA;AACpF,OAAO,KAAK,EACX,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,aAAa,EACb,eAAe,EACf,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,MAAM,aAAa,CAAA;AACpB,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EAExB,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EACN,KAAK,eAAe,EACpB,KAAK,mBAAmB,EAExB,MAAM,oBAAoB,CAAA;AAY3B,eAAO,MAAM,eAAe;IAC3B,KAAK;IAIL,WAAW,mBAAmB,kBAAkB;IAIhD,SAAS,YAAY,WAAW,KAAG,OAAO,CAAC,IAAI,CAAC;IAIhD,SAAS,aAAa,MAAM,IAAI;IAIhC,QAAQ,QAAM,oBAAoB;IAIlC;;;OAGG;IACH,YAAY,YAAY,WAAW;IAInC,sBAAsB;IAItB,UAAU,WAAW,MAAM;CAG3B,CAAA;AAED,eAAO,MAAM,sBAAsB;IAClC,oBAAoB;IAIpB,KAAK,SAAS,mBAAmB;IAIjC,OAAO,mBAAmB,MAAM;IAIhC,OAAO,cACK,oBAAoB,OAC1B,MAAM,kBACK,MAAM,KACpB,mBAAmB;CAQtB,CAAA;AAED,eAAO,MAAM,UAAU;IACtB,WAAW,QAAM,SAAS,eAAe,EAAE;IAI3C,SAAS,aAAa,MAAM,IAAI;CAGhC,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,KAAK;IACjB;;OAEG;IACH,MAAM,UAAU,cAAc,KAAG,OAAO,CAAC,gBAAgB,CAAC;IAI1D;;OAEG;IACH,GAAG,WAAW,YAAY,KAAG,OAAO,CAAC,aAAa,CAAC;IAInD;;OAEG;IACH,MAAM,UAAU,cAAc,KAAG,OAAO,CAAC,gBAAgB,CAAC;IAI1D;;OAEG;IACH,OAAO,WAAW,YAAY,KAAG,OAAO,CAAC,gBAAgB,CAAC;IAI1D;;OAEG;IACH,SAAS,WAAW,YAAY,KAAG,OAAO,CAAC,gBAAgB,CAAC;IAI5D;;;OAGG;IACH,MAAM,WAAW,YAAY,KAAG,OAAO,CAAC,gBAAgB,CAAC;CASzD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,KAAK;IACjB;;OAEG;IACH,IAAI,WAAW,aAAa,KAAG,OAAO,CAAC,eAAe,CAAC;IAIvD;;OAEG;IACH,GAAG,WAAW,YAAY,KAAG,OAAO,CAAC,aAAa,CAAC;CAGnD,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { getDataSourceQueryView as getDataSourceQueryViewWithBridge, } from "./hostState.js";
2
- import { SandboxBridge } from "./SandboxBridge.js";
2
+ import { SandboxBridge, } from "./SandboxBridge.js";
3
3
  let bridge;
4
4
  let didWarnAboutPagesDelete = false;
5
5
  function getBridge() {
@@ -42,8 +42,8 @@ export const customBlockDataSources = {
42
42
  createSubscriptionId: () => {
43
43
  return getBridge().createDataSourceSubscriptionId();
44
44
  },
45
- query: (subscriptionId, key, options) => {
46
- getBridge().queryDataSource(subscriptionId, key, options);
45
+ query: (args) => {
46
+ getBridge().queryDataSource(args);
47
47
  },
48
48
  release: (subscriptionId) => {
49
49
  getBridge().releaseDataSourceSubscription(subscriptionId);
@@ -7,6 +7,7 @@ import type { NotionParent } from "./protocol/parent.js";
7
7
  import type { NotionTheme } from "./protocol/theme.js";
8
8
  import type { NotionUser } from "./protocol/users/user.js";
9
9
  import { autoResize } from "./autoResize.js";
10
+ import { subscribeToDataSource } from "./bridge/dataSources/subscribe.js";
10
11
  export type CustomBlockState = {
11
12
  status: "uninitialized";
12
13
  theme: NotionTheme;
@@ -36,5 +37,10 @@ export declare const customBlock: {
36
37
  getPage(): CustomBlockPage;
37
38
  getManifest(): CustomBlockManifest;
38
39
  autoResize: typeof autoResize;
40
+ /**
41
+ * Registers a listener that receives the current query snapshot and later updates.
42
+ * Returns a function that removes this listener. Other listeners remain subscribed.
43
+ */
44
+ subscribeToDataSource: typeof subscribeToDataSource;
39
45
  };
40
46
  //# sourceMappingURL=customBlock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"customBlock.d.ts","sourceRoot":"","sources":["../src/customBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAA;AACtF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4DAA4D,CAAA;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AAC5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAA;AACvF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAA;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAA;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gDAAgD,CAAA;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAO5C,MAAM,MAAM,gBAAgB,GACzB;IACA,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,EAAE,WAAW,CAAA;IAClB,YAAY,EAAE,kBAAkB,CAAA;CAC/B,GACD;IACA,MAAM,EAAE,aAAa,CAAA;IACrB,KAAK,EAAE,WAAW,CAAA;IAClB,YAAY,EAAE,kBAAkB,CAAA;IAChC,OAAO,EAAE,aAAa,CAAA;IACtB,MAAM,EAAE,YAAY,CAAA;IACpB,IAAI,EAAE,eAAe,CAAA;IACrB,WAAW,EAAE,UAAU,CAAA;IACvB,WAAW,EAAE,gBAAgB,EAAE,CAAA;CAC9B,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,WAAW;wBACH,MAAM,IAAI,GAAG,MAAM,IAAI;gBAI/B,gBAAgB;sBAIV,UAAU;gBAIhB,WAAW;uBAIJ,kBAAkB;kBAIvB,aAAa;iBAId,YAAY;eAId,eAAe;mBAIX,mBAAmB;;CAKlC,CAAA"}
1
+ {"version":3,"file":"customBlock.d.ts","sourceRoot":"","sources":["../src/customBlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAA;AACtF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4DAA4D,CAAA;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAA;AAC5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAA;AACvF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAA;AACrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAA;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAA;AAC5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gDAAgD,CAAA;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AAOzE,MAAM,MAAM,gBAAgB,GACzB;IACA,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,EAAE,WAAW,CAAA;IAClB,YAAY,EAAE,kBAAkB,CAAA;CAC/B,GACD;IACA,MAAM,EAAE,aAAa,CAAA;IACrB,KAAK,EAAE,WAAW,CAAA;IAClB,YAAY,EAAE,kBAAkB,CAAA;IAChC,OAAO,EAAE,aAAa,CAAA;IACtB,MAAM,EAAE,YAAY,CAAA;IACpB,IAAI,EAAE,eAAe,CAAA;IACrB,WAAW,EAAE,UAAU,CAAA;IACvB,WAAW,EAAE,gBAAgB,EAAE,CAAA;CAC9B,CAAA;AAEJ;;;GAGG;AACH,eAAO,MAAM,WAAW;wBACH,MAAM,IAAI,GAAG,MAAM,IAAI;gBAI/B,gBAAgB;sBAIV,UAAU;gBAIhB,WAAW;uBAIJ,kBAAkB;kBAIvB,aAAa;iBAId,YAAY;eAId,eAAe;mBAIX,mBAAmB;;IAMlC;;;OAGG;;CAEH,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import { autoResize } from "./autoResize.js";
2
+ import { subscribeToDataSource } from "./bridge/dataSources/subscribe.js";
2
3
  import { customBlockHost } from "./bridge/sandboxClient.js";
3
4
  /**
4
5
  * Framework-neutral runtime state APIs for a custom block. Call `initCustomBlock`
@@ -33,6 +34,11 @@ export const customBlock = {
33
34
  return getInitializedHostState("getManifest").manifest;
34
35
  },
35
36
  autoResize,
37
+ /**
38
+ * Registers a listener that receives the current query snapshot and later updates.
39
+ * Returns a function that removes this listener. Other listeners remain subscribed.
40
+ */
41
+ subscribeToDataSource,
36
42
  };
37
43
  let lastHostState;
38
44
  let lastPublicState;
@@ -39,6 +39,7 @@ export * from "./messages/queryDataSourceResult.js";
39
39
  export * from "./messages/resize.js";
40
40
  export * from "./messages/sandboxToHost.js";
41
41
  export * from "./messages/themeChanged.js";
42
+ export * from "./messages/unsubscribeDataSourceQuery.js";
42
43
  export * from "./messages/updatePage.js";
43
44
  export * from "./messages/updatePageResult.js";
44
45
  export * from "./pages/page.js";
@@ -39,6 +39,7 @@ export * from "./messages/queryDataSourceResult.js";
39
39
  export * from "./messages/resize.js";
40
40
  export * from "./messages/sandboxToHost.js";
41
41
  export * from "./messages/themeChanged.js";
42
+ export * from "./messages/unsubscribeDataSourceQuery.js";
42
43
  export * from "./messages/updatePage.js";
43
44
  export * from "./messages/updatePageResult.js";
44
45
  export * from "./pages/page.js";
@@ -411,6 +411,9 @@ export declare const sandboxToHostMessageSchema: v.VariantSchema<"type", [v.Vari
411
411
  readonly propertyId: v.StringSchema<undefined>;
412
412
  readonly direction: v.PicklistSchema<["ascending", "descending"], undefined>;
413
413
  }, undefined>, undefined>, undefined>;
414
+ }, undefined>, v.ObjectSchema<{
415
+ readonly type: v.LiteralSchema<"unsubscribeDataSourceQuery", undefined>;
416
+ readonly subscriptionId: v.StringSchema<undefined>;
414
417
  }, undefined>, v.ObjectSchema<{
415
418
  readonly type: v.LiteralSchema<"createPage", undefined>;
416
419
  readonly requestId: v.StringSchema<undefined>;
@@ -8,6 +8,7 @@ import { invalidHostMessageSchema } from "./invalidHostMessage.js";
8
8
  import { listUsersMessageSchema } from "./listUsers.js";
9
9
  import { queryDataSourceMessageSchema } from "./queryDataSource.js";
10
10
  import { resizeMessageSchema } from "./resize.js";
11
+ import { unsubscribeDataSourceQueryMessageSchema } from "./unsubscribeDataSourceQuery.js";
11
12
  import { updatePageMessageSchema } from "./updatePage.js";
12
13
  /**
13
14
  * Discriminated union of every message the sandbox is allowed to send the host. Useful for hosts
@@ -17,6 +18,7 @@ export const sandboxToHostMessageSchema = v.variant("type", [
17
18
  connectMessageSchema,
18
19
  initResultMessageSchema,
19
20
  queryDataSourceMessageSchema,
21
+ unsubscribeDataSourceQueryMessageSchema,
20
22
  createPageMessageSchema,
21
23
  getPageMessageSchema,
22
24
  getUserMessageSchema,
@@ -0,0 +1,10 @@
1
+ import * as v from "valibot";
2
+ /**
3
+ * Tells the host to stop an active data source query subscription.
4
+ */
5
+ export declare const unsubscribeDataSourceQueryMessageSchema: v.ObjectSchema<{
6
+ readonly type: v.LiteralSchema<"unsubscribeDataSourceQuery", undefined>;
7
+ /** The subscription to remove from the host. */
8
+ readonly subscriptionId: v.StringSchema<undefined>;
9
+ }, undefined>;
10
+ export type UnsubscribeDataSourceQueryMessage = v.InferOutput<typeof unsubscribeDataSourceQueryMessageSchema>;
@@ -0,0 +1,9 @@
1
+ import * as v from "valibot";
2
+ /**
3
+ * Tells the host to stop an active data source query subscription.
4
+ */
5
+ export const unsubscribeDataSourceQueryMessageSchema = v.object({
6
+ type: v.literal("unsubscribeDataSourceQuery"),
7
+ /** The subscription to remove from the host. */
8
+ subscriptionId: v.string(),
9
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"useDataSource.d.ts","sourceRoot":"","sources":["../../src/react/useDataSource.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAG5E;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC5B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,oBAAoB,GAC5B,mBAAmB,CA0CrB"}
1
+ {"version":3,"file":"useDataSource.d.ts","sourceRoot":"","sources":["../../src/react/useDataSource.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAiB5E;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC5B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,oBAAoB,GAC5B,mBAAmB,CAqBrB"}
@@ -1,7 +1,14 @@
1
1
  import { useEffect, useState } from "react";
2
2
  import { getDataSourceQueryOptionsIdentity } from "../bridge/dataSources/query.js";
3
- import { customBlockDataSources } from "../bridge/sandboxClient.js";
4
- import { useCustomBlockHost } from "./useHostState.js";
3
+ import { customBlock } from "../customBlock.js";
4
+ const EMPTY_DATA_SOURCE_RESULT = {
5
+ items: [],
6
+ propertySchemasById: {},
7
+ propertyIdsByKey: {},
8
+ propertySchemasByKey: {},
9
+ isLoading: false,
10
+ hasMore: false,
11
+ };
5
12
  /**
6
13
  * Reads from the data source mapped to the given semantic `key`.
7
14
  *
@@ -13,34 +20,24 @@ import { useCustomBlockHost } from "./useHostState.js";
13
20
  * const { items, isLoading, hasMore, error } = useDataSource("default", { limit: 25 })
14
21
  */
15
22
  export function useDataSource(key, options) {
16
- const host = useCustomBlockHost();
17
- const [subscriptionId] = useState(() => customBlockDataSources.createSubscriptionId());
18
23
  const optionsIdentity = getDataSourceQueryOptionsIdentity(options);
19
- const matchingDataSource = host.status === "initialized"
20
- ? host.dataSources.find(dataSource => dataSource.key === key)
21
- : undefined;
22
- const isInitialized = host.status === "initialized";
24
+ const [state, setState] = useState(() => ({
25
+ key,
26
+ optionsIdentity,
27
+ snapshot: EMPTY_DATA_SOURCE_RESULT,
28
+ }));
23
29
  // biome-ignore lint/correctness/useExhaustiveDependencies(options): Compare options by value through optionsIdentity. Object identity alone must not trigger queries.
24
- // biome-ignore lint/correctness/useExhaustiveDependencies(optionsIdentity): Changes to the serialized options must trigger a query even though the callback reads options.
25
- // biome-ignore lint/correctness/useExhaustiveDependencies(matchingDataSource): Requery when the matching data source changes, even when the key and options are unchanged.
26
30
  useEffect(() => {
27
- if (!isInitialized) {
28
- return;
29
- }
30
- customBlockDataSources.query(subscriptionId, key, options);
31
- }, [matchingDataSource, isInitialized, key, optionsIdentity, subscriptionId]);
32
- useEffect(() => () => {
33
- customBlockDataSources.release(subscriptionId);
34
- }, [subscriptionId]);
35
- const view = customBlockDataSources.getView(host, key, subscriptionId);
36
- return {
37
- items: view.items,
38
- collectionSchema: view.collectionSchema,
39
- propertySchemasById: view.propertySchemasById,
40
- propertyIdsByKey: view.propertyIdsByKey,
41
- propertySchemasByKey: view.propertySchemasByKey,
42
- isLoading: view.isLoading,
43
- hasMore: view.hasMore,
44
- error: view.error,
45
- };
31
+ return customBlock.subscribeToDataSource({
32
+ key,
33
+ onSnapshot: snapshot => {
34
+ setState({ key, optionsIdentity, snapshot });
35
+ },
36
+ options,
37
+ });
38
+ }, [key, optionsIdentity]);
39
+ if (state.key !== key || state.optionsIdentity !== optionsIdentity) {
40
+ return EMPTY_DATA_SOURCE_RESULT;
41
+ }
42
+ return state.snapshot;
46
43
  }
package/dist/types.d.ts CHANGED
@@ -31,7 +31,7 @@ export type NotionPagePropertyInputMap = {
31
31
  [propertyIdOrKey: string]: NotionPagePropertyInputValue;
32
32
  };
33
33
  /**
34
- * Consumer-facing page shape returned from `useDataSource`. Derived from the bridge payload
34
+ * Consumer-facing page shape returned from a data source snapshot. Derived from the bridge payload
35
35
  * plus the data source's `propertyIdsByKey`.
36
36
  */
37
37
  export type NotionDataSourcePage = {
@@ -129,14 +129,14 @@ export type NotionDataSourceFilter = NotionDataSourcePropertyFilter | {
129
129
  and: NotionDataSourcePropertyFilter[];
130
130
  };
131
131
  /**
132
- * Return shape of `useDataSource`.
132
+ * Latest live snapshot of a data source query.
133
133
  *
134
134
  * - `items` — the rows the host has returned so far. Empty until the first response arrives.
135
135
  * - `isLoading` — `true` while a query is in flight.
136
- * - `hasMore` — `true` if the host indicated more rows are available beyond the current page.
136
+ * - `hasMore` — `true` if the host indicated more rows are available beyond the requested prefix.
137
137
  * - `error` — structured error information if the most recent query failed.
138
138
  */
139
- export type UseDataSourceResult = {
139
+ export type DataSourceSnapshot = {
140
140
  items: NotionDataSourcePage[];
141
141
  /**
142
142
  * Collection/data source schema for the bound Notion data source, including raw property
@@ -169,21 +169,21 @@ export type UseDataSourceResult = {
169
169
  hasMore: boolean;
170
170
  error?: CustomBlockQueryDataSourceErrorInfo;
171
171
  };
172
- export type UseDataSourceOptions = {
173
- /**
174
- * Maximum number of rows to request from the host. Defaults to 20.
175
- */
172
+ export type DataSourceQueryOptions = {
173
+ /** Maximum number of rows to request from the host. Defaults to 20. */
176
174
  limit?: number;
177
- /**
178
- * Optional property filter. The SDK resolves semantic property keys before
179
- * it sends the query to the host.
180
- */
175
+ /** Optional property filter. The SDK resolves semantic keys before it sends the query. */
181
176
  filter?: NotionDataSourceFilter;
182
- /**
183
- * Optional property sorts. The host applies them in array order.
184
- */
177
+ /** Optional property sorts. The host applies them in array order. */
185
178
  sorts?: NotionDataSourceSort[];
186
179
  };
180
+ export type SubscribeToDataSourceArgs = {
181
+ key: string;
182
+ onSnapshot: (snapshot: DataSourceSnapshot) => void;
183
+ options?: DataSourceQueryOptions;
184
+ };
185
+ export type UseDataSourceResult = DataSourceSnapshot;
186
+ export type UseDataSourceOptions = DataSourceQueryOptions;
187
187
  /**
188
188
  * Parent reference accepted by `sdk.pages.create`. Mirrors Notion's public `POST /v1/pages`
189
189
  * parent shape; see https://developers.notion.com/reference/data-source.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/version.js CHANGED
@@ -4,4 +4,4 @@
4
4
  *
5
5
  * WARNING: Generated during SDK publish. Do not edit in the published package.
6
6
  */
7
- export const CUSTOM_BLOCKS_SDK_VERSION = "0.1.43"
7
+ export const CUSTOM_BLOCKS_SDK_VERSION = "0.1.44"